diff --git a/AGENTS.md b/AGENTS.md
index f7444cb88a1..cefee921e92 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -109,7 +109,7 @@ Required steps:
## Security Model
-**Authoritative Reference**: See [docs/user-manual/threat-model.adoc](docs/user-manual/threat-model.adoc) for the complete threat model including trust boundaries, adversary model, security properties provided/not provided, and triage dispositions.
+**Authoritative Reference**: See [our threat model](docs/user-manual/modules/ROOT/pages/threat-model.adoc) for the complete threat model including trust boundaries, adversary model, security properties provided/not provided, and triage dispositions.
### Security Review Checklist
When reviewing code changes:
diff --git a/SECURITY.md b/SECURITY.md
index fb3b0e856dc..66f56e84d8d 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -6,7 +6,7 @@ Artemis is a project of the [Apache Software Foundation](https://apache.org) and
Before reporting a vulnerability please ensure:
-- It falls within the scope of our [threat model](docs/user-manual/threat-model.adoc).
+- It falls within the scope of our [threat model](docs/user-manual/modules/ROOT/pages/threat-model.adoc).
- It has not already been reported. Existing advisories are enumerated on [our website](https://artemis.apache.org/components/artemis/security).
To report a new vulnerability please follow the [ASF vulnerability reporting process](https://security.apache.org/report/).
diff --git a/artemis-website/docs-playbook.yml b/artemis-website/docs-playbook.yml
new file mode 100644
index 00000000000..1e4f9e4d96d
--- /dev/null
+++ b/artemis-website/docs-playbook.yml
@@ -0,0 +1,34 @@
+site:
+ title: Apache Artemis
+ url: https://artemis.apache.org
+ start_page: user-manual::index.adoc
+content:
+ sources:
+ - url: ..
+ branches: [HEAD]
+ start_path: docs/user-manual
+ - url: ..
+ branches: [HEAD]
+ start_path: docs/hacking-guide
+ - url: ..
+ branches: [HEAD]
+ start_path: docs/migration-guide
+ui:
+ bundle:
+ url: https://github.com/jbertram/artemis-antora-ui/releases/download/0.1/ui-bundle.zip
+antora:
+ extensions:
+ - require: '@antora/lunr-extension'
+ index_latest_only: true
+ index_by_heading: true
+asciidoc:
+ attributes:
+ sectnums: ''
+ project-name-full: Apache Artemis
+ project-name-full-url: apache-artemis
+ project-name-short: Artemis
+ project-version: ${project-version}
+ log4j-version: ${log4j-version}
+ artemis-console-version: ${artemis-console-version}
+output:
+ dir: target/site
\ No newline at end of file
diff --git a/artemis-website/pom.xml b/artemis-website/pom.xml
index aedb53201f0..4b4d96f9d15 100644
--- a/artemis-website/pom.xml
+++ b/artemis-website/pom.xml
@@ -29,11 +29,12 @@
Apache Artemis Website
-
- ${project.build.directory}/scratch/user-manualfalse
- ${skipWebsiteDocGeneration}false
+ docs-playbook.yml
+ v24.16.0
+ 11.16.0
+ 2.0.0
@@ -68,7 +69,7 @@
com.google.code.findbugsjsr305
- provided
+ providedorg.apache.artemis
@@ -80,6 +81,50 @@
+
+ com.github.eirslett
+ frontend-maven-plugin
+ ${frontend.plugin.version}
+
+ ${project.basedir}
+ ${project.build.directory}
+
+
+
+ install-node-and-npm
+ generate-resources
+
+ install-node-and-npm
+
+
+ ${skipWebsiteDocGeneration}
+ ${node.version}
+ ${npm.version}
+
+
+
+ build-docs-with-antora
+ compile
+
+ npx
+
+
+ ${skipWebsiteDocGeneration}
+
+ -y
+ --package @antora/cli
+ --package @antora/site-generator
+ --package @antora/lunr-extension
+ antora
+ --attribute project-version=${project.version}
+ --attribute log4j-version=${log4j.version}
+ --attribute artemis-console-version=${artemis-console-version}
+ ${antora.playbook}
+
+
+
+
+ maven-javadoc-plugin
@@ -119,284 +164,6 @@
-
- org.apache.artemis
- artemis-maven-plugin
- ${project.version}
-
-
- doc-jms-client
- generate-sources
-
- dependency-doc
-
-
- ${scratch-dir-user-manual}/client-classpath-jms.adoc
-
- org.apache.artemis
- jakarta.jms
- org.jgroups
- io.netty
-
- = Artemis JMS Client Dependencies
-// generated content!
-
-|===
-|File | package | observation
-
-
- |X{fileMD} | X{package} | X{detail}
-
-
- io.netty:netty-transport-native-epoll
- io.netty:netty-transport-classes-epoll
- io.netty:netty-transport-native-kqueue
- io.netty:netty-transport-classes-kqueue
- org.jgroups:jgroups
-
-
- only if you want epoll on Linux
- only if you want epoll on Linux
- only if you want kqueue on MacOS
- only if you want kqueue on MacOS
- only if you want JGroups discovery from the clients
-
- org.apache.artemis:artemis-jms-client:${project.version}
-
-
-
- doc-jakarta-client
- generate-sources
-
- dependency-doc
-
-
- ${scratch-dir-user-manual}/client-classpath-jakarta.adoc
-
- org.apache.artemis
- jakarta.jms
- org.jgroups
- io.netty
-
- = Artemis Jakarta Client Dependencies
-// generated content!
-
-|===
-|File | package | observation
-
-
- |X{fileMD} | X{package} | X{detail}
-
-
- io.netty:netty-transport-native-epoll
- io.netty:netty-transport-classes-epoll
- io.netty:netty-transport-native-kqueue
- io.netty:netty-transport-classes-kqueue
- org.jgroups:jgroups
-
-
- only if you want epoll on Linux
- only if you want epoll on Linux
- only if you want kqueue on MacOS
- only if you want kqueue on MacOS
- only if you want JGroups discovery from the clients
-
- org.apache.artemis:artemis-jakarta-client:${project.version}
-
-
-
-
-
- maven-resources-plugin
-
-
- copy-user-manual-resources
- generate-sources
-
- copy-resources
-
-
- ${scratch-dir-user-manual}
- ${skipWebsiteDocGeneration}
-
-
- ${activemq.basedir}/docs/user-manual
-
- **/*
-
-
-
- ${activemq.basedir}/docs/resources/font-awesome
-
- **/*
-
-
-
-
-
-
- copy-migration-guide-resources
- generate-sources
-
- copy-resources
-
-
- ${project.build.outputDirectory}/migration-guide
- ${skipWebsiteDocGeneration}
-
-
- ${activemq.basedir}/docs/resources/font-awesome
-
- **/*
-
-
-
-
-
-
- copy-hacking-guide-resources
- generate-sources
-
- copy-resources
-
-
- ${project.build.outputDirectory}/hacking-guide
- ${skipWebsiteDocGeneration}
-
-
- ${activemq.basedir}/docs/resources/font-awesome
-
- **/*
-
-
-
-
-
-
-
-
- org.asciidoctor
- asciidoctor-maven-plugin
- ${asciidoctor.maven.plugin.version}
-
-
- org.asciidoctor
- asciidoctorj-pdf
- ${asciidoctorj.pdf.version}
-
-
-
-
- generate-user-manual-html
- generate-sources
-
- process-asciidoc
-
-
- ${scratch-dir-user-manual}
- ${project.build.outputDirectory}/user-manual
- html5
-
- <a href="index.html">User Manual for ${project.version}</a>
- images/favicon.png
-
-
-
-
- generate-user-manual-pdf
- generate-resources
-
- process-asciidoc
-
-
- ${activemq.basedir}/docs/user-manual
- _book.adoc
- book.pdf
- ${project.build.outputDirectory}/user-manual
- pdf
- ${skipWebsitePdfGeneration}
-
-
- ${activemq.basedir}/docs/user-manual
-
- book.pdf
-
-
-
-
-
-
- generate-migration-guide-html
- generate-sources
-
- process-asciidoc
-
-
- ${activemq.basedir}/docs/migration-guide
- ${project.build.outputDirectory}/migration-guide
- html5
-
- images/favicon.png
-
-
-
-
- generate-hacking-guide-html
- generate-sources
-
- process-asciidoc
-
-
- ${activemq.basedir}/docs/hacking-guide
- ${project.build.outputDirectory}/hacking-guide
- html5
-
- images/favicon.png
-
-
-
-
-
- book
- ${skipWebsiteDocGeneration}
-
- rouge
- left
- font
- 2
-
-
- 3
-
-
- -
- true
- true
- false
- css
- false
- false
-
-
- true
-
-
- ${project.version}
- Apache Artemis
- apache-artemis
- Artemis
- ${log4j.version}
- ${artemis-console-version}
-
-
- false
-
-
- possible invalid reference
-
-
-
-
diff --git a/docs/user-manual/_diagrams/anycast.svg b/docs/diagrams/anycast.svg
similarity index 100%
rename from docs/user-manual/_diagrams/anycast.svg
rename to docs/diagrams/anycast.svg
diff --git a/docs/user-manual/_diagrams/architecture-diagrams.odg b/docs/diagrams/architecture-diagrams.odg
similarity index 100%
rename from docs/user-manual/_diagrams/architecture-diagrams.odg
rename to docs/diagrams/architecture-diagrams.odg
diff --git a/docs/user-manual/_diagrams/broker-connection-diagrams.odg b/docs/diagrams/broker-connection-diagrams.odg
similarity index 100%
rename from docs/user-manual/_diagrams/broker-connection-diagrams.odg
rename to docs/diagrams/broker-connection-diagrams.odg
diff --git a/docs/user-manual/_diagrams/envelope.svg b/docs/diagrams/envelope.svg
similarity index 100%
rename from docs/user-manual/_diagrams/envelope.svg
rename to docs/diagrams/envelope.svg
diff --git a/docs/user-manual/_diagrams/ha-colocated.odg b/docs/diagrams/ha-colocated.odg
similarity index 100%
rename from docs/user-manual/_diagrams/ha-colocated.odg
rename to docs/diagrams/ha-colocated.odg
diff --git a/docs/user-manual/_diagrams/ha-replicated-store.odg b/docs/diagrams/ha-replicated-store.odg
similarity index 100%
rename from docs/user-manual/_diagrams/ha-replicated-store.odg
rename to docs/diagrams/ha-replicated-store.odg
diff --git a/docs/user-manual/_diagrams/ha-scaledown.odg b/docs/diagrams/ha-scaledown.odg
similarity index 100%
rename from docs/user-manual/_diagrams/ha-scaledown.odg
rename to docs/diagrams/ha-scaledown.odg
diff --git a/docs/user-manual/_diagrams/ha-shared-store.odg b/docs/diagrams/ha-shared-store.odg
similarity index 100%
rename from docs/user-manual/_diagrams/ha-shared-store.odg
rename to docs/diagrams/ha-shared-store.odg
diff --git a/docs/user-manual/_diagrams/lock-coordination-example.odg b/docs/diagrams/lock-coordination-example.odg
similarity index 100%
rename from docs/user-manual/_diagrams/lock-coordination-example.odg
rename to docs/diagrams/lock-coordination-example.odg
diff --git a/docs/user-manual/_diagrams/multicast.svg b/docs/diagrams/multicast.svg
similarity index 100%
rename from docs/user-manual/_diagrams/multicast.svg
rename to docs/diagrams/multicast.svg
diff --git a/docs/user-manual/_diagrams/queue.svg b/docs/diagrams/queue.svg
similarity index 100%
rename from docs/user-manual/_diagrams/queue.svg
rename to docs/diagrams/queue.svg
diff --git a/docs/hacking-guide/antora.yml b/docs/hacking-guide/antora.yml
new file mode 100644
index 00000000000..5b249d1b957
--- /dev/null
+++ b/docs/hacking-guide/antora.yml
@@ -0,0 +1,6 @@
+name: hacking-guide
+title: Hacking Guide
+version: ~ # version is essentially ignored since we always just deploy the latest
+start_page: ROOT:index.adoc
+nav:
+ - modules/ROOT/nav.adoc
diff --git a/docs/hacking-guide/images/favicon.png b/docs/hacking-guide/images/favicon.png
deleted file mode 100644
index 87026732222..00000000000
Binary files a/docs/hacking-guide/images/favicon.png and /dev/null differ
diff --git a/docs/hacking-guide/index.adoc b/docs/hacking-guide/index.adoc
deleted file mode 100644
index 047920317bb..00000000000
--- a/docs/hacking-guide/index.adoc
+++ /dev/null
@@ -1,12 +0,0 @@
-= {project-name-full} Hacking Guide
-
-This hacking guide outlines how developers can get involved in contributing to the {project-name-full} project.
-
-include::_code.adoc[leveloffset=1]
-include::_building.adoc[leveloffset=1]
-include::_tests.adoc[leveloffset=1]
-include::_code-coverage-report.adoc[leveloffset=1]
-include::_validating-releases.adoc[leveloffset=1]
-include::_maintainers.adoc[leveloffset=1]
-include::_history.adoc[leveloffset=1]
-include::_notice.adoc[leveloffset=1]
diff --git a/docs/hacking-guide/modules/ROOT/nav.adoc b/docs/hacking-guide/modules/ROOT/nav.adoc
new file mode 100644
index 00000000000..913cf4e1fd8
--- /dev/null
+++ b/docs/hacking-guide/modules/ROOT/nav.adoc
@@ -0,0 +1,8 @@
+* xref:code.adoc[Code Conventions]
+* xref:building.adoc[Building]
+* xref:tests.adoc[Tests]
+* xref:code-coverage-report.adoc[Code Coverage Report]
+* xref:validating-releases.adoc[Validating Releases]
+* xref:maintainers.adoc[Maintainers]
+* xref:history.adoc[History]
+* xref:notice.adoc[Legal Notice]
diff --git a/docs/hacking-guide/_building.adoc b/docs/hacking-guide/modules/ROOT/pages/building.adoc
similarity index 88%
rename from docs/hacking-guide/_building.adoc
rename to docs/hacking-guide/modules/ROOT/pages/building.adoc
index 02e3eeda866..799f8fdc224 100644
--- a/docs/hacking-guide/_building.adoc
+++ b/docs/hacking-guide/modules/ROOT/pages/building.adoc
@@ -41,10 +41,8 @@ From the `artemis-website` module run:
----
$ mvn -Prelease package
----
-This will build the user manual (both HTML & PDF), migration guide, hacking guide, & JavaDocs.
-Output will be placed in the `target/classes/user-manual`, `target/classes/migration-guide`, `target/classes/hacking-guide`, and `target/apidocs` directories respectively.
-
-Generating the user manual's PDF adds almost a minute to the build so this can be skipped using `-DskipWebsitePdfGeneration`.
+This will build the JavaDoc, user manual, migration guide, & hacking guide.
+JavaDoc output will be placed in the `target/apidocs` directory and the rest will be put into the `target/site` directory.
== Offline
diff --git a/docs/hacking-guide/_code-coverage-report.adoc b/docs/hacking-guide/modules/ROOT/pages/code-coverage-report.adoc
similarity index 100%
rename from docs/hacking-guide/_code-coverage-report.adoc
rename to docs/hacking-guide/modules/ROOT/pages/code-coverage-report.adoc
diff --git a/docs/hacking-guide/_code.adoc b/docs/hacking-guide/modules/ROOT/pages/code.adoc
similarity index 100%
rename from docs/hacking-guide/_code.adoc
rename to docs/hacking-guide/modules/ROOT/pages/code.adoc
diff --git a/docs/hacking-guide/_history.adoc b/docs/hacking-guide/modules/ROOT/pages/history.adoc
similarity index 100%
rename from docs/hacking-guide/_history.adoc
rename to docs/hacking-guide/modules/ROOT/pages/history.adoc
diff --git a/docs/hacking-guide/modules/ROOT/pages/index.adoc b/docs/hacking-guide/modules/ROOT/pages/index.adoc
new file mode 100644
index 00000000000..b5ab0f71300
--- /dev/null
+++ b/docs/hacking-guide/modules/ROOT/pages/index.adoc
@@ -0,0 +1 @@
+This hacking guide outlines how developers can get involved in contributing to the {project-name-full} project.
diff --git a/docs/hacking-guide/_maintainers.adoc b/docs/hacking-guide/modules/ROOT/pages/maintainers.adoc
similarity index 99%
rename from docs/hacking-guide/_maintainers.adoc
rename to docs/hacking-guide/modules/ROOT/pages/maintainers.adoc
index 02437e1fdde..bbe69771223 100644
--- a/docs/hacking-guide/_maintainers.adoc
+++ b/docs/hacking-guide/modules/ROOT/pages/maintainers.adoc
@@ -28,7 +28,7 @@ $ mvn -Pdev install
----
== Commit Messages
-Please ensure the commit messages follow the 50/72 format as described xref:_code.adoc#commitMessageDetails[here].
+Please ensure the commit messages follow the 50/72 format as described xref:code.adoc#commitMessageDetails[here].
This format follows the recommendation from the https://git-scm.com/book/en/v2/Distributed-Git-Contributing-to-a-Project[official Git book].
== Configuring Git repositories
diff --git a/docs/hacking-guide/_notice.adoc b/docs/hacking-guide/modules/ROOT/pages/notice.adoc
similarity index 100%
rename from docs/hacking-guide/_notice.adoc
rename to docs/hacking-guide/modules/ROOT/pages/notice.adoc
diff --git a/docs/hacking-guide/_tests.adoc b/docs/hacking-guide/modules/ROOT/pages/tests.adoc
similarity index 100%
rename from docs/hacking-guide/_tests.adoc
rename to docs/hacking-guide/modules/ROOT/pages/tests.adoc
diff --git a/docs/hacking-guide/_validating-releases.adoc b/docs/hacking-guide/modules/ROOT/pages/validating-releases.adoc
similarity index 100%
rename from docs/hacking-guide/_validating-releases.adoc
rename to docs/hacking-guide/modules/ROOT/pages/validating-releases.adoc
diff --git a/docs/migration-guide/antora.yml b/docs/migration-guide/antora.yml
new file mode 100644
index 00000000000..70d8de063e5
--- /dev/null
+++ b/docs/migration-guide/antora.yml
@@ -0,0 +1,6 @@
+name: migration-guide
+title: Migration Guide
+version: ~ # version is essentially ignored since we always just deploy the latest
+start_page: ROOT:index.adoc
+nav:
+ - modules/ROOT/nav.adoc
diff --git a/docs/migration-guide/images/favicon.png b/docs/migration-guide/images/favicon.png
deleted file mode 100644
index 87026732222..00000000000
Binary files a/docs/migration-guide/images/favicon.png and /dev/null differ
diff --git a/docs/migration-guide/index.adoc b/docs/migration-guide/index.adoc
deleted file mode 100644
index d0dbfdbb241..00000000000
--- a/docs/migration-guide/index.adoc
+++ /dev/null
@@ -1,15 +0,0 @@
-= {project-name-full} Migration Guide
-
-The migration guide outlines how users can migrate an existing ActiveMQ broker installation to {project-name-short}.
-
-include::_preface.adoc[leveloffset=1]
-include::_key-differences.adoc[leveloffset=1]
-include::_configuration.adoc[leveloffset=1]
-include::_connectors.adoc[leveloffset=1]
-include::_destinations.adoc[leveloffset=1]
-include::_virtual-topics.adoc[leveloffset=1]
-include::_authentication.adoc[leveloffset=1]
-include::_authorization.adoc[leveloffset=1]
-include::_ssl.adoc[leveloffset=1]
-include::_message-store.adoc[leveloffset=1]
-include::_notice.adoc[leveloffset=1]
diff --git a/docs/migration-guide/modules/ROOT/nav.adoc b/docs/migration-guide/modules/ROOT/nav.adoc
new file mode 100644
index 00000000000..0c35f5d8518
--- /dev/null
+++ b/docs/migration-guide/modules/ROOT/nav.adoc
@@ -0,0 +1,11 @@
+* xref:preface.adoc[Preface]
+* xref:key-differences.adoc[Key Differences]
+* xref:configuration.adoc[Configuration]
+* xref:connectors.adoc[Connectors]
+* xref:destinations.adoc[Destinations]
+* xref:virtual-topics.adoc[Virtual Topics]
+* xref:authentication.adoc[Authentication]
+* xref:authorization.adoc[Authorization]
+* xref:ssl.adoc[SSL]
+* xref:message-store.adoc[Message Store]
+* xref:notice.adoc[Legal Notice]
diff --git a/docs/migration-guide/_authentication.adoc b/docs/migration-guide/modules/ROOT/pages/authentication.adoc
similarity index 100%
rename from docs/migration-guide/_authentication.adoc
rename to docs/migration-guide/modules/ROOT/pages/authentication.adoc
diff --git a/docs/migration-guide/_authorization.adoc b/docs/migration-guide/modules/ROOT/pages/authorization.adoc
similarity index 100%
rename from docs/migration-guide/_authorization.adoc
rename to docs/migration-guide/modules/ROOT/pages/authorization.adoc
diff --git a/docs/migration-guide/_configuration.adoc b/docs/migration-guide/modules/ROOT/pages/configuration.adoc
similarity index 100%
rename from docs/migration-guide/_configuration.adoc
rename to docs/migration-guide/modules/ROOT/pages/configuration.adoc
diff --git a/docs/migration-guide/_connectors.adoc b/docs/migration-guide/modules/ROOT/pages/connectors.adoc
similarity index 100%
rename from docs/migration-guide/_connectors.adoc
rename to docs/migration-guide/modules/ROOT/pages/connectors.adoc
diff --git a/docs/migration-guide/_destinations.adoc b/docs/migration-guide/modules/ROOT/pages/destinations.adoc
similarity index 96%
rename from docs/migration-guide/_destinations.adoc
rename to docs/migration-guide/modules/ROOT/pages/destinations.adoc
index eff3401db55..123e611a5d1 100644
--- a/docs/migration-guide/_destinations.adoc
+++ b/docs/migration-guide/modules/ROOT/pages/destinations.adoc
@@ -1,6 +1,6 @@
= Destinations
-We already talked about addressing differences between ActiveMQ and {project-name-short} in the xref:README.adoc[introduction].
+We already talked about addressing differences between ActiveMQ and {project-name-short} in the xref:preface.adoc[preface].
Now let's dig into the details and see how to configure JMS queues and topics.
It's important to note here that both brokers are configured by default to _auto-create_ destinations requested by clients, which is preferred behavior for many use cases.
This is configured using authorization security policies, so we will cover this topic in the later sections of this manual.
diff --git a/docs/migration-guide/modules/ROOT/pages/index.adoc b/docs/migration-guide/modules/ROOT/pages/index.adoc
new file mode 100644
index 00000000000..5c87dd48502
--- /dev/null
+++ b/docs/migration-guide/modules/ROOT/pages/index.adoc
@@ -0,0 +1 @@
+This guide outlines how users can migrate an existing ActiveMQ broker installation to {project-name-short}.
diff --git a/docs/migration-guide/_key-differences.adoc b/docs/migration-guide/modules/ROOT/pages/key-differences.adoc
similarity index 100%
rename from docs/migration-guide/_key-differences.adoc
rename to docs/migration-guide/modules/ROOT/pages/key-differences.adoc
diff --git a/docs/migration-guide/_message-store.adoc b/docs/migration-guide/modules/ROOT/pages/message-store.adoc
similarity index 100%
rename from docs/migration-guide/_message-store.adoc
rename to docs/migration-guide/modules/ROOT/pages/message-store.adoc
diff --git a/docs/migration-guide/_notice.adoc b/docs/migration-guide/modules/ROOT/pages/notice.adoc
similarity index 100%
rename from docs/migration-guide/_notice.adoc
rename to docs/migration-guide/modules/ROOT/pages/notice.adoc
diff --git a/docs/migration-guide/_preface.adoc b/docs/migration-guide/modules/ROOT/pages/preface.adoc
similarity index 100%
rename from docs/migration-guide/_preface.adoc
rename to docs/migration-guide/modules/ROOT/pages/preface.adoc
diff --git a/docs/migration-guide/_ssl.adoc b/docs/migration-guide/modules/ROOT/pages/ssl.adoc
similarity index 100%
rename from docs/migration-guide/_ssl.adoc
rename to docs/migration-guide/modules/ROOT/pages/ssl.adoc
diff --git a/docs/migration-guide/_virtual-topics.adoc b/docs/migration-guide/modules/ROOT/pages/virtual-topics.adoc
similarity index 100%
rename from docs/migration-guide/_virtual-topics.adoc
rename to docs/migration-guide/modules/ROOT/pages/virtual-topics.adoc
diff --git a/docs/resources/README.md b/docs/resources/README.md
deleted file mode 100644
index 23b6cfb03a1..00000000000
--- a/docs/resources/README.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# Doc Resources
-
-This directory holds resources needed by the docs.
-
-## Font Awesome
-
-By default AsciiDoctor generates output which links to remote resources for Font Awesome.
-However, Apache guidelines insist we host these resources *locally*.
-We're currently using [Font Awesome 4.7.0](https://fontawesome.com/v4/get-started/).
-See [these instructions](https://docs.asciidoctor.org/asciidoctor/latest/html-backend/local-font-awesome/) for additional details.
-
diff --git a/docs/resources/font-awesome/css/LICENSE-font-awesome-css.txt b/docs/resources/font-awesome/css/LICENSE-font-awesome-css.txt
deleted file mode 100644
index bfd7985ab56..00000000000
--- a/docs/resources/font-awesome/css/LICENSE-font-awesome-css.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-# Code: MIT License (https://opensource.org/licenses/MIT)
-
-In the Font Awesome Free download, the MIT license applies to all non-font and
-non-icon files.
-
-Copyright 2023 Fonticons, Inc.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in the
-Software without restriction, including without limitation the rights to use, copy,
-modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
-and to permit persons to whom the Software is furnished to do so, subject to the
-following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
-INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
-PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/docs/resources/font-awesome/css/font-awesome.css b/docs/resources/font-awesome/css/font-awesome.css
deleted file mode 100644
index ee906a8196d..00000000000
--- a/docs/resources/font-awesome/css/font-awesome.css
+++ /dev/null
@@ -1,2337 +0,0 @@
-/*!
- * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
- * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
- */
-/* FONT PATH
- * -------------------------- */
-@font-face {
- font-family: 'FontAwesome';
- src: url('../fonts/fontawesome-webfont.eot?v=4.7.0');
- src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');
- font-weight: normal;
- font-style: normal;
-}
-.fa {
- display: inline-block;
- font: normal normal normal 14px/1 FontAwesome;
- font-size: inherit;
- text-rendering: auto;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-/* makes the font 33% larger relative to the icon container */
-.fa-lg {
- font-size: 1.33333333em;
- line-height: 0.75em;
- vertical-align: -15%;
-}
-.fa-2x {
- font-size: 2em;
-}
-.fa-3x {
- font-size: 3em;
-}
-.fa-4x {
- font-size: 4em;
-}
-.fa-5x {
- font-size: 5em;
-}
-.fa-fw {
- width: 1.28571429em;
- text-align: center;
-}
-.fa-ul {
- padding-left: 0;
- margin-left: 2.14285714em;
- list-style-type: none;
-}
-.fa-ul > li {
- position: relative;
-}
-.fa-li {
- position: absolute;
- left: -2.14285714em;
- width: 2.14285714em;
- top: 0.14285714em;
- text-align: center;
-}
-.fa-li.fa-lg {
- left: -1.85714286em;
-}
-.fa-border {
- padding: .2em .25em .15em;
- border: solid 0.08em #eeeeee;
- border-radius: .1em;
-}
-.fa-pull-left {
- float: left;
-}
-.fa-pull-right {
- float: right;
-}
-.fa.fa-pull-left {
- margin-right: .3em;
-}
-.fa.fa-pull-right {
- margin-left: .3em;
-}
-/* Deprecated as of 4.4.0 */
-.pull-right {
- float: right;
-}
-.pull-left {
- float: left;
-}
-.fa.pull-left {
- margin-right: .3em;
-}
-.fa.pull-right {
- margin-left: .3em;
-}
-.fa-spin {
- -webkit-animation: fa-spin 2s infinite linear;
- animation: fa-spin 2s infinite linear;
-}
-.fa-pulse {
- -webkit-animation: fa-spin 1s infinite steps(8);
- animation: fa-spin 1s infinite steps(8);
-}
-@-webkit-keyframes fa-spin {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(359deg);
- transform: rotate(359deg);
- }
-}
-@keyframes fa-spin {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(359deg);
- transform: rotate(359deg);
- }
-}
-.fa-rotate-90 {
- -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
- -webkit-transform: rotate(90deg);
- -ms-transform: rotate(90deg);
- transform: rotate(90deg);
-}
-.fa-rotate-180 {
- -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
- -webkit-transform: rotate(180deg);
- -ms-transform: rotate(180deg);
- transform: rotate(180deg);
-}
-.fa-rotate-270 {
- -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
- -webkit-transform: rotate(270deg);
- -ms-transform: rotate(270deg);
- transform: rotate(270deg);
-}
-.fa-flip-horizontal {
- -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";
- -webkit-transform: scale(-1, 1);
- -ms-transform: scale(-1, 1);
- transform: scale(-1, 1);
-}
-.fa-flip-vertical {
- -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
- -webkit-transform: scale(1, -1);
- -ms-transform: scale(1, -1);
- transform: scale(1, -1);
-}
-:root .fa-rotate-90,
-:root .fa-rotate-180,
-:root .fa-rotate-270,
-:root .fa-flip-horizontal,
-:root .fa-flip-vertical {
- filter: none;
-}
-.fa-stack {
- position: relative;
- display: inline-block;
- width: 2em;
- height: 2em;
- line-height: 2em;
- vertical-align: middle;
-}
-.fa-stack-1x,
-.fa-stack-2x {
- position: absolute;
- left: 0;
- width: 100%;
- text-align: center;
-}
-.fa-stack-1x {
- line-height: inherit;
-}
-.fa-stack-2x {
- font-size: 2em;
-}
-.fa-inverse {
- color: #ffffff;
-}
-/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
- readers do not read off random characters that represent icons */
-.fa-glass:before {
- content: "\f000";
-}
-.fa-music:before {
- content: "\f001";
-}
-.fa-search:before {
- content: "\f002";
-}
-.fa-envelope-o:before {
- content: "\f003";
-}
-.fa-heart:before {
- content: "\f004";
-}
-.fa-star:before {
- content: "\f005";
-}
-.fa-star-o:before {
- content: "\f006";
-}
-.fa-user:before {
- content: "\f007";
-}
-.fa-film:before {
- content: "\f008";
-}
-.fa-th-large:before {
- content: "\f009";
-}
-.fa-th:before {
- content: "\f00a";
-}
-.fa-th-list:before {
- content: "\f00b";
-}
-.fa-check:before {
- content: "\f00c";
-}
-.fa-remove:before,
-.fa-close:before,
-.fa-times:before {
- content: "\f00d";
-}
-.fa-search-plus:before {
- content: "\f00e";
-}
-.fa-search-minus:before {
- content: "\f010";
-}
-.fa-power-off:before {
- content: "\f011";
-}
-.fa-signal:before {
- content: "\f012";
-}
-.fa-gear:before,
-.fa-cog:before {
- content: "\f013";
-}
-.fa-trash-o:before {
- content: "\f014";
-}
-.fa-home:before {
- content: "\f015";
-}
-.fa-file-o:before {
- content: "\f016";
-}
-.fa-clock-o:before {
- content: "\f017";
-}
-.fa-road:before {
- content: "\f018";
-}
-.fa-download:before {
- content: "\f019";
-}
-.fa-arrow-circle-o-down:before {
- content: "\f01a";
-}
-.fa-arrow-circle-o-up:before {
- content: "\f01b";
-}
-.fa-inbox:before {
- content: "\f01c";
-}
-.fa-play-circle-o:before {
- content: "\f01d";
-}
-.fa-rotate-right:before,
-.fa-repeat:before {
- content: "\f01e";
-}
-.fa-refresh:before {
- content: "\f021";
-}
-.fa-list-alt:before {
- content: "\f022";
-}
-.fa-lock:before {
- content: "\f023";
-}
-.fa-flag:before {
- content: "\f024";
-}
-.fa-headphones:before {
- content: "\f025";
-}
-.fa-volume-off:before {
- content: "\f026";
-}
-.fa-volume-down:before {
- content: "\f027";
-}
-.fa-volume-up:before {
- content: "\f028";
-}
-.fa-qrcode:before {
- content: "\f029";
-}
-.fa-barcode:before {
- content: "\f02a";
-}
-.fa-tag:before {
- content: "\f02b";
-}
-.fa-tags:before {
- content: "\f02c";
-}
-.fa-book:before {
- content: "\f02d";
-}
-.fa-bookmark:before {
- content: "\f02e";
-}
-.fa-print:before {
- content: "\f02f";
-}
-.fa-camera:before {
- content: "\f030";
-}
-.fa-font:before {
- content: "\f031";
-}
-.fa-bold:before {
- content: "\f032";
-}
-.fa-italic:before {
- content: "\f033";
-}
-.fa-text-height:before {
- content: "\f034";
-}
-.fa-text-width:before {
- content: "\f035";
-}
-.fa-align-left:before {
- content: "\f036";
-}
-.fa-align-center:before {
- content: "\f037";
-}
-.fa-align-right:before {
- content: "\f038";
-}
-.fa-align-justify:before {
- content: "\f039";
-}
-.fa-list:before {
- content: "\f03a";
-}
-.fa-dedent:before,
-.fa-outdent:before {
- content: "\f03b";
-}
-.fa-indent:before {
- content: "\f03c";
-}
-.fa-video-camera:before {
- content: "\f03d";
-}
-.fa-photo:before,
-.fa-image:before,
-.fa-picture-o:before {
- content: "\f03e";
-}
-.fa-pencil:before {
- content: "\f040";
-}
-.fa-map-marker:before {
- content: "\f041";
-}
-.fa-adjust:before {
- content: "\f042";
-}
-.fa-tint:before {
- content: "\f043";
-}
-.fa-edit:before,
-.fa-pencil-square-o:before {
- content: "\f044";
-}
-.fa-share-square-o:before {
- content: "\f045";
-}
-.fa-check-square-o:before {
- content: "\f046";
-}
-.fa-arrows:before {
- content: "\f047";
-}
-.fa-step-backward:before {
- content: "\f048";
-}
-.fa-fast-backward:before {
- content: "\f049";
-}
-.fa-backward:before {
- content: "\f04a";
-}
-.fa-play:before {
- content: "\f04b";
-}
-.fa-pause:before {
- content: "\f04c";
-}
-.fa-stop:before {
- content: "\f04d";
-}
-.fa-forward:before {
- content: "\f04e";
-}
-.fa-fast-forward:before {
- content: "\f050";
-}
-.fa-step-forward:before {
- content: "\f051";
-}
-.fa-eject:before {
- content: "\f052";
-}
-.fa-chevron-left:before {
- content: "\f053";
-}
-.fa-chevron-right:before {
- content: "\f054";
-}
-.fa-plus-circle:before {
- content: "\f055";
-}
-.fa-minus-circle:before {
- content: "\f056";
-}
-.fa-times-circle:before {
- content: "\f057";
-}
-.fa-check-circle:before {
- content: "\f058";
-}
-.fa-question-circle:before {
- content: "\f059";
-}
-.fa-info-circle:before {
- content: "\f05a";
-}
-.fa-crosshairs:before {
- content: "\f05b";
-}
-.fa-times-circle-o:before {
- content: "\f05c";
-}
-.fa-check-circle-o:before {
- content: "\f05d";
-}
-.fa-ban:before {
- content: "\f05e";
-}
-.fa-arrow-left:before {
- content: "\f060";
-}
-.fa-arrow-right:before {
- content: "\f061";
-}
-.fa-arrow-up:before {
- content: "\f062";
-}
-.fa-arrow-down:before {
- content: "\f063";
-}
-.fa-mail-forward:before,
-.fa-share:before {
- content: "\f064";
-}
-.fa-expand:before {
- content: "\f065";
-}
-.fa-compress:before {
- content: "\f066";
-}
-.fa-plus:before {
- content: "\f067";
-}
-.fa-minus:before {
- content: "\f068";
-}
-.fa-asterisk:before {
- content: "\f069";
-}
-.fa-exclamation-circle:before {
- content: "\f06a";
-}
-.fa-gift:before {
- content: "\f06b";
-}
-.fa-leaf:before {
- content: "\f06c";
-}
-.fa-fire:before {
- content: "\f06d";
-}
-.fa-eye:before {
- content: "\f06e";
-}
-.fa-eye-slash:before {
- content: "\f070";
-}
-.fa-warning:before,
-.fa-exclamation-triangle:before {
- content: "\f071";
-}
-.fa-plane:before {
- content: "\f072";
-}
-.fa-calendar:before {
- content: "\f073";
-}
-.fa-random:before {
- content: "\f074";
-}
-.fa-comment:before {
- content: "\f075";
-}
-.fa-magnet:before {
- content: "\f076";
-}
-.fa-chevron-up:before {
- content: "\f077";
-}
-.fa-chevron-down:before {
- content: "\f078";
-}
-.fa-retweet:before {
- content: "\f079";
-}
-.fa-shopping-cart:before {
- content: "\f07a";
-}
-.fa-folder:before {
- content: "\f07b";
-}
-.fa-folder-open:before {
- content: "\f07c";
-}
-.fa-arrows-v:before {
- content: "\f07d";
-}
-.fa-arrows-h:before {
- content: "\f07e";
-}
-.fa-bar-chart-o:before,
-.fa-bar-chart:before {
- content: "\f080";
-}
-.fa-twitter-square:before {
- content: "\f081";
-}
-.fa-facebook-square:before {
- content: "\f082";
-}
-.fa-camera-retro:before {
- content: "\f083";
-}
-.fa-key:before {
- content: "\f084";
-}
-.fa-gears:before,
-.fa-cogs:before {
- content: "\f085";
-}
-.fa-comments:before {
- content: "\f086";
-}
-.fa-thumbs-o-up:before {
- content: "\f087";
-}
-.fa-thumbs-o-down:before {
- content: "\f088";
-}
-.fa-star-half:before {
- content: "\f089";
-}
-.fa-heart-o:before {
- content: "\f08a";
-}
-.fa-sign-out:before {
- content: "\f08b";
-}
-.fa-linkedin-square:before {
- content: "\f08c";
-}
-.fa-thumb-tack:before {
- content: "\f08d";
-}
-.fa-external-link:before {
- content: "\f08e";
-}
-.fa-sign-in:before {
- content: "\f090";
-}
-.fa-trophy:before {
- content: "\f091";
-}
-.fa-github-square:before {
- content: "\f092";
-}
-.fa-upload:before {
- content: "\f093";
-}
-.fa-lemon-o:before {
- content: "\f094";
-}
-.fa-phone:before {
- content: "\f095";
-}
-.fa-square-o:before {
- content: "\f096";
-}
-.fa-bookmark-o:before {
- content: "\f097";
-}
-.fa-phone-square:before {
- content: "\f098";
-}
-.fa-twitter:before {
- content: "\f099";
-}
-.fa-facebook-f:before,
-.fa-facebook:before {
- content: "\f09a";
-}
-.fa-github:before {
- content: "\f09b";
-}
-.fa-unlock:before {
- content: "\f09c";
-}
-.fa-credit-card:before {
- content: "\f09d";
-}
-.fa-feed:before,
-.fa-rss:before {
- content: "\f09e";
-}
-.fa-hdd-o:before {
- content: "\f0a0";
-}
-.fa-bullhorn:before {
- content: "\f0a1";
-}
-.fa-bell:before {
- content: "\f0f3";
-}
-.fa-certificate:before {
- content: "\f0a3";
-}
-.fa-hand-o-right:before {
- content: "\f0a4";
-}
-.fa-hand-o-left:before {
- content: "\f0a5";
-}
-.fa-hand-o-up:before {
- content: "\f0a6";
-}
-.fa-hand-o-down:before {
- content: "\f0a7";
-}
-.fa-arrow-circle-left:before {
- content: "\f0a8";
-}
-.fa-arrow-circle-right:before {
- content: "\f0a9";
-}
-.fa-arrow-circle-up:before {
- content: "\f0aa";
-}
-.fa-arrow-circle-down:before {
- content: "\f0ab";
-}
-.fa-globe:before {
- content: "\f0ac";
-}
-.fa-wrench:before {
- content: "\f0ad";
-}
-.fa-tasks:before {
- content: "\f0ae";
-}
-.fa-filter:before {
- content: "\f0b0";
-}
-.fa-briefcase:before {
- content: "\f0b1";
-}
-.fa-arrows-alt:before {
- content: "\f0b2";
-}
-.fa-group:before,
-.fa-users:before {
- content: "\f0c0";
-}
-.fa-chain:before,
-.fa-link:before {
- content: "\f0c1";
-}
-.fa-cloud:before {
- content: "\f0c2";
-}
-.fa-flask:before {
- content: "\f0c3";
-}
-.fa-cut:before,
-.fa-scissors:before {
- content: "\f0c4";
-}
-.fa-copy:before,
-.fa-files-o:before {
- content: "\f0c5";
-}
-.fa-paperclip:before {
- content: "\f0c6";
-}
-.fa-save:before,
-.fa-floppy-o:before {
- content: "\f0c7";
-}
-.fa-square:before {
- content: "\f0c8";
-}
-.fa-navicon:before,
-.fa-reorder:before,
-.fa-bars:before {
- content: "\f0c9";
-}
-.fa-list-ul:before {
- content: "\f0ca";
-}
-.fa-list-ol:before {
- content: "\f0cb";
-}
-.fa-strikethrough:before {
- content: "\f0cc";
-}
-.fa-underline:before {
- content: "\f0cd";
-}
-.fa-table:before {
- content: "\f0ce";
-}
-.fa-magic:before {
- content: "\f0d0";
-}
-.fa-truck:before {
- content: "\f0d1";
-}
-.fa-pinterest:before {
- content: "\f0d2";
-}
-.fa-pinterest-square:before {
- content: "\f0d3";
-}
-.fa-google-plus-square:before {
- content: "\f0d4";
-}
-.fa-google-plus:before {
- content: "\f0d5";
-}
-.fa-money:before {
- content: "\f0d6";
-}
-.fa-caret-down:before {
- content: "\f0d7";
-}
-.fa-caret-up:before {
- content: "\f0d8";
-}
-.fa-caret-left:before {
- content: "\f0d9";
-}
-.fa-caret-right:before {
- content: "\f0da";
-}
-.fa-columns:before {
- content: "\f0db";
-}
-.fa-unsorted:before,
-.fa-sort:before {
- content: "\f0dc";
-}
-.fa-sort-down:before,
-.fa-sort-desc:before {
- content: "\f0dd";
-}
-.fa-sort-up:before,
-.fa-sort-asc:before {
- content: "\f0de";
-}
-.fa-envelope:before {
- content: "\f0e0";
-}
-.fa-linkedin:before {
- content: "\f0e1";
-}
-.fa-rotate-left:before,
-.fa-undo:before {
- content: "\f0e2";
-}
-.fa-legal:before,
-.fa-gavel:before {
- content: "\f0e3";
-}
-.fa-dashboard:before,
-.fa-tachometer:before {
- content: "\f0e4";
-}
-.fa-comment-o:before {
- content: "\f0e5";
-}
-.fa-comments-o:before {
- content: "\f0e6";
-}
-.fa-flash:before,
-.fa-bolt:before {
- content: "\f0e7";
-}
-.fa-sitemap:before {
- content: "\f0e8";
-}
-.fa-umbrella:before {
- content: "\f0e9";
-}
-.fa-paste:before,
-.fa-clipboard:before {
- content: "\f0ea";
-}
-.fa-lightbulb-o:before {
- content: "\f0eb";
-}
-.fa-exchange:before {
- content: "\f0ec";
-}
-.fa-cloud-download:before {
- content: "\f0ed";
-}
-.fa-cloud-upload:before {
- content: "\f0ee";
-}
-.fa-user-md:before {
- content: "\f0f0";
-}
-.fa-stethoscope:before {
- content: "\f0f1";
-}
-.fa-suitcase:before {
- content: "\f0f2";
-}
-.fa-bell-o:before {
- content: "\f0a2";
-}
-.fa-coffee:before {
- content: "\f0f4";
-}
-.fa-cutlery:before {
- content: "\f0f5";
-}
-.fa-file-text-o:before {
- content: "\f0f6";
-}
-.fa-building-o:before {
- content: "\f0f7";
-}
-.fa-hospital-o:before {
- content: "\f0f8";
-}
-.fa-ambulance:before {
- content: "\f0f9";
-}
-.fa-medkit:before {
- content: "\f0fa";
-}
-.fa-fighter-jet:before {
- content: "\f0fb";
-}
-.fa-beer:before {
- content: "\f0fc";
-}
-.fa-h-square:before {
- content: "\f0fd";
-}
-.fa-plus-square:before {
- content: "\f0fe";
-}
-.fa-angle-double-left:before {
- content: "\f100";
-}
-.fa-angle-double-right:before {
- content: "\f101";
-}
-.fa-angle-double-up:before {
- content: "\f102";
-}
-.fa-angle-double-down:before {
- content: "\f103";
-}
-.fa-angle-left:before {
- content: "\f104";
-}
-.fa-angle-right:before {
- content: "\f105";
-}
-.fa-angle-up:before {
- content: "\f106";
-}
-.fa-angle-down:before {
- content: "\f107";
-}
-.fa-desktop:before {
- content: "\f108";
-}
-.fa-laptop:before {
- content: "\f109";
-}
-.fa-tablet:before {
- content: "\f10a";
-}
-.fa-mobile-phone:before,
-.fa-mobile:before {
- content: "\f10b";
-}
-.fa-circle-o:before {
- content: "\f10c";
-}
-.fa-quote-left:before {
- content: "\f10d";
-}
-.fa-quote-right:before {
- content: "\f10e";
-}
-.fa-spinner:before {
- content: "\f110";
-}
-.fa-circle:before {
- content: "\f111";
-}
-.fa-mail-reply:before,
-.fa-reply:before {
- content: "\f112";
-}
-.fa-github-alt:before {
- content: "\f113";
-}
-.fa-folder-o:before {
- content: "\f114";
-}
-.fa-folder-open-o:before {
- content: "\f115";
-}
-.fa-smile-o:before {
- content: "\f118";
-}
-.fa-frown-o:before {
- content: "\f119";
-}
-.fa-meh-o:before {
- content: "\f11a";
-}
-.fa-gamepad:before {
- content: "\f11b";
-}
-.fa-keyboard-o:before {
- content: "\f11c";
-}
-.fa-flag-o:before {
- content: "\f11d";
-}
-.fa-flag-checkered:before {
- content: "\f11e";
-}
-.fa-terminal:before {
- content: "\f120";
-}
-.fa-code:before {
- content: "\f121";
-}
-.fa-mail-reply-all:before,
-.fa-reply-all:before {
- content: "\f122";
-}
-.fa-star-half-empty:before,
-.fa-star-half-full:before,
-.fa-star-half-o:before {
- content: "\f123";
-}
-.fa-location-arrow:before {
- content: "\f124";
-}
-.fa-crop:before {
- content: "\f125";
-}
-.fa-code-fork:before {
- content: "\f126";
-}
-.fa-unlink:before,
-.fa-chain-broken:before {
- content: "\f127";
-}
-.fa-question:before {
- content: "\f128";
-}
-.fa-info:before {
- content: "\f129";
-}
-.fa-exclamation:before {
- content: "\f12a";
-}
-.fa-superscript:before {
- content: "\f12b";
-}
-.fa-subscript:before {
- content: "\f12c";
-}
-.fa-eraser:before {
- content: "\f12d";
-}
-.fa-puzzle-piece:before {
- content: "\f12e";
-}
-.fa-microphone:before {
- content: "\f130";
-}
-.fa-microphone-slash:before {
- content: "\f131";
-}
-.fa-shield:before {
- content: "\f132";
-}
-.fa-calendar-o:before {
- content: "\f133";
-}
-.fa-fire-extinguisher:before {
- content: "\f134";
-}
-.fa-rocket:before {
- content: "\f135";
-}
-.fa-maxcdn:before {
- content: "\f136";
-}
-.fa-chevron-circle-left:before {
- content: "\f137";
-}
-.fa-chevron-circle-right:before {
- content: "\f138";
-}
-.fa-chevron-circle-up:before {
- content: "\f139";
-}
-.fa-chevron-circle-down:before {
- content: "\f13a";
-}
-.fa-html5:before {
- content: "\f13b";
-}
-.fa-css3:before {
- content: "\f13c";
-}
-.fa-anchor:before {
- content: "\f13d";
-}
-.fa-unlock-alt:before {
- content: "\f13e";
-}
-.fa-bullseye:before {
- content: "\f140";
-}
-.fa-ellipsis-h:before {
- content: "\f141";
-}
-.fa-ellipsis-v:before {
- content: "\f142";
-}
-.fa-rss-square:before {
- content: "\f143";
-}
-.fa-play-circle:before {
- content: "\f144";
-}
-.fa-ticket:before {
- content: "\f145";
-}
-.fa-minus-square:before {
- content: "\f146";
-}
-.fa-minus-square-o:before {
- content: "\f147";
-}
-.fa-level-up:before {
- content: "\f148";
-}
-.fa-level-down:before {
- content: "\f149";
-}
-.fa-check-square:before {
- content: "\f14a";
-}
-.fa-pencil-square:before {
- content: "\f14b";
-}
-.fa-external-link-square:before {
- content: "\f14c";
-}
-.fa-share-square:before {
- content: "\f14d";
-}
-.fa-compass:before {
- content: "\f14e";
-}
-.fa-toggle-down:before,
-.fa-caret-square-o-down:before {
- content: "\f150";
-}
-.fa-toggle-up:before,
-.fa-caret-square-o-up:before {
- content: "\f151";
-}
-.fa-toggle-right:before,
-.fa-caret-square-o-right:before {
- content: "\f152";
-}
-.fa-euro:before,
-.fa-eur:before {
- content: "\f153";
-}
-.fa-gbp:before {
- content: "\f154";
-}
-.fa-dollar:before,
-.fa-usd:before {
- content: "\f155";
-}
-.fa-rupee:before,
-.fa-inr:before {
- content: "\f156";
-}
-.fa-cny:before,
-.fa-rmb:before,
-.fa-yen:before,
-.fa-jpy:before {
- content: "\f157";
-}
-.fa-ruble:before,
-.fa-rouble:before,
-.fa-rub:before {
- content: "\f158";
-}
-.fa-won:before,
-.fa-krw:before {
- content: "\f159";
-}
-.fa-bitcoin:before,
-.fa-btc:before {
- content: "\f15a";
-}
-.fa-file:before {
- content: "\f15b";
-}
-.fa-file-text:before {
- content: "\f15c";
-}
-.fa-sort-alpha-asc:before {
- content: "\f15d";
-}
-.fa-sort-alpha-desc:before {
- content: "\f15e";
-}
-.fa-sort-amount-asc:before {
- content: "\f160";
-}
-.fa-sort-amount-desc:before {
- content: "\f161";
-}
-.fa-sort-numeric-asc:before {
- content: "\f162";
-}
-.fa-sort-numeric-desc:before {
- content: "\f163";
-}
-.fa-thumbs-up:before {
- content: "\f164";
-}
-.fa-thumbs-down:before {
- content: "\f165";
-}
-.fa-youtube-square:before {
- content: "\f166";
-}
-.fa-youtube:before {
- content: "\f167";
-}
-.fa-xing:before {
- content: "\f168";
-}
-.fa-xing-square:before {
- content: "\f169";
-}
-.fa-youtube-play:before {
- content: "\f16a";
-}
-.fa-dropbox:before {
- content: "\f16b";
-}
-.fa-stack-overflow:before {
- content: "\f16c";
-}
-.fa-instagram:before {
- content: "\f16d";
-}
-.fa-flickr:before {
- content: "\f16e";
-}
-.fa-adn:before {
- content: "\f170";
-}
-.fa-bitbucket:before {
- content: "\f171";
-}
-.fa-bitbucket-square:before {
- content: "\f172";
-}
-.fa-tumblr:before {
- content: "\f173";
-}
-.fa-tumblr-square:before {
- content: "\f174";
-}
-.fa-long-arrow-down:before {
- content: "\f175";
-}
-.fa-long-arrow-up:before {
- content: "\f176";
-}
-.fa-long-arrow-left:before {
- content: "\f177";
-}
-.fa-long-arrow-right:before {
- content: "\f178";
-}
-.fa-apple:before {
- content: "\f179";
-}
-.fa-windows:before {
- content: "\f17a";
-}
-.fa-android:before {
- content: "\f17b";
-}
-.fa-linux:before {
- content: "\f17c";
-}
-.fa-dribbble:before {
- content: "\f17d";
-}
-.fa-skype:before {
- content: "\f17e";
-}
-.fa-foursquare:before {
- content: "\f180";
-}
-.fa-trello:before {
- content: "\f181";
-}
-.fa-female:before {
- content: "\f182";
-}
-.fa-male:before {
- content: "\f183";
-}
-.fa-gittip:before,
-.fa-gratipay:before {
- content: "\f184";
-}
-.fa-sun-o:before {
- content: "\f185";
-}
-.fa-moon-o:before {
- content: "\f186";
-}
-.fa-archive:before {
- content: "\f187";
-}
-.fa-bug:before {
- content: "\f188";
-}
-.fa-vk:before {
- content: "\f189";
-}
-.fa-weibo:before {
- content: "\f18a";
-}
-.fa-renren:before {
- content: "\f18b";
-}
-.fa-pagelines:before {
- content: "\f18c";
-}
-.fa-stack-exchange:before {
- content: "\f18d";
-}
-.fa-arrow-circle-o-right:before {
- content: "\f18e";
-}
-.fa-arrow-circle-o-left:before {
- content: "\f190";
-}
-.fa-toggle-left:before,
-.fa-caret-square-o-left:before {
- content: "\f191";
-}
-.fa-dot-circle-o:before {
- content: "\f192";
-}
-.fa-wheelchair:before {
- content: "\f193";
-}
-.fa-vimeo-square:before {
- content: "\f194";
-}
-.fa-turkish-lira:before,
-.fa-try:before {
- content: "\f195";
-}
-.fa-plus-square-o:before {
- content: "\f196";
-}
-.fa-space-shuttle:before {
- content: "\f197";
-}
-.fa-slack:before {
- content: "\f198";
-}
-.fa-envelope-square:before {
- content: "\f199";
-}
-.fa-wordpress:before {
- content: "\f19a";
-}
-.fa-openid:before {
- content: "\f19b";
-}
-.fa-institution:before,
-.fa-bank:before,
-.fa-university:before {
- content: "\f19c";
-}
-.fa-mortar-board:before,
-.fa-graduation-cap:before {
- content: "\f19d";
-}
-.fa-yahoo:before {
- content: "\f19e";
-}
-.fa-google:before {
- content: "\f1a0";
-}
-.fa-reddit:before {
- content: "\f1a1";
-}
-.fa-reddit-square:before {
- content: "\f1a2";
-}
-.fa-stumbleupon-circle:before {
- content: "\f1a3";
-}
-.fa-stumbleupon:before {
- content: "\f1a4";
-}
-.fa-delicious:before {
- content: "\f1a5";
-}
-.fa-digg:before {
- content: "\f1a6";
-}
-.fa-pied-piper-pp:before {
- content: "\f1a7";
-}
-.fa-pied-piper-alt:before {
- content: "\f1a8";
-}
-.fa-drupal:before {
- content: "\f1a9";
-}
-.fa-joomla:before {
- content: "\f1aa";
-}
-.fa-language:before {
- content: "\f1ab";
-}
-.fa-fax:before {
- content: "\f1ac";
-}
-.fa-building:before {
- content: "\f1ad";
-}
-.fa-child:before {
- content: "\f1ae";
-}
-.fa-paw:before {
- content: "\f1b0";
-}
-.fa-spoon:before {
- content: "\f1b1";
-}
-.fa-cube:before {
- content: "\f1b2";
-}
-.fa-cubes:before {
- content: "\f1b3";
-}
-.fa-behance:before {
- content: "\f1b4";
-}
-.fa-behance-square:before {
- content: "\f1b5";
-}
-.fa-steam:before {
- content: "\f1b6";
-}
-.fa-steam-square:before {
- content: "\f1b7";
-}
-.fa-recycle:before {
- content: "\f1b8";
-}
-.fa-automobile:before,
-.fa-car:before {
- content: "\f1b9";
-}
-.fa-cab:before,
-.fa-taxi:before {
- content: "\f1ba";
-}
-.fa-tree:before {
- content: "\f1bb";
-}
-.fa-spotify:before {
- content: "\f1bc";
-}
-.fa-deviantart:before {
- content: "\f1bd";
-}
-.fa-soundcloud:before {
- content: "\f1be";
-}
-.fa-database:before {
- content: "\f1c0";
-}
-.fa-file-pdf-o:before {
- content: "\f1c1";
-}
-.fa-file-word-o:before {
- content: "\f1c2";
-}
-.fa-file-excel-o:before {
- content: "\f1c3";
-}
-.fa-file-powerpoint-o:before {
- content: "\f1c4";
-}
-.fa-file-photo-o:before,
-.fa-file-picture-o:before,
-.fa-file-image-o:before {
- content: "\f1c5";
-}
-.fa-file-zip-o:before,
-.fa-file-archive-o:before {
- content: "\f1c6";
-}
-.fa-file-sound-o:before,
-.fa-file-audio-o:before {
- content: "\f1c7";
-}
-.fa-file-movie-o:before,
-.fa-file-video-o:before {
- content: "\f1c8";
-}
-.fa-file-code-o:before {
- content: "\f1c9";
-}
-.fa-vine:before {
- content: "\f1ca";
-}
-.fa-codepen:before {
- content: "\f1cb";
-}
-.fa-jsfiddle:before {
- content: "\f1cc";
-}
-.fa-life-bouy:before,
-.fa-life-buoy:before,
-.fa-life-saver:before,
-.fa-support:before,
-.fa-life-ring:before {
- content: "\f1cd";
-}
-.fa-circle-o-notch:before {
- content: "\f1ce";
-}
-.fa-ra:before,
-.fa-resistance:before,
-.fa-rebel:before {
- content: "\f1d0";
-}
-.fa-ge:before,
-.fa-empire:before {
- content: "\f1d1";
-}
-.fa-git-square:before {
- content: "\f1d2";
-}
-.fa-git:before {
- content: "\f1d3";
-}
-.fa-y-combinator-square:before,
-.fa-yc-square:before,
-.fa-hacker-news:before {
- content: "\f1d4";
-}
-.fa-tencent-weibo:before {
- content: "\f1d5";
-}
-.fa-qq:before {
- content: "\f1d6";
-}
-.fa-wechat:before,
-.fa-weixin:before {
- content: "\f1d7";
-}
-.fa-send:before,
-.fa-paper-plane:before {
- content: "\f1d8";
-}
-.fa-send-o:before,
-.fa-paper-plane-o:before {
- content: "\f1d9";
-}
-.fa-history:before {
- content: "\f1da";
-}
-.fa-circle-thin:before {
- content: "\f1db";
-}
-.fa-header:before {
- content: "\f1dc";
-}
-.fa-paragraph:before {
- content: "\f1dd";
-}
-.fa-sliders:before {
- content: "\f1de";
-}
-.fa-share-alt:before {
- content: "\f1e0";
-}
-.fa-share-alt-square:before {
- content: "\f1e1";
-}
-.fa-bomb:before {
- content: "\f1e2";
-}
-.fa-soccer-ball-o:before,
-.fa-futbol-o:before {
- content: "\f1e3";
-}
-.fa-tty:before {
- content: "\f1e4";
-}
-.fa-binoculars:before {
- content: "\f1e5";
-}
-.fa-plug:before {
- content: "\f1e6";
-}
-.fa-slideshare:before {
- content: "\f1e7";
-}
-.fa-twitch:before {
- content: "\f1e8";
-}
-.fa-yelp:before {
- content: "\f1e9";
-}
-.fa-newspaper-o:before {
- content: "\f1ea";
-}
-.fa-wifi:before {
- content: "\f1eb";
-}
-.fa-calculator:before {
- content: "\f1ec";
-}
-.fa-paypal:before {
- content: "\f1ed";
-}
-.fa-google-wallet:before {
- content: "\f1ee";
-}
-.fa-cc-visa:before {
- content: "\f1f0";
-}
-.fa-cc-mastercard:before {
- content: "\f1f1";
-}
-.fa-cc-discover:before {
- content: "\f1f2";
-}
-.fa-cc-amex:before {
- content: "\f1f3";
-}
-.fa-cc-paypal:before {
- content: "\f1f4";
-}
-.fa-cc-stripe:before {
- content: "\f1f5";
-}
-.fa-bell-slash:before {
- content: "\f1f6";
-}
-.fa-bell-slash-o:before {
- content: "\f1f7";
-}
-.fa-trash:before {
- content: "\f1f8";
-}
-.fa-copyright:before {
- content: "\f1f9";
-}
-.fa-at:before {
- content: "\f1fa";
-}
-.fa-eyedropper:before {
- content: "\f1fb";
-}
-.fa-paint-brush:before {
- content: "\f1fc";
-}
-.fa-birthday-cake:before {
- content: "\f1fd";
-}
-.fa-area-chart:before {
- content: "\f1fe";
-}
-.fa-pie-chart:before {
- content: "\f200";
-}
-.fa-line-chart:before {
- content: "\f201";
-}
-.fa-lastfm:before {
- content: "\f202";
-}
-.fa-lastfm-square:before {
- content: "\f203";
-}
-.fa-toggle-off:before {
- content: "\f204";
-}
-.fa-toggle-on:before {
- content: "\f205";
-}
-.fa-bicycle:before {
- content: "\f206";
-}
-.fa-bus:before {
- content: "\f207";
-}
-.fa-ioxhost:before {
- content: "\f208";
-}
-.fa-angellist:before {
- content: "\f209";
-}
-.fa-cc:before {
- content: "\f20a";
-}
-.fa-shekel:before,
-.fa-sheqel:before,
-.fa-ils:before {
- content: "\f20b";
-}
-.fa-meanpath:before {
- content: "\f20c";
-}
-.fa-buysellads:before {
- content: "\f20d";
-}
-.fa-connectdevelop:before {
- content: "\f20e";
-}
-.fa-dashcube:before {
- content: "\f210";
-}
-.fa-forumbee:before {
- content: "\f211";
-}
-.fa-leanpub:before {
- content: "\f212";
-}
-.fa-sellsy:before {
- content: "\f213";
-}
-.fa-shirtsinbulk:before {
- content: "\f214";
-}
-.fa-simplybuilt:before {
- content: "\f215";
-}
-.fa-skyatlas:before {
- content: "\f216";
-}
-.fa-cart-plus:before {
- content: "\f217";
-}
-.fa-cart-arrow-down:before {
- content: "\f218";
-}
-.fa-diamond:before {
- content: "\f219";
-}
-.fa-ship:before {
- content: "\f21a";
-}
-.fa-user-secret:before {
- content: "\f21b";
-}
-.fa-motorcycle:before {
- content: "\f21c";
-}
-.fa-street-view:before {
- content: "\f21d";
-}
-.fa-heartbeat:before {
- content: "\f21e";
-}
-.fa-venus:before {
- content: "\f221";
-}
-.fa-mars:before {
- content: "\f222";
-}
-.fa-mercury:before {
- content: "\f223";
-}
-.fa-intersex:before,
-.fa-transgender:before {
- content: "\f224";
-}
-.fa-transgender-alt:before {
- content: "\f225";
-}
-.fa-venus-double:before {
- content: "\f226";
-}
-.fa-mars-double:before {
- content: "\f227";
-}
-.fa-venus-mars:before {
- content: "\f228";
-}
-.fa-mars-stroke:before {
- content: "\f229";
-}
-.fa-mars-stroke-v:before {
- content: "\f22a";
-}
-.fa-mars-stroke-h:before {
- content: "\f22b";
-}
-.fa-neuter:before {
- content: "\f22c";
-}
-.fa-genderless:before {
- content: "\f22d";
-}
-.fa-facebook-official:before {
- content: "\f230";
-}
-.fa-pinterest-p:before {
- content: "\f231";
-}
-.fa-whatsapp:before {
- content: "\f232";
-}
-.fa-server:before {
- content: "\f233";
-}
-.fa-user-plus:before {
- content: "\f234";
-}
-.fa-user-times:before {
- content: "\f235";
-}
-.fa-hotel:before,
-.fa-bed:before {
- content: "\f236";
-}
-.fa-viacoin:before {
- content: "\f237";
-}
-.fa-train:before {
- content: "\f238";
-}
-.fa-subway:before {
- content: "\f239";
-}
-.fa-medium:before {
- content: "\f23a";
-}
-.fa-yc:before,
-.fa-y-combinator:before {
- content: "\f23b";
-}
-.fa-optin-monster:before {
- content: "\f23c";
-}
-.fa-opencart:before {
- content: "\f23d";
-}
-.fa-expeditedssl:before {
- content: "\f23e";
-}
-.fa-battery-4:before,
-.fa-battery:before,
-.fa-battery-full:before {
- content: "\f240";
-}
-.fa-battery-3:before,
-.fa-battery-three-quarters:before {
- content: "\f241";
-}
-.fa-battery-2:before,
-.fa-battery-half:before {
- content: "\f242";
-}
-.fa-battery-1:before,
-.fa-battery-quarter:before {
- content: "\f243";
-}
-.fa-battery-0:before,
-.fa-battery-empty:before {
- content: "\f244";
-}
-.fa-mouse-pointer:before {
- content: "\f245";
-}
-.fa-i-cursor:before {
- content: "\f246";
-}
-.fa-object-group:before {
- content: "\f247";
-}
-.fa-object-ungroup:before {
- content: "\f248";
-}
-.fa-sticky-note:before {
- content: "\f249";
-}
-.fa-sticky-note-o:before {
- content: "\f24a";
-}
-.fa-cc-jcb:before {
- content: "\f24b";
-}
-.fa-cc-diners-club:before {
- content: "\f24c";
-}
-.fa-clone:before {
- content: "\f24d";
-}
-.fa-balance-scale:before {
- content: "\f24e";
-}
-.fa-hourglass-o:before {
- content: "\f250";
-}
-.fa-hourglass-1:before,
-.fa-hourglass-start:before {
- content: "\f251";
-}
-.fa-hourglass-2:before,
-.fa-hourglass-half:before {
- content: "\f252";
-}
-.fa-hourglass-3:before,
-.fa-hourglass-end:before {
- content: "\f253";
-}
-.fa-hourglass:before {
- content: "\f254";
-}
-.fa-hand-grab-o:before,
-.fa-hand-rock-o:before {
- content: "\f255";
-}
-.fa-hand-stop-o:before,
-.fa-hand-paper-o:before {
- content: "\f256";
-}
-.fa-hand-scissors-o:before {
- content: "\f257";
-}
-.fa-hand-lizard-o:before {
- content: "\f258";
-}
-.fa-hand-spock-o:before {
- content: "\f259";
-}
-.fa-hand-pointer-o:before {
- content: "\f25a";
-}
-.fa-hand-peace-o:before {
- content: "\f25b";
-}
-.fa-trademark:before {
- content: "\f25c";
-}
-.fa-registered:before {
- content: "\f25d";
-}
-.fa-creative-commons:before {
- content: "\f25e";
-}
-.fa-gg:before {
- content: "\f260";
-}
-.fa-gg-circle:before {
- content: "\f261";
-}
-.fa-tripadvisor:before {
- content: "\f262";
-}
-.fa-odnoklassniki:before {
- content: "\f263";
-}
-.fa-odnoklassniki-square:before {
- content: "\f264";
-}
-.fa-get-pocket:before {
- content: "\f265";
-}
-.fa-wikipedia-w:before {
- content: "\f266";
-}
-.fa-safari:before {
- content: "\f267";
-}
-.fa-chrome:before {
- content: "\f268";
-}
-.fa-firefox:before {
- content: "\f269";
-}
-.fa-opera:before {
- content: "\f26a";
-}
-.fa-internet-explorer:before {
- content: "\f26b";
-}
-.fa-tv:before,
-.fa-television:before {
- content: "\f26c";
-}
-.fa-contao:before {
- content: "\f26d";
-}
-.fa-500px:before {
- content: "\f26e";
-}
-.fa-amazon:before {
- content: "\f270";
-}
-.fa-calendar-plus-o:before {
- content: "\f271";
-}
-.fa-calendar-minus-o:before {
- content: "\f272";
-}
-.fa-calendar-times-o:before {
- content: "\f273";
-}
-.fa-calendar-check-o:before {
- content: "\f274";
-}
-.fa-industry:before {
- content: "\f275";
-}
-.fa-map-pin:before {
- content: "\f276";
-}
-.fa-map-signs:before {
- content: "\f277";
-}
-.fa-map-o:before {
- content: "\f278";
-}
-.fa-map:before {
- content: "\f279";
-}
-.fa-commenting:before {
- content: "\f27a";
-}
-.fa-commenting-o:before {
- content: "\f27b";
-}
-.fa-houzz:before {
- content: "\f27c";
-}
-.fa-vimeo:before {
- content: "\f27d";
-}
-.fa-black-tie:before {
- content: "\f27e";
-}
-.fa-fonticons:before {
- content: "\f280";
-}
-.fa-reddit-alien:before {
- content: "\f281";
-}
-.fa-edge:before {
- content: "\f282";
-}
-.fa-credit-card-alt:before {
- content: "\f283";
-}
-.fa-codiepie:before {
- content: "\f284";
-}
-.fa-modx:before {
- content: "\f285";
-}
-.fa-fort-awesome:before {
- content: "\f286";
-}
-.fa-usb:before {
- content: "\f287";
-}
-.fa-product-hunt:before {
- content: "\f288";
-}
-.fa-mixcloud:before {
- content: "\f289";
-}
-.fa-scribd:before {
- content: "\f28a";
-}
-.fa-pause-circle:before {
- content: "\f28b";
-}
-.fa-pause-circle-o:before {
- content: "\f28c";
-}
-.fa-stop-circle:before {
- content: "\f28d";
-}
-.fa-stop-circle-o:before {
- content: "\f28e";
-}
-.fa-shopping-bag:before {
- content: "\f290";
-}
-.fa-shopping-basket:before {
- content: "\f291";
-}
-.fa-hashtag:before {
- content: "\f292";
-}
-.fa-bluetooth:before {
- content: "\f293";
-}
-.fa-bluetooth-b:before {
- content: "\f294";
-}
-.fa-percent:before {
- content: "\f295";
-}
-.fa-gitlab:before {
- content: "\f296";
-}
-.fa-wpbeginner:before {
- content: "\f297";
-}
-.fa-wpforms:before {
- content: "\f298";
-}
-.fa-envira:before {
- content: "\f299";
-}
-.fa-universal-access:before {
- content: "\f29a";
-}
-.fa-wheelchair-alt:before {
- content: "\f29b";
-}
-.fa-question-circle-o:before {
- content: "\f29c";
-}
-.fa-blind:before {
- content: "\f29d";
-}
-.fa-audio-description:before {
- content: "\f29e";
-}
-.fa-volume-control-phone:before {
- content: "\f2a0";
-}
-.fa-braille:before {
- content: "\f2a1";
-}
-.fa-assistive-listening-systems:before {
- content: "\f2a2";
-}
-.fa-asl-interpreting:before,
-.fa-american-sign-language-interpreting:before {
- content: "\f2a3";
-}
-.fa-deafness:before,
-.fa-hard-of-hearing:before,
-.fa-deaf:before {
- content: "\f2a4";
-}
-.fa-glide:before {
- content: "\f2a5";
-}
-.fa-glide-g:before {
- content: "\f2a6";
-}
-.fa-signing:before,
-.fa-sign-language:before {
- content: "\f2a7";
-}
-.fa-low-vision:before {
- content: "\f2a8";
-}
-.fa-viadeo:before {
- content: "\f2a9";
-}
-.fa-viadeo-square:before {
- content: "\f2aa";
-}
-.fa-snapchat:before {
- content: "\f2ab";
-}
-.fa-snapchat-ghost:before {
- content: "\f2ac";
-}
-.fa-snapchat-square:before {
- content: "\f2ad";
-}
-.fa-pied-piper:before {
- content: "\f2ae";
-}
-.fa-first-order:before {
- content: "\f2b0";
-}
-.fa-yoast:before {
- content: "\f2b1";
-}
-.fa-themeisle:before {
- content: "\f2b2";
-}
-.fa-google-plus-circle:before,
-.fa-google-plus-official:before {
- content: "\f2b3";
-}
-.fa-fa:before,
-.fa-font-awesome:before {
- content: "\f2b4";
-}
-.fa-handshake-o:before {
- content: "\f2b5";
-}
-.fa-envelope-open:before {
- content: "\f2b6";
-}
-.fa-envelope-open-o:before {
- content: "\f2b7";
-}
-.fa-linode:before {
- content: "\f2b8";
-}
-.fa-address-book:before {
- content: "\f2b9";
-}
-.fa-address-book-o:before {
- content: "\f2ba";
-}
-.fa-vcard:before,
-.fa-address-card:before {
- content: "\f2bb";
-}
-.fa-vcard-o:before,
-.fa-address-card-o:before {
- content: "\f2bc";
-}
-.fa-user-circle:before {
- content: "\f2bd";
-}
-.fa-user-circle-o:before {
- content: "\f2be";
-}
-.fa-user-o:before {
- content: "\f2c0";
-}
-.fa-id-badge:before {
- content: "\f2c1";
-}
-.fa-drivers-license:before,
-.fa-id-card:before {
- content: "\f2c2";
-}
-.fa-drivers-license-o:before,
-.fa-id-card-o:before {
- content: "\f2c3";
-}
-.fa-quora:before {
- content: "\f2c4";
-}
-.fa-free-code-camp:before {
- content: "\f2c5";
-}
-.fa-telegram:before {
- content: "\f2c6";
-}
-.fa-thermometer-4:before,
-.fa-thermometer:before,
-.fa-thermometer-full:before {
- content: "\f2c7";
-}
-.fa-thermometer-3:before,
-.fa-thermometer-three-quarters:before {
- content: "\f2c8";
-}
-.fa-thermometer-2:before,
-.fa-thermometer-half:before {
- content: "\f2c9";
-}
-.fa-thermometer-1:before,
-.fa-thermometer-quarter:before {
- content: "\f2ca";
-}
-.fa-thermometer-0:before,
-.fa-thermometer-empty:before {
- content: "\f2cb";
-}
-.fa-shower:before {
- content: "\f2cc";
-}
-.fa-bathtub:before,
-.fa-s15:before,
-.fa-bath:before {
- content: "\f2cd";
-}
-.fa-podcast:before {
- content: "\f2ce";
-}
-.fa-window-maximize:before {
- content: "\f2d0";
-}
-.fa-window-minimize:before {
- content: "\f2d1";
-}
-.fa-window-restore:before {
- content: "\f2d2";
-}
-.fa-times-rectangle:before,
-.fa-window-close:before {
- content: "\f2d3";
-}
-.fa-times-rectangle-o:before,
-.fa-window-close-o:before {
- content: "\f2d4";
-}
-.fa-bandcamp:before {
- content: "\f2d5";
-}
-.fa-grav:before {
- content: "\f2d6";
-}
-.fa-etsy:before {
- content: "\f2d7";
-}
-.fa-imdb:before {
- content: "\f2d8";
-}
-.fa-ravelry:before {
- content: "\f2d9";
-}
-.fa-eercast:before {
- content: "\f2da";
-}
-.fa-microchip:before {
- content: "\f2db";
-}
-.fa-snowflake-o:before {
- content: "\f2dc";
-}
-.fa-superpowers:before {
- content: "\f2dd";
-}
-.fa-wpexplorer:before {
- content: "\f2de";
-}
-.fa-meetup:before {
- content: "\f2e0";
-}
-.sr-only {
- position: absolute;
- width: 1px;
- height: 1px;
- padding: 0;
- margin: -1px;
- overflow: hidden;
- clip: rect(0, 0, 0, 0);
- border: 0;
-}
-.sr-only-focusable:active,
-.sr-only-focusable:focus {
- position: static;
- width: auto;
- height: auto;
- margin: 0;
- overflow: visible;
- clip: auto;
-}
diff --git a/docs/resources/font-awesome/fonts/LICENSE-font-awesome-fonts.txt b/docs/resources/font-awesome/fonts/LICENSE-font-awesome-fonts.txt
deleted file mode 100644
index 39753d09ae6..00000000000
--- a/docs/resources/font-awesome/fonts/LICENSE-font-awesome-fonts.txt
+++ /dev/null
@@ -1,97 +0,0 @@
-# Fonts: SIL OFL 1.1 License
-
-In the Font Awesome Free download, the SIL OFL license applies to all icons
-packaged as web and desktop font files.
-
-Copyright (c) 2023 Fonticons, Inc. (https://fontawesome.com)
-with Reserved Font Name: "Font Awesome".
-
-This Font Software is licensed under the SIL Open Font License, Version 1.1.
-This license is copied below, and is also available with a FAQ at:
-http://scripts.sil.org/OFL
-
-SIL OPEN FONT LICENSE
-Version 1.1 - 26 February 2007
-
-PREAMBLE
-The goals of the Open Font License (OFL) are to stimulate worldwide
-development of collaborative font projects, to support the font creation
-efforts of academic and linguistic communities, and to provide a free and
-open framework in which fonts may be shared and improved in partnership
-with others.
-
-The OFL allows the licensed fonts to be used, studied, modified and
-redistributed freely as long as they are not sold by themselves. The
-fonts, including any derivative works, can be bundled, embedded,
-redistributed and/or sold with any software provided that any reserved
-names are not used by derivative works. The fonts and derivatives,
-however, cannot be released under any other type of license. The
-requirement for fonts to remain under this license does not apply
-to any document created using the fonts or their derivatives.
-
-DEFINITIONS
-"Font Software" refers to the set of files released by the Copyright
-Holder(s) under this license and clearly marked as such. This may
-include source files, build scripts and documentation.
-
-"Reserved Font Name" refers to any names specified as such after the
-copyright statement(s).
-
-"Original Version" refers to the collection of Font Software components as
-distributed by the Copyright Holder(s).
-
-"Modified Version" refers to any derivative made by adding to, deleting,
-or substituting — in part or in whole — any of the components of the
-Original Version, by changing formats or by porting the Font Software to a
-new environment.
-
-"Author" refers to any designer, engineer, programmer, technical
-writer or other person who contributed to the Font Software.
-
-PERMISSION & CONDITIONS
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Font Software, to use, study, copy, merge, embed, modify,
-redistribute, and sell modified and unmodified copies of the Font
-Software, subject to the following conditions:
-
-1) Neither the Font Software nor any of its individual components,
-in Original or Modified Versions, may be sold by itself.
-
-2) Original or Modified Versions of the Font Software may be bundled,
-redistributed and/or sold with any software, provided that each copy
-contains the above copyright notice and this license. These can be
-included either as stand-alone text files, human-readable headers or
-in the appropriate machine-readable metadata fields within text or
-binary files as long as those fields can be easily viewed by the user.
-
-3) No Modified Version of the Font Software may use the Reserved Font
-Name(s) unless explicit written permission is granted by the corresponding
-Copyright Holder. This restriction only applies to the primary font name as
-presented to the users.
-
-4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
-Software shall not be used to promote, endorse or advertise any
-Modified Version, except to acknowledge the contribution(s) of the
-Copyright Holder(s) and the Author(s) or with their explicit written
-permission.
-
-5) The Font Software, modified or unmodified, in part or in whole,
-must be distributed entirely under this license, and must not be
-distributed under any other license. The requirement for fonts to
-remain under this license does not apply to any document created
-using the Font Software.
-
-TERMINATION
-This license becomes null and void if any of the above conditions are
-not met.
-
-DISCLAIMER
-THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
-COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
-DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
-OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/docs/resources/font-awesome/fonts/fontawesome-webfont.eot b/docs/resources/font-awesome/fonts/fontawesome-webfont.eot
deleted file mode 100644
index e9f60ca953f..00000000000
Binary files a/docs/resources/font-awesome/fonts/fontawesome-webfont.eot and /dev/null differ
diff --git a/docs/resources/font-awesome/fonts/fontawesome-webfont.svg b/docs/resources/font-awesome/fonts/fontawesome-webfont.svg
deleted file mode 100644
index 855c845e538..00000000000
--- a/docs/resources/font-awesome/fonts/fontawesome-webfont.svg
+++ /dev/null
@@ -1,2671 +0,0 @@
-
-
-
diff --git a/docs/resources/font-awesome/fonts/fontawesome-webfont.ttf b/docs/resources/font-awesome/fonts/fontawesome-webfont.ttf
deleted file mode 100644
index 35acda2fa11..00000000000
Binary files a/docs/resources/font-awesome/fonts/fontawesome-webfont.ttf and /dev/null differ
diff --git a/docs/resources/font-awesome/fonts/fontawesome-webfont.woff b/docs/resources/font-awesome/fonts/fontawesome-webfont.woff
deleted file mode 100644
index 400014a4b06..00000000000
Binary files a/docs/resources/font-awesome/fonts/fontawesome-webfont.woff and /dev/null differ
diff --git a/docs/resources/font-awesome/fonts/fontawesome-webfont.woff2 b/docs/resources/font-awesome/fonts/fontawesome-webfont.woff2
deleted file mode 100644
index 4d13fc60404..00000000000
Binary files a/docs/resources/font-awesome/fonts/fontawesome-webfont.woff2 and /dev/null differ
diff --git a/docs/user-manual/_book.adoc b/docs/user-manual/_book.adoc
deleted file mode 100644
index 4f5e8160c0c..00000000000
--- a/docs/user-manual/_book.adoc
+++ /dev/null
@@ -1,149 +0,0 @@
-////
-This is used to generate the single-page PDF manual.
-It *aggregates* all chapters into a single document following the same pattern as index.adoc. These two documents should stay in sync.
-////
-= User Manual
-:doctype: book
-:title-logo-image: images/artemis_text_black_small.png
-:toclevels: 2
-:outlinelevels: 1
-:outline-title: Cover
-{project-version}
-
-//== Overview
-
-include::project-info.adoc[leveloffset=1]
-include::preface.adoc[leveloffset=1]
-
-//== Upgrading
-include::upgrading.adoc[leveloffset=1]
-
-//== Concepts
-include::messaging-concepts.adoc[leveloffset=1]
-include::architecture.adoc[leveloffset=1]
-
-//== Protocols & APIs
-
-include::protocols-interoperability.adoc[leveloffset=1]
-include::amqp.adoc[leveloffset=1]
-include::stomp.adoc[leveloffset=1]
-include::mqtt.adoc[leveloffset=1]
-include::openwire.adoc[leveloffset=1]
-include::core.adoc[leveloffset=1]
-include::client-failover.adoc[leveloffset=1]
-include::jms-core-mapping.adoc[leveloffset=1]
-include::using-jms.adoc[leveloffset=1]
-include::pre-acknowledge.adoc[leveloffset=1]
-include::proxy-protocol.adoc[leveloffset=1]
-
-//== Getting Started
-include::docker.adoc[leveloffset=1]
-include::using-server.adoc[leveloffset=1]
-include::using-cli.adoc[leveloffset=1]
-include::client-classpath.adoc[leveloffset=1]
-
-//== Addressing
-
-include::address-model.adoc[leveloffset=1]
-include::address-settings.adoc[leveloffset=1]
-include::wildcard-syntax.adoc[leveloffset=1]
-include::wildcard-routing.adoc[leveloffset=1]
-include::diverts.adoc[leveloffset=1]
-include::transformers.adoc[leveloffset=1]
-include::filter-expressions.adoc[leveloffset=1]
-
-//== Management and Monitoring
-
-include::management.adoc[leveloffset=1]
-include::management-console.adoc[leveloffset=1]
-include::metrics.adoc[leveloffset=1]
-
-//== Broker-to-Broker Connectivity
-
-include::core-bridges.adoc[leveloffset=1]
-include::clusters.adoc[leveloffset=1]
-include::lock-coordination.adoc[leveloffset=1]
-include::ha.adoc[leveloffset=1]
-include::network-isolation.adoc[leveloffset=1]
-include::restart-sequence.adoc[leveloffset=1]
-include::activation-tools.adoc[leveloffset=1]
-include::amqp-broker-connections.adoc[leveloffset=1]
-include::amqp-address-federation.adoc[leveloffset=2]
-include::amqp-queue-federation.adoc[leveloffset=2]
-include::amqp-federation-configuration-glossary.adoc[leveloffset=2]
-include::federation.adoc[leveloffset=1]
-include::federation-address.adoc[leveloffset=1]
-include::federation-queue.adoc[leveloffset=1]
-include::connection-routers.adoc[leveloffset=1]
-include::jms-bridge.adoc[leveloffset=1]
-
-//== Security
-
-include::threat-model.adoc[leveloffset=1]
-include::security.adoc[leveloffset=1]
-include::masking-passwords.adoc[leveloffset=1]
-include::resource-limits.adoc[leveloffset=1]
-
-//== Performance
-
-include::perf-tuning.adoc[leveloffset=1]
-include::perf-tools.adoc[leveloffset=1]
-include::thread-pooling.adoc[leveloffset=1]
-
-//== Advanced Use-cases
-
-include::scheduled-messages.adoc[leveloffset=1]
-include::last-value-queues.adoc[leveloffset=1]
-include::non-destructive-queues.adoc[leveloffset=1]
-include::ring-queues.adoc[leveloffset=1]
-include::retroactive-addresses.adoc[leveloffset=1]
-include::exclusive-queues.adoc[leveloffset=1]
-include::message-grouping.adoc[leveloffset=1]
-include::consumer-priority.adoc[leveloffset=1]
-include::message-expiry.adoc[leveloffset=1]
-include::large-messages.adoc[leveloffset=1]
-include::paging.adoc[leveloffset=1]
-include::duplicate-detection.adoc[leveloffset=1]
-include::undelivered-messages.adoc[leveloffset=1]
-
-//== Data Storage
-
-include::persistence.adoc[leveloffset=1]
-include::data-tools.adoc[leveloffset=1]
-include::libaio.adoc[leveloffset=1]
-
-//== Network Connectivity & Configuration
-
-include::connection-ttl.adoc[leveloffset=1]
-include::configuring-transports.adoc[leveloffset=1]
-include::flow-control.adoc[leveloffset=1]
-
-//== Customizing Broker Behavior
-
-include::broker-plugins.adoc[leveloffset=1]
-include::intercepting-operations.adoc[leveloffset=1]
-
-//== Miscellaneous
-
-include::config-reload.adoc[leveloffset=1]
-include::slow-consumers.adoc[leveloffset=1]
-include::critical-analysis.adoc[leveloffset=1]
-include::transaction-config.adoc[leveloffset=1]
-include::send-guarantees.adoc[leveloffset=1]
-include::graceful-shutdown.adoc[leveloffset=1]
-include::web-server.adoc[leveloffset=1]
-include::logging.adoc[leveloffset=1]
-include::embedding-artemis.adoc[leveloffset=1]
-include::karaf.adoc[leveloffset=1]
-include::tomcat.adoc[leveloffset=1]
-include::cdi-integration.adoc[leveloffset=1]
-include::copied-message-properties.adoc[leveloffset=1]
-include::maven-plugin.adoc[leveloffset=1]
-include::unit-testing.adoc[leveloffset=1]
-include::resource-adapter.adoc[leveloffset=1]
-include::configuration-index.adoc[leveloffset=1]
-include::examples.adoc[leveloffset=1]
-
-//== Addendum
-include::versions.adoc[leveloffset=1]
-include::notice.adoc[leveloffset=1]
diff --git a/docs/user-manual/antora.yml b/docs/user-manual/antora.yml
new file mode 100644
index 00000000000..5d3fe6ae8cb
--- /dev/null
+++ b/docs/user-manual/antora.yml
@@ -0,0 +1,6 @@
+name: user-manual
+title: User Manual
+version: true # this means the version will reflect the tag or branch name
+start_page: ROOT:index.adoc
+nav:
+ - modules/ROOT/nav.adoc
\ No newline at end of file
diff --git a/docs/user-manual/images/favicon.png b/docs/user-manual/images/favicon.png
deleted file mode 100644
index 87026732222..00000000000
Binary files a/docs/user-manual/images/favicon.png and /dev/null differ
diff --git a/docs/user-manual/index.adoc b/docs/user-manual/index.adoc
deleted file mode 100644
index 8f4e76bc946..00000000000
--- a/docs/user-manual/index.adoc
+++ /dev/null
@@ -1,155 +0,0 @@
-////
-This is the landing page for the multi-page HTML manual.
-It *links* to all chapters following the same basic pattern as _book.adoc. These two documents should stay in sync.
-////
-:idprefix:
-:idseparator: -
-:docinfo: shared
-
-image::images/artemis_text_black_small.png[align="center"]
-
-[.text-center]
-*User manual*
-
-[.text-center]
-*{project-version}*
-
-== Overview
-* xref:project-info.adoc#general-project-information[General Project Information]
-* xref:preface.adoc#why-use-{project-name-full-url}[Why use {project-name-full}?]
-
-== Upgrading
-* xref:upgrading.adoc#upgrading-the-broker[Basic Upgrade Instructions]
-
-== Concepts
-* xref:messaging-concepts.adoc#messaging-concepts[Messaging Concepts]
-* xref:architecture.adoc#core-architecture[Core Architecture]
-
-== Protocols & APIs
-
-* xref:protocols-interoperability.adoc#protocols-and-interoperability[Protocols and Interoperability]
-* xref:amqp.adoc#amqp[AMQP]
-* xref:stomp.adoc#stomp[STOMP]
-* xref:mqtt.adoc#mqtt[MQTT]
-* xref:openwire.adoc#openwire[OpenWire]
-* xref:core.adoc#using-core[Using Core]
-** xref:client-failover.adoc#core-client-failover[Core Client Failover]
-* xref:jms-core-mapping.adoc#mapping-jms-concepts-to-the-core-api[Mapping JMS Concepts to the Core API]
-* xref:using-jms.adoc#using-jms-or-jakarta-messaging[Using JMS or Jakarta Messaging]
-** xref:pre-acknowledge.adoc#extra-acknowledge-modes[Extra Acknowledge Modes]
-* xref:proxy-protocol.adoc#proxy-protocol[PROXY Protocol]
-
-== Getting Started
-
-* xref:docker.adoc#docker[Docker]
-* xref:using-server.adoc#using-the-server[Using the Server]
-* xref:using-cli.adoc#command-line-interface[Using the Command-Line Interface]
-* xref:client-classpath.adoc#the-client-classpath[JMS & Jakarta Client Classpath]
-
-== Addressing
-
-* xref:address-model.adoc#address-model[Address Model]
-* xref:address-settings.adoc#address-settings[Address Settings]
-* xref:wildcard-syntax.adoc#wildcard-syntax[Wildcard Syntax]
-* xref:wildcard-routing.adoc#routing-messages-with-wild-cards[Wildcard Routing]
-* xref:diverts.adoc#diverting-and-splitting-message-flows[Splitting and Diverting Message Flow]
-* xref:transformers.adoc#transformers[Transforming Messages]
-* xref:filter-expressions.adoc#filter-expressions[Filter Expressions]
-
-== Management and Monitoring
-
-* xref:management.adoc#management[Management]
-* xref:management-console.adoc#management-console[Web Management Console]
-* xref:metrics.adoc#metrics[Metrics]
-
-== Broker-to-Broker Connectivity
-
-* xref:core-bridges.adoc#core-bridges[Core Bridges]
-* xref:clusters.adoc#clusters[Clustering]
-* xref:lock-coordination.adoc#lock-coordination[Lock Coordination / HA with Mirroring]
-* xref:ha.adoc#high-availability-and-failover[High Availability & Failover]
-** xref:network-isolation.adoc#network-isolation-split-brain[Network Isolation]
-** xref:restart-sequence.adoc#restart-sequence[Restart Sequence]
-** xref:activation-tools.adoc#activation-sequence-tools[Activation Tools]
-* xref:amqp-broker-connections.adoc#broker-connections[AMQP Broker Connections]
-** xref:amqp-broker-connections.adoc#amqp-server-connections[Server Connections]
-** xref:amqp-broker-connections.adoc#mirroring[Mirroring]
-** xref:amqp-broker-connections.adoc#federation[AMQP Federation]
-*** xref:amqp-broker-connections.adoc#address-federation[Address Federation]
-*** xref:amqp-broker-connections.adoc#queue-federation[Queue Federation]
-** xref:amqp-broker-connections.adoc#bridges[AMQP Bridges]
-*** xref:amqp-broker-connections.adoc#bridging-from-remote-addresses-and-queues[Bridging From a remote]
-*** xref:amqp-broker-connections.adoc#bridging-to-remote-addresses-and-queues[Bridging To a remote]
-* xref:federation.adoc#federation[Core Federation]
-** xref:federation-address.adoc#address-federation[Address Federation]
-** xref:federation-queue.adoc#queue-federation[Queue Federation]
-* xref:connection-routers.adoc#connection-routers[Routing Connections]
-* xref:jms-bridge.adoc#the-jms-bridge[JMS Bridge]
-
-== Security
-
-* xref:threat-model.adoc#threat-model[Threat Model]
-* xref:security.adoc#authentication-authorization[Authentication & Authorization]
-* xref:masking-passwords.adoc#masking-passwords[Masking Passwords]
-* xref:resource-limits.adoc#resource-limits[Limiting Resource Utilization]
-
-== Performance
-
-* xref:perf-tuning.adoc#performance-tuning[Tuning]
-* xref:perf-tools.adoc#performance-tools[Tools]
-* xref:thread-pooling.adoc#thread-management[Thread Management]
-
-== Advanced Use-cases
-
-* xref:scheduled-messages.adoc#scheduled-messages[Scheduled Messages]
-* xref:last-value-queues.adoc#last-value-queues[Last-value Queues]
-* xref:non-destructive-queues.adoc#non-destructive-queues[Non-destructive Queues]
-* xref:ring-queues.adoc#ring-queue[Ring Queues]
-* xref:retroactive-addresses.adoc#retroactive-addresses[Retroactive Addresses]
-* xref:exclusive-queues.adoc#exclusive-queues[Exclusive Queues]
-* xref:message-grouping.adoc#message-grouping[Message Grouping]
-* xref:consumer-priority.adoc#consumer-priority[Consumer Priority]
-* xref:message-expiry.adoc#message-expiry[Message Expiry]
-* xref:large-messages.adoc#large-messages[Large Messages]
-* xref:paging.adoc#paging[Paging]
-* xref:duplicate-detection.adoc#duplicate-message-detection[Detecting Duplicate Messages]
-* xref:undelivered-messages.adoc#message-redelivery-and-undelivered-messages[Message Redelivery and Undelivered Messages]
-
-== Data Storage
-* xref:persistence.adoc#persistence[Persistence]
-* xref:data-tools.adoc#data-tools[Data Tools]
-* xref:libaio.adoc#libaio-native-libraries[Libaio Native Libraries]
-
-== Network Connectivity & Configuration
-
-* xref:connection-ttl.adoc#detecting-dead-connections[Detecting Dead Connections]
-* xref:configuring-transports.adoc#configuring-the-transport[Configuring Network Transports]
-* xref:flow-control.adoc#flow-control[Flow Control for Remote Core Clients]
-
-== Customizing Broker Behavior
-
-* xref:broker-plugins.adoc#plugin-support[Broker Plugins]
-* xref:intercepting-operations.adoc#intercepting-operations[Intercepting Network Operations]
-
-== Miscellaneous
-
-* xref:config-reload.adoc#configuration-reload[Reloading Configuration]
-* xref:slow-consumers.adoc#detecting-slow-consumers[Detecting Slow Consumers]
-* xref:critical-analysis.adoc#critical-analysis-of-the-broker[Critical Analyzer]
-* xref:transaction-config.adoc#resource-manager-configuration[JTA Resource Manager Configuration]
-* xref:send-guarantees.adoc#guarantees-of-sends-and-commits[Guarantees of Sends and Commits]
-* xref:graceful-shutdown.adoc#graceful-server-shutdown[Graceful Server Shutdown]
-* xref:web-server.adoc#embedded-web-server[Configuring & Managing the Embedded Web Server]
-* xref:logging.adoc#logging[Logging]
-* xref:embedding-artemis.adoc[Embedding {project-name-full}]
-* xref:karaf.adoc#apache-karaf-integration[Apache Karaf Integration]
-* xref:tomcat.adoc#apache-tomcat-support[Apache Tomcat Support]
-* xref:cdi-integration.adoc#cdi-integration[CDI Integration]
-* xref:copied-message-properties.adoc#properties-for-copied-messages[Properties for Copied Messages]
-* xref:maven-plugin.adoc#maven-plugins[Maven Plugin]
-* xref:unit-testing.adoc#unit-testing[Unit Testing]
-* xref:resource-adapter.adoc#jca-resource-adapter[JCA Resource Adapter]
-* xref:configuration-index.adoc#configuration-reference[Configuration Index]
-* xref:examples.adoc#examples[Examples]
-* xref:versions.adoc#version-history[Version History]
-* xref:notice.adoc#legal-notice[Legal Notice]
diff --git a/docs/user-manual/images/30K.png b/docs/user-manual/modules/ROOT/assets/images/30K.png
similarity index 100%
rename from docs/user-manual/images/30K.png
rename to docs/user-manual/modules/ROOT/assets/images/30K.png
diff --git a/docs/user-manual/images/90K.png b/docs/user-manual/modules/ROOT/assets/images/90K.png
similarity index 100%
rename from docs/user-manual/images/90K.png
rename to docs/user-manual/modules/ROOT/assets/images/90K.png
diff --git a/docs/user-manual/images/amqp-federation-address-bi-directional.png b/docs/user-manual/modules/ROOT/assets/images/amqp-federation-address-bi-directional.png
similarity index 100%
rename from docs/user-manual/images/amqp-federation-address-bi-directional.png
rename to docs/user-manual/modules/ROOT/assets/images/amqp-federation-address-bi-directional.png
diff --git a/docs/user-manual/images/amqp-federation-address-concept.png b/docs/user-manual/modules/ROOT/assets/images/amqp-federation-address-concept.png
similarity index 100%
rename from docs/user-manual/images/amqp-federation-address-concept.png
rename to docs/user-manual/modules/ROOT/assets/images/amqp-federation-address-concept.png
diff --git a/docs/user-manual/images/amqp-federation-address-hub-spoke.png b/docs/user-manual/modules/ROOT/assets/images/amqp-federation-address-hub-spoke.png
similarity index 100%
rename from docs/user-manual/images/amqp-federation-address-hub-spoke.png
rename to docs/user-manual/modules/ROOT/assets/images/amqp-federation-address-hub-spoke.png
diff --git a/docs/user-manual/images/amqp-federation-address-mesh.png b/docs/user-manual/modules/ROOT/assets/images/amqp-federation-address-mesh.png
similarity index 100%
rename from docs/user-manual/images/amqp-federation-address-mesh.png
rename to docs/user-manual/modules/ROOT/assets/images/amqp-federation-address-mesh.png
diff --git a/docs/user-manual/images/amqp-federation-address-ring.png b/docs/user-manual/modules/ROOT/assets/images/amqp-federation-address-ring.png
similarity index 100%
rename from docs/user-manual/images/amqp-federation-address-ring.png
rename to docs/user-manual/modules/ROOT/assets/images/amqp-federation-address-ring.png
diff --git a/docs/user-manual/images/amqp-federation-queue-bi-directional.png b/docs/user-manual/modules/ROOT/assets/images/amqp-federation-queue-bi-directional.png
similarity index 100%
rename from docs/user-manual/images/amqp-federation-queue-bi-directional.png
rename to docs/user-manual/modules/ROOT/assets/images/amqp-federation-queue-bi-directional.png
diff --git a/docs/user-manual/images/amqp-federation-queue-concept.png b/docs/user-manual/modules/ROOT/assets/images/amqp-federation-queue-concept.png
similarity index 100%
rename from docs/user-manual/images/amqp-federation-queue-concept.png
rename to docs/user-manual/modules/ROOT/assets/images/amqp-federation-queue-concept.png
diff --git a/docs/user-manual/images/amqp-federation-queue-simple-lb.png b/docs/user-manual/modules/ROOT/assets/images/amqp-federation-queue-simple-lb.png
similarity index 100%
rename from docs/user-manual/images/amqp-federation-queue-simple-lb.png
rename to docs/user-manual/modules/ROOT/assets/images/amqp-federation-queue-simple-lb.png
diff --git a/docs/user-manual/images/amqp-federation-queue-with-hop.png b/docs/user-manual/modules/ROOT/assets/images/amqp-federation-queue-with-hop.png
similarity index 100%
rename from docs/user-manual/images/amqp-federation-queue-with-hop.png
rename to docs/user-manual/modules/ROOT/assets/images/amqp-federation-queue-with-hop.png
diff --git a/docs/user-manual/images/anycast.png b/docs/user-manual/modules/ROOT/assets/images/anycast.png
similarity index 100%
rename from docs/user-manual/images/anycast.png
rename to docs/user-manual/modules/ROOT/assets/images/anycast.png
diff --git a/docs/user-manual/images/architecture1.jpg b/docs/user-manual/modules/ROOT/assets/images/architecture1.jpg
similarity index 100%
rename from docs/user-manual/images/architecture1.jpg
rename to docs/user-manual/modules/ROOT/assets/images/architecture1.jpg
diff --git a/docs/user-manual/images/architecture2.jpg b/docs/user-manual/modules/ROOT/assets/images/architecture2.jpg
similarity index 100%
rename from docs/user-manual/images/architecture2.jpg
rename to docs/user-manual/modules/ROOT/assets/images/architecture2.jpg
diff --git a/docs/user-manual/images/architecture3.jpg b/docs/user-manual/modules/ROOT/assets/images/architecture3.jpg
similarity index 100%
rename from docs/user-manual/images/architecture3.jpg
rename to docs/user-manual/modules/ROOT/assets/images/architecture3.jpg
diff --git a/docs/user-manual/images/artemis_text_black_small.png b/docs/user-manual/modules/ROOT/assets/images/artemis_text_black_small.png
similarity index 100%
rename from docs/user-manual/images/artemis_text_black_small.png
rename to docs/user-manual/modules/ROOT/assets/images/artemis_text_black_small.png
diff --git a/docs/user-manual/images/artemis_text_white_small.png b/docs/user-manual/modules/ROOT/assets/images/artemis_text_white_small.png
similarity index 100%
rename from docs/user-manual/images/artemis_text_white_small.png
rename to docs/user-manual/modules/ROOT/assets/images/artemis_text_white_small.png
diff --git a/docs/user-manual/images/broker-connection-DR.jpg b/docs/user-manual/modules/ROOT/assets/images/broker-connection-DR.jpg
similarity index 100%
rename from docs/user-manual/images/broker-connection-DR.jpg
rename to docs/user-manual/modules/ROOT/assets/images/broker-connection-DR.jpg
diff --git a/docs/user-manual/images/broker-connection-failover.jpg b/docs/user-manual/modules/ROOT/assets/images/broker-connection-failover.jpg
similarity index 100%
rename from docs/user-manual/images/broker-connection-failover.jpg
rename to docs/user-manual/modules/ROOT/assets/images/broker-connection-failover.jpg
diff --git a/docs/user-manual/images/connection_router_workflow.png b/docs/user-manual/modules/ROOT/assets/images/connection_router_workflow.png
similarity index 100%
rename from docs/user-manual/images/connection_router_workflow.png
rename to docs/user-manual/modules/ROOT/assets/images/connection_router_workflow.png
diff --git a/docs/user-manual/images/console-login.png b/docs/user-manual/modules/ROOT/assets/images/console-login.png
similarity index 100%
rename from docs/user-manual/images/console-login.png
rename to docs/user-manual/modules/ROOT/assets/images/console-login.png
diff --git a/docs/user-manual/images/federated-queue-symmetric.gif b/docs/user-manual/modules/ROOT/assets/images/federated-queue-symmetric.gif
similarity index 100%
rename from docs/user-manual/images/federated-queue-symmetric.gif
rename to docs/user-manual/modules/ROOT/assets/images/federated-queue-symmetric.gif
diff --git a/docs/user-manual/images/federated-queue-symmetric.png b/docs/user-manual/modules/ROOT/assets/images/federated-queue-symmetric.png
similarity index 100%
rename from docs/user-manual/images/federated-queue-symmetric.png
rename to docs/user-manual/modules/ROOT/assets/images/federated-queue-symmetric.png
diff --git a/docs/user-manual/images/federated-queue.gif b/docs/user-manual/modules/ROOT/assets/images/federated-queue.gif
similarity index 100%
rename from docs/user-manual/images/federated-queue.gif
rename to docs/user-manual/modules/ROOT/assets/images/federated-queue.gif
diff --git a/docs/user-manual/images/federated-world-wide-mesh.png b/docs/user-manual/modules/ROOT/assets/images/federated-world-wide-mesh.png
similarity index 100%
rename from docs/user-manual/images/federated-world-wide-mesh.png
rename to docs/user-manual/modules/ROOT/assets/images/federated-world-wide-mesh.png
diff --git a/docs/user-manual/images/federation-address-complete-graph.png b/docs/user-manual/modules/ROOT/assets/images/federation-address-complete-graph.png
similarity index 100%
rename from docs/user-manual/images/federation-address-complete-graph.png
rename to docs/user-manual/modules/ROOT/assets/images/federation-address-complete-graph.png
diff --git a/docs/user-manual/images/federation-address-fan-out.png b/docs/user-manual/modules/ROOT/assets/images/federation-address-fan-out.png
similarity index 100%
rename from docs/user-manual/images/federation-address-fan-out.png
rename to docs/user-manual/modules/ROOT/assets/images/federation-address-fan-out.png
diff --git a/docs/user-manual/images/federation-address-ring.png b/docs/user-manual/modules/ROOT/assets/images/federation-address-ring.png
similarity index 100%
rename from docs/user-manual/images/federation-address-ring.png
rename to docs/user-manual/modules/ROOT/assets/images/federation-address-ring.png
diff --git a/docs/user-manual/images/federation-address-symetric.png b/docs/user-manual/modules/ROOT/assets/images/federation-address-symetric.png
similarity index 100%
rename from docs/user-manual/images/federation-address-symetric.png
rename to docs/user-manual/modules/ROOT/assets/images/federation-address-symetric.png
diff --git a/docs/user-manual/images/federation-address.png b/docs/user-manual/modules/ROOT/assets/images/federation-address.png
similarity index 100%
rename from docs/user-manual/images/federation-address.png
rename to docs/user-manual/modules/ROOT/assets/images/federation-address.png
diff --git a/docs/user-manual/images/ha-colocated.png b/docs/user-manual/modules/ROOT/assets/images/ha-colocated.png
similarity index 100%
rename from docs/user-manual/images/ha-colocated.png
rename to docs/user-manual/modules/ROOT/assets/images/ha-colocated.png
diff --git a/docs/user-manual/images/ha-replicated-store.png b/docs/user-manual/modules/ROOT/assets/images/ha-replicated-store.png
similarity index 100%
rename from docs/user-manual/images/ha-replicated-store.png
rename to docs/user-manual/modules/ROOT/assets/images/ha-replicated-store.png
diff --git a/docs/user-manual/images/ha-scaledown.png b/docs/user-manual/modules/ROOT/assets/images/ha-scaledown.png
similarity index 100%
rename from docs/user-manual/images/ha-scaledown.png
rename to docs/user-manual/modules/ROOT/assets/images/ha-scaledown.png
diff --git a/docs/user-manual/images/ha-shared-store.png b/docs/user-manual/modules/ROOT/assets/images/ha-shared-store.png
similarity index 100%
rename from docs/user-manual/images/ha-shared-store.png
rename to docs/user-manual/modules/ROOT/assets/images/ha-shared-store.png
diff --git a/docs/user-manual/images/hot_test.png b/docs/user-manual/modules/ROOT/assets/images/hot_test.png
similarity index 100%
rename from docs/user-manual/images/hot_test.png
rename to docs/user-manual/modules/ROOT/assets/images/hot_test.png
diff --git a/docs/user-manual/images/lock-coordination-example.png b/docs/user-manual/modules/ROOT/assets/images/lock-coordination-example.png
similarity index 100%
rename from docs/user-manual/images/lock-coordination-example.png
rename to docs/user-manual/modules/ROOT/assets/images/lock-coordination-example.png
diff --git a/docs/user-manual/images/management_api_redirect_sequence.png b/docs/user-manual/modules/ROOT/assets/images/management_api_redirect_sequence.png
similarity index 100%
rename from docs/user-manual/images/management_api_redirect_sequence.png
rename to docs/user-manual/modules/ROOT/assets/images/management_api_redirect_sequence.png
diff --git a/docs/user-manual/images/multicast.png b/docs/user-manual/modules/ROOT/assets/images/multicast.png
similarity index 100%
rename from docs/user-manual/images/multicast.png
rename to docs/user-manual/modules/ROOT/assets/images/multicast.png
diff --git a/docs/user-manual/images/native_redirect_sequence.png b/docs/user-manual/modules/ROOT/assets/images/native_redirect_sequence.png
similarity index 100%
rename from docs/user-manual/images/native_redirect_sequence.png
rename to docs/user-manual/modules/ROOT/assets/images/native_redirect_sequence.png
diff --git a/docs/user-manual/images/replay-method.png b/docs/user-manual/modules/ROOT/assets/images/replay-method.png
similarity index 100%
rename from docs/user-manual/images/replay-method.png
rename to docs/user-manual/modules/ROOT/assets/images/replay-method.png
diff --git a/docs/user-manual/images/test.png b/docs/user-manual/modules/ROOT/assets/images/test.png
similarity index 100%
rename from docs/user-manual/images/test.png
rename to docs/user-manual/modules/ROOT/assets/images/test.png
diff --git a/docs/user-manual/modules/ROOT/nav.adoc b/docs/user-manual/modules/ROOT/nav.adoc
new file mode 100644
index 00000000000..431b6517269
--- /dev/null
+++ b/docs/user-manual/modules/ROOT/nav.adoc
@@ -0,0 +1,114 @@
+* Overview
+** xref:project-info.adoc#general-project-information[General Project Information]
+** xref:preface.adoc#why-use-{project-name-full-url}[Why use {project-name-full}?]
+* Upgrading
+** xref:versions.adoc#versions[Version History]
+** xref:upgrading.adoc#upgrading-the-broker[Basic Upgrade Instructions]
+* Concepts
+** xref:messaging-concepts.adoc#messaging-concepts[Messaging Concepts]
+** xref:architecture.adoc#core-architecture[Core Architecture]
+* Protocols & APIs
+** xref:protocols-interoperability.adoc#protocols-and-interoperability[Protocols and Interoperability]
+** xref:amqp.adoc#amqp[AMQP]
+** xref:stomp.adoc#stomp[STOMP]
+** xref:mqtt.adoc#mqtt[MQTT]
+** xref:openwire.adoc#openwire[OpenWire]
+** xref:core.adoc#using-core[Using Core]
+*** xref:client-failover.adoc#core-client-failover[Core Client Failover]
+** xref:jms-core-mapping.adoc#mapping-jms-concepts-to-the-core-api[Mapping JMS Concepts to the Core API]
+** xref:using-jms.adoc#using-jms-or-jakarta-messaging[Using JMS or Jakarta Messaging]
+*** xref:pre-acknowledge.adoc#extra-acknowledge-modes[Extra Acknowledge Modes]
+** xref:proxy-protocol.adoc#proxy-protocol[PROXY Protocol]
+* Getting Started
+** xref:docker.adoc#docker[Docker]
+** xref:using-server.adoc#using-the-server[Using the Server]
+** xref:using-cli.adoc#command-line-interface[Using the Command-Line Interface]
+** xref:client-classpath.adoc#the-client-classpath[JMS & Jakarta Client Classpath]
+* Addressing
+** xref:address-model.adoc#address-model[Address Model]
+** xref:address-settings.adoc#address-settings[Address Settings]
+** xref:wildcard-syntax.adoc#wildcard-syntax[Wildcard Syntax]
+** xref:wildcard-routing.adoc#routing-messages-with-wild-cards[Wildcard Routing]
+** xref:diverts.adoc#diverting-and-splitting-message-flows[Splitting and Diverting Message Flow]
+** xref:transformers.adoc#transformers[Transforming Messages]
+** xref:filter-expressions.adoc#filter-expressions[Filter Expressions]
+* Management and Monitoring
+** xref:management.adoc#management[Management]
+** xref:management-console.adoc#management-console[Web Management Console]
+** xref:metrics.adoc#metrics[Metrics]
+* Broker-to-Broker Connectivity
+** xref:core-bridges.adoc#core-bridges[Core Bridges]
+** xref:clusters.adoc#clusters[Clustering]
+** xref:lock-coordination.adoc#lock-coordination-ha-with-mirroring[Lock Coordination / HA with Mirroring]
+** xref:ha.adoc#high-availability-and-failover[High Availability & Failover]
+*** xref:network-isolation.adoc#network-isolation-split-brain[Network Isolation]
+*** xref:restart-sequence.adoc#restart-sequence[Restart Sequence]
+*** xref:activation-tools.adoc#activation-sequence-tools[Activation Tools]
+** xref:amqp-broker-connections.adoc#broker-connections[AMQP Broker Connections]
+*** xref:amqp-broker-connections.adoc#amqp-server-connections[Server Connections]
+*** xref:amqp-broker-connections.adoc#mirroring[Mirroring]
+*** xref:amqp-broker-connections.adoc#federation[AMQP Federation]
+**** xref:amqp-broker-connections.adoc#address-federation[Address Federation]
+**** xref:amqp-broker-connections.adoc#queue-federation[Queue Federation]
+*** xref:amqp-broker-connections.adoc#bridges[AMQP Bridges]
+**** xref:amqp-broker-connections.adoc#bridging-from-remote-addresses-and-queues[Bridging From a remote]
+**** xref:amqp-broker-connections.adoc#bridging-to-remote-addresses-and-queues[Bridging To a remote]
+** xref:federation.adoc#federation[Core Federation]
+*** xref:federation-address.adoc#address-federation[Address Federation]
+*** xref:federation-queue.adoc#queue-federation[Queue Federation]
+** xref:connection-routers.adoc#connection-routers[Routing Connections]
+** xref:jms-bridge.adoc#the-jms-bridge[JMS Bridge]
+* Security
+** xref:threat-model.adoc#threat-model[Threat Model]
+** xref:security.adoc#authentication-authorization[Authentication & Authorization]
+** xref:masking-passwords.adoc#masking-passwords[Masking Passwords]
+** xref:resource-limits.adoc#resource-limits[Limiting Resource Utilization]
+* Performance
+** xref:perf-tuning.adoc#performance-tuning[Tuning]
+** xref:perf-tools.adoc#performance-tools[Tools]
+** xref:thread-pooling.adoc#thread-management[Thread Management]
+* Advanced Use-cases
+** xref:scheduled-messages.adoc#scheduled-messages[Scheduled Messages]
+** xref:last-value-queues.adoc#last-value-queues[Last-value Queues]
+** xref:non-destructive-queues.adoc#non-destructive-queues[Non-destructive Queues]
+** xref:ring-queues.adoc#ring-queue[Ring Queues]
+** xref:retroactive-addresses.adoc#retroactive-addresses[Retroactive Addresses]
+** xref:exclusive-queues.adoc#exclusive-queues[Exclusive Queues]
+** xref:message-grouping.adoc#message-grouping[Message Grouping]
+** xref:consumer-priority.adoc#consumer-priority[Consumer Priority]
+** xref:message-expiry.adoc#message-expiry[Message Expiry]
+** xref:large-messages.adoc#large-messages[Large Messages]
+** xref:paging.adoc#paging[Paging]
+** xref:duplicate-detection.adoc#duplicate-message-detection[Detecting Duplicate Messages]
+** xref:undelivered-messages.adoc#message-redelivery-and-undelivered-messages[Message Redelivery and Undelivered Messages]
+* Data Storage
+** xref:persistence.adoc#persistence[Persistence]
+** xref:data-tools.adoc#data-tools[Data Tools]
+** xref:libaio.adoc#libaio-native-libraries[Libaio Native Libraries]
+* Network Connectivity & Configuration
+** xref:connection-ttl.adoc#detecting-dead-connections[Detecting Dead Connections]
+** xref:configuring-transports.adoc#configuring-the-transport[Configuring Network Transports]
+** xref:flow-control.adoc#flow-control[Flow Control for Remote Core Clients]
+* Customizing Broker Behavior
+** xref:broker-plugins.adoc#plugin-support[Broker Plugins]
+** xref:intercepting-operations.adoc#intercepting-operations[Intercepting Network Operations]
+* Miscellaneous
+** xref:config-reload.adoc#configuration-reload[Reloading Configuration]
+** xref:slow-consumers.adoc#detecting-slow-consumers[Detecting Slow Consumers]
+** xref:critical-analysis.adoc#critical-analysis-of-the-broker[Critical Analyzer]
+** xref:transaction-config.adoc#resource-manager-configuration[JTA Resource Manager Configuration]
+** xref:send-guarantees.adoc#guarantees-of-sends-and-commits[Guarantees of Sends and Commits]
+** xref:graceful-shutdown.adoc#graceful-server-shutdown[Graceful Server Shutdown]
+** xref:web-server.adoc#embedded-web-server[Configuring & Managing the Embedded Web Server]
+** xref:logging.adoc#logging[Logging]
+** xref:embedding-artemis.adoc[Embedding {project-name-full}]
+** xref:karaf.adoc#apache-karaf-integration[Apache Karaf Integration]
+** xref:tomcat.adoc#apache-tomcat-support[Apache Tomcat Support]
+** xref:cdi-integration.adoc#cdi-integration[CDI Integration]
+** xref:copied-message-properties.adoc#properties-for-copied-messages[Properties for Copied Messages]
+** xref:maven-plugin.adoc#maven-plugins[Maven Plugin]
+** xref:unit-testing.adoc#unit-testing[Unit Testing]
+** xref:resource-adapter.adoc#jca-resource-adapter[JCA Resource Adapter]
+** xref:configuration-index.adoc#configuration-reference[Configuration Index]
+** xref:examples.adoc#examples[Examples]
+* xref:notice.adoc#legal-notice[Legal Notice]
diff --git a/docs/user-manual/02-27-00-scripts-profiles-windows.diff b/docs/user-manual/modules/ROOT/pages/02-27-00-scripts-profiles-windows.diff
similarity index 100%
rename from docs/user-manual/02-27-00-scripts-profiles-windows.diff
rename to docs/user-manual/modules/ROOT/pages/02-27-00-scripts-profiles-windows.diff
diff --git a/docs/user-manual/02-27-00-scripts-profiles.diff b/docs/user-manual/modules/ROOT/pages/02-27-00-scripts-profiles.diff
similarity index 100%
rename from docs/user-manual/02-27-00-scripts-profiles.diff
rename to docs/user-manual/modules/ROOT/pages/02-27-00-scripts-profiles.diff
diff --git a/docs/user-manual/_auto-queue-creation-note.adoc b/docs/user-manual/modules/ROOT/pages/_auto-queue-creation-note.adoc
similarity index 100%
rename from docs/user-manual/_auto-queue-creation-note.adoc
rename to docs/user-manual/modules/ROOT/pages/_auto-queue-creation-note.adoc
diff --git a/docs/user-manual/_bridge-credentials-note.adoc b/docs/user-manual/modules/ROOT/pages/_bridge-credentials-note.adoc
similarity index 100%
rename from docs/user-manual/_bridge-credentials-note.adoc
rename to docs/user-manual/modules/ROOT/pages/_bridge-credentials-note.adoc
diff --git a/docs/user-manual/_downstream-authorization-sample.adoc b/docs/user-manual/modules/ROOT/pages/_downstream-authorization-sample.adoc
similarity index 100%
rename from docs/user-manual/_downstream-authorization-sample.adoc
rename to docs/user-manual/modules/ROOT/pages/_downstream-authorization-sample.adoc
diff --git a/docs/user-manual/_downstream-authorization.adoc b/docs/user-manual/modules/ROOT/pages/_downstream-authorization.adoc
similarity index 100%
rename from docs/user-manual/_downstream-authorization.adoc
rename to docs/user-manual/modules/ROOT/pages/_downstream-authorization.adoc
diff --git a/docs/user-manual/_failover-on-shutdown.adoc b/docs/user-manual/modules/ROOT/pages/_failover-on-shutdown.adoc
similarity index 100%
rename from docs/user-manual/_failover-on-shutdown.adoc
rename to docs/user-manual/modules/ROOT/pages/_failover-on-shutdown.adoc
diff --git a/docs/user-manual/_properties-login-module-warning.adoc b/docs/user-manual/modules/ROOT/pages/_properties-login-module-warning.adoc
similarity index 100%
rename from docs/user-manual/_properties-login-module-warning.adoc
rename to docs/user-manual/modules/ROOT/pages/_properties-login-module-warning.adoc
diff --git a/docs/user-manual/activation-tools.adoc b/docs/user-manual/modules/ROOT/pages/activation-tools.adoc
similarity index 100%
rename from docs/user-manual/activation-tools.adoc
rename to docs/user-manual/modules/ROOT/pages/activation-tools.adoc
diff --git a/docs/user-manual/address-model.adoc b/docs/user-manual/modules/ROOT/pages/address-model.adoc
similarity index 99%
rename from docs/user-manual/address-model.adoc
rename to docs/user-manual/modules/ROOT/pages/address-model.adoc
index f29cf21c6ac..de29b996d2b 100644
--- a/docs/user-manual/address-model.adoc
+++ b/docs/user-manual/modules/ROOT/pages/address-model.adoc
@@ -86,7 +86,7 @@ Multiple Java applications sharing a JMS queue is a classic example of this use-
In this use-case the broker is configured, for example, with an address, `address.foo` using the `anycast` routing type with just one queue, `q1`.
When a producer sends a message to `address.foo` it is then routed to `q1` and finally dispatched to one of the consumers.
-image:images/anycast.png[Anycast] Figure 1.
+image:anycast.png[Anycast] Figure 1.
Anycast
This is what the configuration for this use-case would look like in `etc/broker.xml`:
@@ -125,7 +125,7 @@ MQTT subscriptions is another supported example of multicast semantics.
In this use-case the broker is configured with an address, `address.foo` using the `multicast` routing type with two queues, `q1` & `q2`.
When a producer sends a message to `address.foo` it is then routed to _both_ `q1` & `q2` so that ultimately both consumers receive the same messages.
-image:images/multicast.png[Multicast] Figure 2.
+image:multicast.png[Multicast] Figure 2.
Multicast
This is what the configuration for this use-case would look like in `etc/broker.xml`:
diff --git a/docs/user-manual/address-settings.adoc b/docs/user-manual/modules/ROOT/pages/address-settings.adoc
similarity index 100%
rename from docs/user-manual/address-settings.adoc
rename to docs/user-manual/modules/ROOT/pages/address-settings.adoc
diff --git a/docs/user-manual/amqp-address-federation.adoc b/docs/user-manual/modules/ROOT/pages/amqp-address-federation.adoc
similarity index 96%
rename from docs/user-manual/amqp-address-federation.adoc
rename to docs/user-manual/modules/ROOT/pages/amqp-address-federation.adoc
index 05261998290..536e1f75dc7 100644
--- a/docs/user-manual/amqp-address-federation.adoc
+++ b/docs/user-manual/modules/ROOT/pages/amqp-address-federation.adoc
@@ -13,7 +13,7 @@ Once a message arrives at the federation address consumer on the initiating brok
Address federation can be configured to operate in a single direction between peers or can configured to operate in both directions between peers allowing message to flow in both directions delivering messages to consumers on either broker that were sent to the matching address on the opposing broker instance.
For a more complete reference of the AMQP Address Federation configuration elements refer to the xref:amqp-federation-configuration-glossary.adoc[AMQP Federation Configuration Glossary]
-image::images/amqp-federation-address-concept.png[]
+image::amqp-federation-address-concept.png[]
== Common Address Federation Topologies
@@ -24,7 +24,7 @@ The sections that follow discuss some common address federation topologies and s
This is a common case where consumers on either broker should receive messages sent from producers both on the local broker and on the remote broker.
Messages only cross the federation connection if a consumer exists on the remote address otherwise messages do not leave the local broker.
-image::images/amqp-federation-address-bi-directional.png[]
+image::amqp-federation-address-bi-directional.png[]
This configuration can be setup by adding a federation policy on both broker instances that configure the address to federate and a connection URI pointing to the opposing broker.
@@ -66,7 +66,7 @@ In either of these two configurations the federation implementation will protect
An expansion of the previous configuration is a three broker mesh where each broker creates an address federation for the same address on each of the other two brokers when local demand is present.
In this scenario any message published on an address on one of the brokers will be sent to consumers on that address that are active on the other two brokers.
-image::images/amqp-federation-address-mesh.png[]
+image::amqp-federation-address-mesh.png[]
Because this configuration now creates a loop with more than two brokers the configuration must add a `max-hops` value to ensure that the messages sent to one of the brokers does not propagate beyond the two closest neighbors in the loop otherwise the messages would loop forever amongst the three brokers.
@@ -98,7 +98,7 @@ Another less common configuration is a good demonstration of a case where using
This is also known as a ring and involves creating an address federation configuration that connects to a neighboring broker amongst three or more broker instances.
In this scenario the configuration must set a `max-hops` value of N-1 where N is the number of brokers in the ring.
-image::images/amqp-federation-address-ring.png[]
+image::amqp-federation-address-ring.png[]
To achieve this configuration each broker would need to add a broker connection for its neighbor as follows.
Note the `max-hops=4` in this case since there are five brokers in the diagram, this ensures a federated message never cross back through the originating broker and thus cannot create an message loop.
@@ -123,7 +123,7 @@ Another configuration that allows consumers on brokers to read messages produced
In this configuration spoke brokers connect to a central hub and message traffic between the spokes passes through that hub broker which centralizes communication and allows the spokes to only need to know about one other broker, the hub broker.
When demand exists on any of the spokes they create a federation consumer link to the hub, this in turn causes the hub to create federation consumer links to each of the spokes where the address exists regardless of the presence of a producer on those spokes in order to ensure that when a producer arrives the messages that it sends reach the other spokes with attached consumers (this is shown on diagram at `spoke 3`).
-image::images/amqp-federation-address-hub-spoke.png[]
+image::amqp-federation-address-hub-spoke.png[]
This is configured on the spoke brokers much the same as dual address federation where a local and remote policy is configured both sides to listen for demand on the given address and federate messages when demand is detected.
This setup allows the hub to now sense demand and federate from the spoke as needed and since each spoke mirrors this configuration the message can travel in either direction based on which spoke a consumer has subscribed to the federated address and which spoke a producer sends to the address.
diff --git a/docs/user-manual/amqp-broker-connections.adoc b/docs/user-manual/modules/ROOT/pages/amqp-broker-connections.adoc
similarity index 99%
rename from docs/user-manual/amqp-broker-connections.adoc
rename to docs/user-manual/modules/ROOT/pages/amqp-broker-connections.adoc
index 98d197e168b..a366f61be1b 100644
--- a/docs/user-manual/amqp-broker-connections.adoc
+++ b/docs/user-manual/modules/ROOT/pages/amqp-broker-connections.adoc
@@ -114,7 +114,7 @@ To specify more than 2 elements use a comma separated list after the first pair,
----
.Broker Connection - Reconnecting and Failover
-image::images/broker-connection-failover.jpg[]
+image::broker-connection-failover.jpg[]
The previous example portrays a case of connection failure towards ServerA.
The system would try to connect to ServerA, BackupA, and BackupB until it successfully connects to one of these nodes.
@@ -229,7 +229,7 @@ Every sent message and every acknowledgement is asynchronously replicated to the
On the following diagram there will be two servers called _DataCenter1_, and _DataCenter2_.
In order to have a dual mirror configuration it is necessary to add the mirror broker connection on each `broker.xml`:
-image:images/broker-connection-DR.jpg[Broker Connection DR] Figure 2.
+image:broker-connection-DR.jpg[Broker Connection DR] Figure 2.
Broker Connection - Disaster Recovery.
On _DataCenter1_ the following code should be added on `broker.xml`:
@@ -472,7 +472,7 @@ Address federation can be thought of as full multicast over a set of loosely cou
Every message sent to address on `Broker-1` will be delivered to every queue bound to that address on that broker, but also will be delivered to the matching address on `Broker-2`, `Broker-3` ... `Broker-N` and all the queues bound to that address.
.Address Federation
-image::images/amqp-federation-address-concept.png[]
+image::amqp-federation-address-concept.png[]
For further details please see the xref:amqp-address-federation.adoc#address-federation[Address Federation] documentation.
@@ -482,7 +482,7 @@ Queue federation offers a means of load balancing message queues across multiple
Messages sent to a queue on `Broker-1` will be consumed and sent to the matching queue on `Broker-2` if there is no local consumer available to consume the message.
.Queue Federation
-image::images/amqp-federation-queue-concept.png[]
+image::amqp-federation-queue-concept.png[]
For further details please see the xref:amqp-queue-federation.adoc#queue-federation[Queue Federation] documentation.
diff --git a/docs/user-manual/amqp-federation-configuration-glossary.adoc b/docs/user-manual/modules/ROOT/pages/amqp-federation-configuration-glossary.adoc
similarity index 99%
rename from docs/user-manual/amqp-federation-configuration-glossary.adoc
rename to docs/user-manual/modules/ROOT/pages/amqp-federation-configuration-glossary.adoc
index 9f5be0b09c8..d3130421c3b 100644
--- a/docs/user-manual/amqp-federation-configuration-glossary.adoc
+++ b/docs/user-manual/modules/ROOT/pages/amqp-federation-configuration-glossary.adoc
@@ -80,7 +80,7 @@ In this case the policy is sent across the connection to the remote broker and f
----
-=== Address federation configuration elements
+== Address federation configuration elements
[,xml]
----
@@ -144,7 +144,7 @@ The address-match pattern to use to match excluded addresses, multiple of these
property::
A key / value property setting that allows for configuration options to be set either at the root federation level or within each federation policy that affects some defined behavior of the policy implementation.
-=== Queue federation configuration elements
+== Queue federation configuration elements
[,xml]
----
@@ -184,7 +184,7 @@ Multiple of these can be set, or it can be omitted if no excludes are needed.
property::
A key / value property setting that allows for configuration options to be set either at the root federation level or within each federation policy that affects some defined behavior of the policy implementation.
-=== Federation policy property configuration index
+== Federation policy property configuration index
The following properties can be set either at the federation element level or set per-policy in order to apply different behaviors to different policies within the same federation configuration.
When remote address or queue policies are configured the value of these properties are sent to the remote along with the policies to ensure both sides are operating with the same configurations.
diff --git a/docs/user-manual/amqp-queue-federation.adoc b/docs/user-manual/modules/ROOT/pages/amqp-queue-federation.adoc
similarity index 97%
rename from docs/user-manual/amqp-queue-federation.adoc
rename to docs/user-manual/modules/ROOT/pages/amqp-queue-federation.adoc
index 8b254575c9d..796b75876aa 100644
--- a/docs/user-manual/amqp-queue-federation.adoc
+++ b/docs/user-manual/modules/ROOT/pages/amqp-queue-federation.adoc
@@ -10,7 +10,7 @@ Queue federation creates consumers that consume messages from the matching queue
The federation consumer acts as an addition consumer on the target remote queue competing with consumers on that remote queue for messages.
Federation queue consumers can be configured to always have lower priority than the local queue consumers and also can be configured to only pull messages from the remote queue if there is capacity to handle those messages on the local broker.
-image::images/amqp-federation-queue-concept.png[]
+image::amqp-federation-queue-concept.png[]
Queue federation can be configured operate in a single direction between peers or can configured to operate in both directions between peers allowing message to flow in both directions delivering messages to consumers on either broker that were sent to the matching queue on the opposing broker instance.
When configured for dual federation messages can migrate back and forth between brokers depending on capacity and available local consumers, this back and forth message flow can be reduced by ensuring that the federation policy uses a pull when space is available configuration which will only pull a batch of messages from the remote if the local queue does not already have a backlog.
@@ -25,7 +25,7 @@ The sections that follow discuss some common queue federation topologies and som
The simplest configuration of Queue federation involves a two broker setup where `broker-1` creates a federation consumer to `broker-2` when demand is present on a federated queue.
The messages sent by a producer on `broker-2` are shared between any local consumer and the federation consumer.
-image::images/amqp-federation-queue-simple-lb.png[]
+image::amqp-federation-queue-simple-lb.png[]
This configuration can be setup by adding a federation policy on `broker-1` that configure the queue to federate and a connection URI pointing to the opposing broker.
Note that this configuration adds properties to configure the federation queue consumer to pull messages as opposed to the default which allows messages to flow regardless of local queue backlogs, this helps to prevent pulling messages from the remote broker unless the local broker has a shortage which helps to prevent starving consumers directly attached to the remote broker.
@@ -52,7 +52,7 @@ While this configuration provides basic sharing of messages between brokers it c
In a bi-directional queue federation configuration both brokers are configured to federate a given queue between them allowing messages to flow in either direction.
This configuration allows message that have been federated to one broker to flow back to the other if local demand is removed which can prevent stuck messages.
-image::images/amqp-federation-queue-bi-directional.png[]
+image::amqp-federation-queue-bi-directional.png[]
This configuration can be setup by adding a broker connection element to each of the broker instances with the same local queue federation policy or could be defined on only one broker using both a local and remote queue federation policy as shown below.
@@ -82,7 +82,7 @@ Each policy will be configured by the shared properties of the federation elemen
In some use cases a federated queue may need to cross through an intermediary broker before reaching a consumer.
For example consider a three broker chain where messages produced on `broker-1` must pass through `broker-2` before reaching a consumer on `broker-3`.
-image::images/amqp-federation-queue-with-hop.png[]
+image::amqp-federation-queue-with-hop.png[]
To accomplish this the federation queue policy for the intermediary broker must have additional configuration to allow for federation of messages when no local demand is present but a federation consumer is.
Normally federation queue policies do no consider a federation queue binding on a local queue as demand to avoid creating loops.
diff --git a/docs/user-manual/amqp.adoc b/docs/user-manual/modules/ROOT/pages/amqp.adoc
similarity index 100%
rename from docs/user-manual/amqp.adoc
rename to docs/user-manual/modules/ROOT/pages/amqp.adoc
diff --git a/docs/user-manual/architecture.adoc b/docs/user-manual/modules/ROOT/pages/architecture.adoc
similarity index 100%
rename from docs/user-manual/architecture.adoc
rename to docs/user-manual/modules/ROOT/pages/architecture.adoc
diff --git a/docs/user-manual/broker-plugins.adoc b/docs/user-manual/modules/ROOT/pages/broker-plugins.adoc
similarity index 100%
rename from docs/user-manual/broker-plugins.adoc
rename to docs/user-manual/modules/ROOT/pages/broker-plugins.adoc
diff --git a/docs/user-manual/cdi-integration.adoc b/docs/user-manual/modules/ROOT/pages/cdi-integration.adoc
similarity index 100%
rename from docs/user-manual/cdi-integration.adoc
rename to docs/user-manual/modules/ROOT/pages/cdi-integration.adoc
diff --git a/docs/user-manual/client-classpath.adoc b/docs/user-manual/modules/ROOT/pages/client-classpath.adoc
similarity index 64%
rename from docs/user-manual/client-classpath.adoc
rename to docs/user-manual/modules/ROOT/pages/client-classpath.adoc
index fe141090281..c1e5d0ddfac 100644
--- a/docs/user-manual/client-classpath.adoc
+++ b/docs/user-manual/modules/ROOT/pages/client-classpath.adoc
@@ -35,18 +35,9 @@ For Jakarta:
...
----
-== Individual client dependencies
-
-If you don't wish to use a build tool such as Maven which manages the dependencies for you, you may also choose to add the specific dependency jars to your classpath, which are all included under ./lib on the main distribution.
-
-For more information of the clients individual dependencies, see:
-
-* xref:client-classpath-jms.adoc#artemis-jms-client-dependencies[JMS client dependencies]
-* xref:client-classpath-jakarta.adoc#artemis-jakarta-client-dependencies[Jakarta client dependencies]
-
== Repackaged '-all' clients
-Even though it is highly recommend to use the maven dependencies, in cases this isnt a possibility and neither is using the individual dependencies as detailed above then the all-inclusive repackaged jar could be used as an alternative.
+Even though it is highly recommend to use the Maven dependencies, in cases where this isn't possible then the all-inclusive repackaged jar could be used as an alternative.
These jars are available at Maven Central:
@@ -56,6 +47,6 @@ These jars are available at Maven Central:
Whether you are using JMS or just the Core API simply add the `artemis-jms-client-all` jar to your client classpath.
For Jakarta Messaging add the `artemis-jakarta-client-all` jar instead.
-WARNING: These repackaged jars include all the xref:client-classpath-jms.adoc#artemis-jms-client-dependencies[client's dependencies].
+WARNING: These repackaged jars include all the client's dependencies.
Be careful with mixing other components jars in your application as they may clash with each other.
Note also that the '-all' clients cant be embedded in the same JVM as the broker, for that you must use `artemis-jms-client` or `artemis-jakarta-client` as appropriate.
diff --git a/docs/user-manual/client-failover.adoc b/docs/user-manual/modules/ROOT/pages/client-failover.adoc
similarity index 100%
rename from docs/user-manual/client-failover.adoc
rename to docs/user-manual/modules/ROOT/pages/client-failover.adoc
diff --git a/docs/user-manual/clusters.adoc b/docs/user-manual/modules/ROOT/pages/clusters.adoc
similarity index 100%
rename from docs/user-manual/clusters.adoc
rename to docs/user-manual/modules/ROOT/pages/clusters.adoc
diff --git a/docs/user-manual/config-reload.adoc b/docs/user-manual/modules/ROOT/pages/config-reload.adoc
similarity index 100%
rename from docs/user-manual/config-reload.adoc
rename to docs/user-manual/modules/ROOT/pages/config-reload.adoc
diff --git a/docs/user-manual/configuration-index.adoc b/docs/user-manual/modules/ROOT/pages/configuration-index.adoc
similarity index 100%
rename from docs/user-manual/configuration-index.adoc
rename to docs/user-manual/modules/ROOT/pages/configuration-index.adoc
diff --git a/docs/user-manual/configuring-transports.adoc b/docs/user-manual/modules/ROOT/pages/configuring-transports.adoc
similarity index 100%
rename from docs/user-manual/configuring-transports.adoc
rename to docs/user-manual/modules/ROOT/pages/configuring-transports.adoc
diff --git a/docs/user-manual/connection-routers.adoc b/docs/user-manual/modules/ROOT/pages/connection-routers.adoc
similarity index 98%
rename from docs/user-manual/connection-routers.adoc
rename to docs/user-manual/modules/ROOT/pages/connection-routers.adoc
index 61913e519fc..8e1678ef1db 100644
--- a/docs/user-manual/connection-routers.adoc
+++ b/docs/user-manual/modules/ROOT/pages/connection-routers.adoc
@@ -233,7 +233,7 @@ The connection router workflow include the following steps:
* Add the selected broker in the <>;
* Return the selected broker.
-Let's take a look at flowchart of the connection router workflow: image:images/connection_router_workflow.png[Connection Router Workflow]
+Let's take a look at flowchart of the connection router workflow: image:connection_router_workflow.png[Connection Router Workflow]
== Data gravity
@@ -277,14 +277,14 @@ Applications using a protocol supporting native redirection connect to the accep
The acceptor redirects the connection to the target broker and closes the connection.
The client then establishes a connection to the target broker.
-image::images/native_redirect_sequence.png[Native Redirect Sequence]
+image::native_redirect_sequence.png[Native Redirect Sequence]
=== Management API Redirection
Applications using a protocol not supporting native redirection can query the management API of connection router to get the target broker to redirect.
If the API returns a target broker the client connects to it otherwise the client can query the API again.
-image::images/management_api_redirect_sequence.png[Management API Redirect Sequence]
+image::management_api_redirect_sequence.png[Management API Redirect Sequence]
The relevant `ConnectionRouterControl` MBean is named like:
diff --git a/docs/user-manual/connection-ttl.adoc b/docs/user-manual/modules/ROOT/pages/connection-ttl.adoc
similarity index 100%
rename from docs/user-manual/connection-ttl.adoc
rename to docs/user-manual/modules/ROOT/pages/connection-ttl.adoc
diff --git a/docs/user-manual/consumer-priority.adoc b/docs/user-manual/modules/ROOT/pages/consumer-priority.adoc
similarity index 100%
rename from docs/user-manual/consumer-priority.adoc
rename to docs/user-manual/modules/ROOT/pages/consumer-priority.adoc
diff --git a/docs/user-manual/copied-message-properties.adoc b/docs/user-manual/modules/ROOT/pages/copied-message-properties.adoc
similarity index 100%
rename from docs/user-manual/copied-message-properties.adoc
rename to docs/user-manual/modules/ROOT/pages/copied-message-properties.adoc
diff --git a/docs/user-manual/core-bridges.adoc b/docs/user-manual/modules/ROOT/pages/core-bridges.adoc
similarity index 100%
rename from docs/user-manual/core-bridges.adoc
rename to docs/user-manual/modules/ROOT/pages/core-bridges.adoc
diff --git a/docs/user-manual/core.adoc b/docs/user-manual/modules/ROOT/pages/core.adoc
similarity index 100%
rename from docs/user-manual/core.adoc
rename to docs/user-manual/modules/ROOT/pages/core.adoc
diff --git a/docs/user-manual/critical-analysis.adoc b/docs/user-manual/modules/ROOT/pages/critical-analysis.adoc
similarity index 100%
rename from docs/user-manual/critical-analysis.adoc
rename to docs/user-manual/modules/ROOT/pages/critical-analysis.adoc
diff --git a/docs/user-manual/data-retention.adoc b/docs/user-manual/modules/ROOT/pages/data-retention.adoc
similarity index 95%
rename from docs/user-manual/data-retention.adoc
rename to docs/user-manual/modules/ROOT/pages/data-retention.adoc
index a0d0cfe714e..21f15d62e5a 100644
--- a/docs/user-manual/data-retention.adoc
+++ b/docs/user-manual/modules/ROOT/pages/data-retention.adoc
@@ -33,17 +33,17 @@ Example:
./artemis data print --journal ../data/history
----
-==== Paging and Large Messages
+== Paging and Large Messages
When retention is enabled, paging and large messages are also stored on the retention folder for replaying, so replay will also work for both paged and large messages.
-==== Non Persistent Messages
+== Non Persistent Messages
Non persistent messages are never stored anywhere in the broker. If you intend to retain data your producers should be using Durable messages.
== Recovering data from retention
To recover data from the retention folder, you can use the method link:https://artemis.apache.org/components/artemis/documentation/javadocs/javadoc-latest/org/apache/activemq/artemis/api/core/management/ActiveMQServerControl.html#replay(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String)[replay] on the management console:
-image::images/replay-method.png[align="center"]
+image::replay-method.png[align="center"]
The broker will scan the set of files accordingly to the parameters you passed and it will send these methods to a target queue that you selected.
diff --git a/docs/user-manual/data-tools.adoc b/docs/user-manual/modules/ROOT/pages/data-tools.adoc
similarity index 100%
rename from docs/user-manual/data-tools.adoc
rename to docs/user-manual/modules/ROOT/pages/data-tools.adoc
diff --git a/docs/user-manual/diverts.adoc b/docs/user-manual/modules/ROOT/pages/diverts.adoc
similarity index 100%
rename from docs/user-manual/diverts.adoc
rename to docs/user-manual/modules/ROOT/pages/diverts.adoc
diff --git a/docs/user-manual/docinfo.html b/docs/user-manual/modules/ROOT/pages/docinfo.html
similarity index 100%
rename from docs/user-manual/docinfo.html
rename to docs/user-manual/modules/ROOT/pages/docinfo.html
diff --git a/docs/user-manual/docker.adoc b/docs/user-manual/modules/ROOT/pages/docker.adoc
similarity index 100%
rename from docs/user-manual/docker.adoc
rename to docs/user-manual/modules/ROOT/pages/docker.adoc
diff --git a/docs/user-manual/duplicate-detection.adoc b/docs/user-manual/modules/ROOT/pages/duplicate-detection.adoc
similarity index 100%
rename from docs/user-manual/duplicate-detection.adoc
rename to docs/user-manual/modules/ROOT/pages/duplicate-detection.adoc
diff --git a/docs/user-manual/embedding-artemis.adoc b/docs/user-manual/modules/ROOT/pages/embedding-artemis.adoc
similarity index 100%
rename from docs/user-manual/embedding-artemis.adoc
rename to docs/user-manual/modules/ROOT/pages/embedding-artemis.adoc
diff --git a/docs/user-manual/examples.adoc b/docs/user-manual/modules/ROOT/pages/examples.adoc
similarity index 100%
rename from docs/user-manual/examples.adoc
rename to docs/user-manual/modules/ROOT/pages/examples.adoc
diff --git a/docs/user-manual/exclusive-queues.adoc b/docs/user-manual/modules/ROOT/pages/exclusive-queues.adoc
similarity index 100%
rename from docs/user-manual/exclusive-queues.adoc
rename to docs/user-manual/modules/ROOT/pages/exclusive-queues.adoc
diff --git a/docs/user-manual/federation-address.adoc b/docs/user-manual/modules/ROOT/pages/federation-address.adoc
similarity index 97%
rename from docs/user-manual/federation-address.adoc
rename to docs/user-manual/modules/ROOT/pages/federation-address.adoc
index 43def758540..1e0e40992a9 100644
--- a/docs/user-manual/federation-address.adoc
+++ b/docs/user-manual/modules/ROOT/pages/federation-address.adoc
@@ -14,14 +14,14 @@ Just add the needed permissions to the address for the downstream broker.
The same applies for downstream configurations.
.Address Federation
-image::images/federation-address.png[]
+image::federation-address.png[]
== Topology Patterns
=== Symmetric
.Address Federation - Symmetric
-image::images/federation-address-symetric.png[]
+image::federation-address-symetric.png[]
As seen above, a publisher and consumer are connected to each broker.
Queues _(consumers of those queues)_ can receive messages published by either publisher.
@@ -32,7 +32,7 @@ If `max-hops` is not configured correctly, consumers will get multiple copies of
=== Full Mesh
.Address Federation - Full Mesh
-image::images/federation-address-complete-graph.png[]
+image::federation-address-complete-graph.png[]
This setup is identical to symmetric above.
All brokers are symmetrically federating each other, creating a full mesh.
@@ -46,7 +46,7 @@ If `max-hops` is not configured correctly, consumers will get multiple copies of
=== Ring
.Address Federation - Ring
-image::images/federation-address-ring.png[]
+image::federation-address-ring.png[]
In a ring of brokers each federated address is `upstream` to just one other in the ring.
To avoid the cyclic issue, it is important to set `max-hops` to `n - 1` where `n` is the number of nodes in the ring.
@@ -58,7 +58,7 @@ If a single broker fails then the ring fails.
=== Fan out
.Address Federation - Fan Out
-image::images/federation-address-fan-out.png[]
+image::federation-address-fan-out.png[]
One main address (requires no configuration) is linked to a tree of downstream federated addresses.
The tree can extend to any depth and can be extended further without needing to re-configure existing brokers.
@@ -127,7 +127,7 @@ Both upstreams are configured with the same address-policy `news-address-federat
*It is important that federation name is globally unique.*
-==== address-policy parameters
+=== address-policy parameters
name::
All address-policies must have a unique name in the server.
@@ -165,7 +165,7 @@ Default is `false`.
NOTE: `address-policy` and `queue-policy` elements can be defined in the same federation and be linked to the same upstream.
-==== transformer parameters
+=== transformer parameters
name::
Unique name in the server used to reference the transformer in `address-policy` and `queue-policy`.
@@ -178,7 +178,7 @@ This gives you the opportunity to transform the message's header or body before
property:: holds key-value pairs that can be used to configure the transformer.
-==== Upstream parameters
+=== Upstream parameters
Tag `upstream` defines the upstream broker connection and the policies to use.
name::
diff --git a/docs/user-manual/federation-queue.adoc b/docs/user-manual/modules/ROOT/pages/federation-queue.adoc
similarity index 98%
rename from docs/user-manual/federation-queue.adoc
rename to docs/user-manual/modules/ROOT/pages/federation-queue.adoc
index 4e593b40aad..2db3dbab445 100644
--- a/docs/user-manual/federation-queue.adoc
+++ b/docs/user-manual/modules/ROOT/pages/federation-queue.adoc
@@ -27,7 +27,7 @@ When will perform best when there is some degree of locality.
e.g. as many messages as possible are consumed from the same broker as they were published to, where federation only needs to move messages around in order to perform load balancing.
.Federated Queue Symmetric
-image::images/federated-queue-symmetric.gif[]
+image::federated-queue-symmetric.gif[]
* Supporting multi region or venue
+
@@ -35,7 +35,7 @@ In a multi region setup you may have producers in one region or venue and the co
typically you want producers and consumer to keep their connections local to the region, in such as case you can deploy brokers in each region where producers and consumer are, and use federation to move messages over the WAN between regions.
.Federated Queue
-image::images/federated-queue.gif[]
+image::federated-queue.gif[]
* Communication between the secure enterprise lan and the DMZ.
+
@@ -105,7 +105,7 @@ Both upstreams are configured with the same queue-policy `news-queue-federation`
*It is important that federation name is globally unique.*
-==== Priority ordered queue-policy parameters
+=== Priority ordered queue-policy parameters
name::
All address-policies must have a unique name in the server.
@@ -129,7 +129,7 @@ The ref name for a transformer (see transformer config) that you may wish to con
NOTE: `address-policy` and `queue-policy` elements are able to be defined in the same federation, and they can be linked to the same upstream.
-==== Priority ordered transformer parameters
+=== Priority ordered transformer parameters
name::
Unique name in the server used to reference the transformer in `address-policy` and `queue-policy`
@@ -143,7 +143,7 @@ This gives you the opportunity to transform the message's header or body before
property:: holds key-value pairs that can be used to configure the transformer.
-==== Upstream parameters
+=== Upstream parameters
Tag `upstream` defines the upstream broker connection and the policies to use.
name::
diff --git a/docs/user-manual/federation.adoc b/docs/user-manual/modules/ROOT/pages/federation.adoc
similarity index 96%
rename from docs/user-manual/federation.adoc
rename to docs/user-manual/modules/ROOT/pages/federation.adoc
index 715c0b1d473..6bbd46181e9 100644
--- a/docs/user-manual/federation.adoc
+++ b/docs/user-manual/modules/ROOT/pages/federation.adoc
@@ -44,7 +44,7 @@ Multiple policies can be applied directly to multiple upstreams. Policies can be
Address federation is similar to full multicast over the connected brokers. Every message sent to address on `Broker-A` will be delivered to every queue on that broker, but also will be delivered to `Broker-B` and all their attached queues.
.Address Federation
-image:images/federation-address.png[Address Federation]
+image:federation-address.png[Address Federation]
For further details please see xref:federation-address.adoc#address-federation[Address Federation].
@@ -55,7 +55,7 @@ They can be used for load balancing.
If brokers are in the same Availability Zone you would look to cluster them. The advantage of queue federation is that it does not require clustering, so it is suitable for over WAN, cross-region or on/off-premises usage.
.Queue Federation
-image:images/federated-queue-symmetric.png[Queue Federation]
+image:federated-queue-symmetric.png[Queue Federation]
For further details please see xref:federation-queue.adoc#queue-federation[Queue Federation].
@@ -68,7 +68,7 @@ It is also possible to provide a WAN mesh of brokers, which can
* link distant producers and consumers
.Example of possible full federation mesh
-image:images/federated-world-wide-mesh.png[WAN Full Mesh]
+image:federated-world-wide-mesh.png[WAN Full Mesh]
== Configuring Federation
diff --git a/docs/user-manual/filter-expressions.adoc b/docs/user-manual/modules/ROOT/pages/filter-expressions.adoc
similarity index 100%
rename from docs/user-manual/filter-expressions.adoc
rename to docs/user-manual/modules/ROOT/pages/filter-expressions.adoc
diff --git a/docs/user-manual/flow-control.adoc b/docs/user-manual/modules/ROOT/pages/flow-control.adoc
similarity index 100%
rename from docs/user-manual/flow-control.adoc
rename to docs/user-manual/modules/ROOT/pages/flow-control.adoc
diff --git a/docs/user-manual/graceful-shutdown.adoc b/docs/user-manual/modules/ROOT/pages/graceful-shutdown.adoc
similarity index 100%
rename from docs/user-manual/graceful-shutdown.adoc
rename to docs/user-manual/modules/ROOT/pages/graceful-shutdown.adoc
diff --git a/docs/user-manual/ha.adoc b/docs/user-manual/modules/ROOT/pages/ha.adoc
similarity index 99%
rename from docs/user-manual/ha.adoc
rename to docs/user-manual/modules/ROOT/pages/ha.adoc
index 51ed6589610..67ca9bd1ca7 100644
--- a/docs/user-manual/ha.adoc
+++ b/docs/user-manual/modules/ROOT/pages/ha.adoc
@@ -280,7 +280,7 @@ Valid for both quorum voting and pluggable lock manager.
max-saved-replicated-journals-size::
This option specifies how many replication backup directories will be kept when server starts as a passive backup.
-Every time when server starts as such all former data moves to `oldreplica.\{id}` directory, where `{id}` is a growing backup index.
+Every time when server starts as such all former data moves to `oldreplica.\{id}` directory, where `\{id}` is a growing backup index.
This parameter sets the maximum number of such directories kept on disk.
Valid for both quorum voting and pluggable lock manager.
@@ -386,7 +386,7 @@ Valid for both quorum voting and pluggable lock manager.
max-saved-replicated-journals-size::
This option specifies how many replication backup directories will be kept when server starts as a passive backup.
-Every time when server starts as such all former data moves to `oldreplica.\{id}` directory, where `{id}` is a growing backup index.
+Every time when server starts as such all former data moves to `oldreplica.\{id}` directory, where `\{id}` is a growing backup index.
This parameter sets the maximum number of such directories kept on disk.
Valid for both quorum voting and pluggable lock manager.
@@ -743,7 +743,7 @@ This is configured via the `ha-policy` element in the `broker.xml` file like so:
the above example is configured to use replication, in this case the `primary` and `backup` configurations must match those for normal replication as in the previous chapter.
`shared-store` is also supported
-image::images/ha-colocated.png[Artemis ha-colocated.png]
+image::ha-colocated.png[Artemis ha-colocated.png]
=== Configuring Connectors and Acceptors
@@ -808,7 +808,7 @@ The caveat here is if you configure a backup to scale down.
Another disadvantage is that it is possible to lose message ordering.
This happens in the following scenario, say you have 2 active servers and messages are distributed evenly between the servers from a single producer, if one of the servers scales down then the messages sent back to the other server will be in the queue after the ones already there, so server 1 could have messages 1,3,5,7,9 and server 2 would have 2,4,6,8,10, if server 2 scales down the order in server 1 would be 1,3,5,7,9,2,4,6,8,10.
-image::images/ha-scaledown.png[Artemis ha-scaledown.png]
+image::ha-scaledown.png[Artemis ha-scaledown.png]
The configuration for an active server to scale down would be something like:
diff --git a/docs/user-manual/modules/ROOT/pages/index.adoc b/docs/user-manual/modules/ROOT/pages/index.adoc
new file mode 100644
index 00000000000..79f0f99936f
--- /dev/null
+++ b/docs/user-manual/modules/ROOT/pages/index.adoc
@@ -0,0 +1 @@
+This User Manual outlines how to configure and use {project-name-full} {project-version}.
diff --git a/docs/user-manual/intercepting-operations.adoc b/docs/user-manual/modules/ROOT/pages/intercepting-operations.adoc
similarity index 100%
rename from docs/user-manual/intercepting-operations.adoc
rename to docs/user-manual/modules/ROOT/pages/intercepting-operations.adoc
diff --git a/docs/user-manual/jms-bridge.adoc b/docs/user-manual/modules/ROOT/pages/jms-bridge.adoc
similarity index 100%
rename from docs/user-manual/jms-bridge.adoc
rename to docs/user-manual/modules/ROOT/pages/jms-bridge.adoc
diff --git a/docs/user-manual/jms-core-mapping.adoc b/docs/user-manual/modules/ROOT/pages/jms-core-mapping.adoc
similarity index 100%
rename from docs/user-manual/jms-core-mapping.adoc
rename to docs/user-manual/modules/ROOT/pages/jms-core-mapping.adoc
diff --git a/docs/user-manual/karaf.adoc b/docs/user-manual/modules/ROOT/pages/karaf.adoc
similarity index 100%
rename from docs/user-manual/karaf.adoc
rename to docs/user-manual/modules/ROOT/pages/karaf.adoc
diff --git a/docs/user-manual/large-messages.adoc b/docs/user-manual/modules/ROOT/pages/large-messages.adoc
similarity index 100%
rename from docs/user-manual/large-messages.adoc
rename to docs/user-manual/modules/ROOT/pages/large-messages.adoc
diff --git a/docs/user-manual/last-value-queues.adoc b/docs/user-manual/modules/ROOT/pages/last-value-queues.adoc
similarity index 100%
rename from docs/user-manual/last-value-queues.adoc
rename to docs/user-manual/modules/ROOT/pages/last-value-queues.adoc
diff --git a/docs/user-manual/libaio.adoc b/docs/user-manual/modules/ROOT/pages/libaio.adoc
similarity index 100%
rename from docs/user-manual/libaio.adoc
rename to docs/user-manual/modules/ROOT/pages/libaio.adoc
diff --git a/docs/user-manual/lock-coordination.adoc b/docs/user-manual/modules/ROOT/pages/lock-coordination.adoc
similarity index 99%
rename from docs/user-manual/lock-coordination.adoc
rename to docs/user-manual/modules/ROOT/pages/lock-coordination.adoc
index 92c8679876d..906ef357ab9 100644
--- a/docs/user-manual/lock-coordination.adoc
+++ b/docs/user-manual/modules/ROOT/pages/lock-coordination.adoc
@@ -98,7 +98,7 @@ This ensures only one broker actively processes client requests, replicates data
WARNING: When mixing bridges or federations with mirrors in the same configuration, message duplication is possible during failover transitions. When a message arrives at a mirror target and that node's broker connections are active, the message may be forwarded even though it was already processed by the original source. Lock coordination significantly reduces this risk but cannot completely eliminate it during the brief window when locks are being transferred between brokers.
-image:images/lock-coordination-example.png[HA with mirroring]
+image:lock-coordination-example.png[HA with mirroring]
You can find a https://github.com/apache/artemis-examples/tree/main/examples/features/broker-connection/ha-with-mirroring[working example] on how to run HA with Mirroring.
diff --git a/docs/user-manual/logging.adoc b/docs/user-manual/modules/ROOT/pages/logging.adoc
similarity index 100%
rename from docs/user-manual/logging.adoc
rename to docs/user-manual/modules/ROOT/pages/logging.adoc
diff --git a/docs/user-manual/management-console.adoc b/docs/user-manual/modules/ROOT/pages/management-console.adoc
similarity index 92%
rename from docs/user-manual/management-console.adoc
rename to docs/user-manual/modules/ROOT/pages/management-console.adoc
index 4165e957838..38ba1eff4ec 100644
--- a/docs/user-manual/management-console.adoc
+++ b/docs/user-manual/modules/ROOT/pages/management-console.adoc
@@ -41,9 +41,9 @@ A login screen will be presented.
If your broker is secured, you will need to use a user with admin role.
If it is unsecured, enter any user/password.
-image::images/console-login.png[Apache Artemis Console Login]
+image::console-login.png[Apache Artemis Console Login]
-Once logged in check out the https://artemis.apache.org/components/artemis-console/documentation/version/${artemis-console-version}[Artemis Console documentation] for details on how to use the console.
+Once logged in check out the https://artemis.apache.org/components/artemis-console/documentation/version/{artemis-console-version}[Artemis Console documentation] for details on how to use the console.
== Status Logging
diff --git a/docs/user-manual/management.adoc b/docs/user-manual/modules/ROOT/pages/management.adoc
similarity index 100%
rename from docs/user-manual/management.adoc
rename to docs/user-manual/modules/ROOT/pages/management.adoc
diff --git a/docs/user-manual/masking-passwords.adoc b/docs/user-manual/modules/ROOT/pages/masking-passwords.adoc
similarity index 100%
rename from docs/user-manual/masking-passwords.adoc
rename to docs/user-manual/modules/ROOT/pages/masking-passwords.adoc
diff --git a/docs/user-manual/maven-plugin.adoc b/docs/user-manual/modules/ROOT/pages/maven-plugin.adoc
similarity index 100%
rename from docs/user-manual/maven-plugin.adoc
rename to docs/user-manual/modules/ROOT/pages/maven-plugin.adoc
diff --git a/docs/user-manual/message-expiry.adoc b/docs/user-manual/modules/ROOT/pages/message-expiry.adoc
similarity index 100%
rename from docs/user-manual/message-expiry.adoc
rename to docs/user-manual/modules/ROOT/pages/message-expiry.adoc
diff --git a/docs/user-manual/message-grouping.adoc b/docs/user-manual/modules/ROOT/pages/message-grouping.adoc
similarity index 100%
rename from docs/user-manual/message-grouping.adoc
rename to docs/user-manual/modules/ROOT/pages/message-grouping.adoc
diff --git a/docs/user-manual/messaging-concepts.adoc b/docs/user-manual/modules/ROOT/pages/messaging-concepts.adoc
similarity index 100%
rename from docs/user-manual/messaging-concepts.adoc
rename to docs/user-manual/modules/ROOT/pages/messaging-concepts.adoc
diff --git a/docs/user-manual/metrics.adoc b/docs/user-manual/modules/ROOT/pages/metrics.adoc
similarity index 100%
rename from docs/user-manual/metrics.adoc
rename to docs/user-manual/modules/ROOT/pages/metrics.adoc
diff --git a/docs/user-manual/mqtt.adoc b/docs/user-manual/modules/ROOT/pages/mqtt.adoc
similarity index 100%
rename from docs/user-manual/mqtt.adoc
rename to docs/user-manual/modules/ROOT/pages/mqtt.adoc
diff --git a/docs/user-manual/network-isolation.adoc b/docs/user-manual/modules/ROOT/pages/network-isolation.adoc
similarity index 100%
rename from docs/user-manual/network-isolation.adoc
rename to docs/user-manual/modules/ROOT/pages/network-isolation.adoc
diff --git a/docs/user-manual/non-destructive-queues.adoc b/docs/user-manual/modules/ROOT/pages/non-destructive-queues.adoc
similarity index 100%
rename from docs/user-manual/non-destructive-queues.adoc
rename to docs/user-manual/modules/ROOT/pages/non-destructive-queues.adoc
diff --git a/docs/user-manual/notice.adoc b/docs/user-manual/modules/ROOT/pages/notice.adoc
similarity index 100%
rename from docs/user-manual/notice.adoc
rename to docs/user-manual/modules/ROOT/pages/notice.adoc
diff --git a/docs/user-manual/openwire.adoc b/docs/user-manual/modules/ROOT/pages/openwire.adoc
similarity index 100%
rename from docs/user-manual/openwire.adoc
rename to docs/user-manual/modules/ROOT/pages/openwire.adoc
diff --git a/docs/user-manual/paging.adoc b/docs/user-manual/modules/ROOT/pages/paging.adoc
similarity index 100%
rename from docs/user-manual/paging.adoc
rename to docs/user-manual/modules/ROOT/pages/paging.adoc
diff --git a/docs/user-manual/perf-tools.adoc b/docs/user-manual/modules/ROOT/pages/perf-tools.adoc
similarity index 99%
rename from docs/user-manual/perf-tools.adoc
rename to docs/user-manual/modules/ROOT/pages/perf-tools.adoc
index d89a8b94d15..30d108163f2 100644
--- a/docs/user-manual/perf-tools.adoc
+++ b/docs/user-manual/modules/ROOT/pages/perf-tools.adoc
@@ -215,11 +215,11 @@ Below is the visualization of the HDR histograms collected while adding to the p
Whole test execution shows tagged latencies, to distinguish `warmup` ones:
-image::images/test.png[]
+image::test.png[]
Filtering out `warmup` latencies, it looks like
-image::images/hot_test.png[]
+image::hot_test.png[]
Latency results shows that at higher percentiles `transfer` latency is way higher than the `sent` one (reminder: `sent` it's the time to acknowledge sent messages), probably meaning that some queuing-up is happening on the broker.
@@ -279,7 +279,7 @@ $ ./artemis perf client --rate 30000 --hdr /tmp/30K.hdr --warmup 20 --max-pendin
We've now achieved sub-millisecond `transfer` latencies until `90.00 pencentile`.
+ Opening `/tmp/30K.hdr` makes easier to see it:
-image::images/30K.png[test]
+image::30K.png[test]
Now `send` and `transfer` time looks quite similar and there's no sign of queueing, but...
@@ -298,7 +298,7 @@ A sane run of a target rate test should keep `delay send time` under control or
By running a `--rate 90000` test under the same conditions, latencies will look as
-image::images/90K.png[test]
+image::90K.png[test]
It clearly shows that the load generator is getting delayed and cannot keep-up with the expected rate.
diff --git a/docs/user-manual/perf-tuning.adoc b/docs/user-manual/modules/ROOT/pages/perf-tuning.adoc
similarity index 100%
rename from docs/user-manual/perf-tuning.adoc
rename to docs/user-manual/modules/ROOT/pages/perf-tuning.adoc
diff --git a/docs/user-manual/persistence.adoc b/docs/user-manual/modules/ROOT/pages/persistence.adoc
similarity index 100%
rename from docs/user-manual/persistence.adoc
rename to docs/user-manual/modules/ROOT/pages/persistence.adoc
diff --git a/docs/user-manual/pre-acknowledge.adoc b/docs/user-manual/modules/ROOT/pages/pre-acknowledge.adoc
similarity index 100%
rename from docs/user-manual/pre-acknowledge.adoc
rename to docs/user-manual/modules/ROOT/pages/pre-acknowledge.adoc
diff --git a/docs/user-manual/preface.adoc b/docs/user-manual/modules/ROOT/pages/preface.adoc
similarity index 100%
rename from docs/user-manual/preface.adoc
rename to docs/user-manual/modules/ROOT/pages/preface.adoc
diff --git a/docs/user-manual/project-info.adoc b/docs/user-manual/modules/ROOT/pages/project-info.adoc
similarity index 100%
rename from docs/user-manual/project-info.adoc
rename to docs/user-manual/modules/ROOT/pages/project-info.adoc
diff --git a/docs/user-manual/protocols-interoperability.adoc b/docs/user-manual/modules/ROOT/pages/protocols-interoperability.adoc
similarity index 100%
rename from docs/user-manual/protocols-interoperability.adoc
rename to docs/user-manual/modules/ROOT/pages/protocols-interoperability.adoc
diff --git a/docs/user-manual/proxy-protocol.adoc b/docs/user-manual/modules/ROOT/pages/proxy-protocol.adoc
similarity index 100%
rename from docs/user-manual/proxy-protocol.adoc
rename to docs/user-manual/modules/ROOT/pages/proxy-protocol.adoc
diff --git a/docs/user-manual/resource-adapter.adoc b/docs/user-manual/modules/ROOT/pages/resource-adapter.adoc
similarity index 100%
rename from docs/user-manual/resource-adapter.adoc
rename to docs/user-manual/modules/ROOT/pages/resource-adapter.adoc
diff --git a/docs/user-manual/resource-limits.adoc b/docs/user-manual/modules/ROOT/pages/resource-limits.adoc
similarity index 100%
rename from docs/user-manual/resource-limits.adoc
rename to docs/user-manual/modules/ROOT/pages/resource-limits.adoc
diff --git a/docs/user-manual/restart-sequence.adoc b/docs/user-manual/modules/ROOT/pages/restart-sequence.adoc
similarity index 100%
rename from docs/user-manual/restart-sequence.adoc
rename to docs/user-manual/modules/ROOT/pages/restart-sequence.adoc
diff --git a/docs/user-manual/retroactive-addresses.adoc b/docs/user-manual/modules/ROOT/pages/retroactive-addresses.adoc
similarity index 100%
rename from docs/user-manual/retroactive-addresses.adoc
rename to docs/user-manual/modules/ROOT/pages/retroactive-addresses.adoc
diff --git a/docs/user-manual/ring-queues.adoc b/docs/user-manual/modules/ROOT/pages/ring-queues.adoc
similarity index 100%
rename from docs/user-manual/ring-queues.adoc
rename to docs/user-manual/modules/ROOT/pages/ring-queues.adoc
diff --git a/docs/user-manual/scheduled-messages.adoc b/docs/user-manual/modules/ROOT/pages/scheduled-messages.adoc
similarity index 100%
rename from docs/user-manual/scheduled-messages.adoc
rename to docs/user-manual/modules/ROOT/pages/scheduled-messages.adoc
diff --git a/docs/user-manual/security.adoc b/docs/user-manual/modules/ROOT/pages/security.adoc
similarity index 100%
rename from docs/user-manual/security.adoc
rename to docs/user-manual/modules/ROOT/pages/security.adoc
diff --git a/docs/user-manual/send-guarantees.adoc b/docs/user-manual/modules/ROOT/pages/send-guarantees.adoc
similarity index 100%
rename from docs/user-manual/send-guarantees.adoc
rename to docs/user-manual/modules/ROOT/pages/send-guarantees.adoc
diff --git a/docs/user-manual/slow-consumers.adoc b/docs/user-manual/modules/ROOT/pages/slow-consumers.adoc
similarity index 100%
rename from docs/user-manual/slow-consumers.adoc
rename to docs/user-manual/modules/ROOT/pages/slow-consumers.adoc
diff --git a/docs/user-manual/stomp.adoc b/docs/user-manual/modules/ROOT/pages/stomp.adoc
similarity index 100%
rename from docs/user-manual/stomp.adoc
rename to docs/user-manual/modules/ROOT/pages/stomp.adoc
diff --git a/docs/user-manual/thread-pooling.adoc b/docs/user-manual/modules/ROOT/pages/thread-pooling.adoc
similarity index 100%
rename from docs/user-manual/thread-pooling.adoc
rename to docs/user-manual/modules/ROOT/pages/thread-pooling.adoc
diff --git a/docs/user-manual/threat-model.adoc b/docs/user-manual/modules/ROOT/pages/threat-model.adoc
similarity index 100%
rename from docs/user-manual/threat-model.adoc
rename to docs/user-manual/modules/ROOT/pages/threat-model.adoc
diff --git a/docs/user-manual/tomcat.adoc b/docs/user-manual/modules/ROOT/pages/tomcat.adoc
similarity index 100%
rename from docs/user-manual/tomcat.adoc
rename to docs/user-manual/modules/ROOT/pages/tomcat.adoc
diff --git a/docs/user-manual/transaction-config.adoc b/docs/user-manual/modules/ROOT/pages/transaction-config.adoc
similarity index 100%
rename from docs/user-manual/transaction-config.adoc
rename to docs/user-manual/modules/ROOT/pages/transaction-config.adoc
diff --git a/docs/user-manual/transformers.adoc b/docs/user-manual/modules/ROOT/pages/transformers.adoc
similarity index 100%
rename from docs/user-manual/transformers.adoc
rename to docs/user-manual/modules/ROOT/pages/transformers.adoc
diff --git a/docs/user-manual/undelivered-messages.adoc b/docs/user-manual/modules/ROOT/pages/undelivered-messages.adoc
similarity index 100%
rename from docs/user-manual/undelivered-messages.adoc
rename to docs/user-manual/modules/ROOT/pages/undelivered-messages.adoc
diff --git a/docs/user-manual/unit-testing.adoc b/docs/user-manual/modules/ROOT/pages/unit-testing.adoc
similarity index 100%
rename from docs/user-manual/unit-testing.adoc
rename to docs/user-manual/modules/ROOT/pages/unit-testing.adoc
diff --git a/docs/user-manual/upgrading.adoc b/docs/user-manual/modules/ROOT/pages/upgrading.adoc
similarity index 100%
rename from docs/user-manual/upgrading.adoc
rename to docs/user-manual/modules/ROOT/pages/upgrading.adoc
diff --git a/docs/user-manual/using-cli.adoc b/docs/user-manual/modules/ROOT/pages/using-cli.adoc
similarity index 100%
rename from docs/user-manual/using-cli.adoc
rename to docs/user-manual/modules/ROOT/pages/using-cli.adoc
diff --git a/docs/user-manual/using-jms.adoc b/docs/user-manual/modules/ROOT/pages/using-jms.adoc
similarity index 100%
rename from docs/user-manual/using-jms.adoc
rename to docs/user-manual/modules/ROOT/pages/using-jms.adoc
diff --git a/docs/user-manual/using-server.adoc b/docs/user-manual/modules/ROOT/pages/using-server.adoc
similarity index 100%
rename from docs/user-manual/using-server.adoc
rename to docs/user-manual/modules/ROOT/pages/using-server.adoc
diff --git a/docs/user-manual/versions.adoc b/docs/user-manual/modules/ROOT/pages/versions.adoc
similarity index 99%
rename from docs/user-manual/versions.adoc
rename to docs/user-manual/modules/ROOT/pages/versions.adoc
index 293a10ca898..425dcb7a233 100644
--- a/docs/user-manual/versions.adoc
+++ b/docs/user-manual/modules/ROOT/pages/versions.adoc
@@ -302,7 +302,7 @@ The categorized resource tabs which were available previously are now the main a
These tabs offer a paged view which is filterable and sortable and scales well for resource heavy use-cases.
** Any request with an origin header using the `https` scheme which is ultimately received by Jolokia via HTTP is now discarded by default since it is deemed insecure.
-If you use a TLS proxy that transforms secure requests to insecure requests (e.g. in a Kubernetes environment) then consider changing the proxy to preserve HTTPS and switching the xref:embedded-web-server.adoc[embedded web server] to HTTPS.
+If you use a TLS proxy that transforms secure requests to insecure requests (e.g. in a Kubernetes environment) then consider changing the proxy to preserve HTTPS and switching the xref:web-server.adoc[embedded web server] to HTTPS.
If that isn't feasible then you can accept the risk by adding `` to `etc/jolokia-access.xml`.
See the https://jolokia.org/reference/html/manual/security.html[Jolokia documentation] for more details.
diff --git a/docs/user-manual/web-server.adoc b/docs/user-manual/modules/ROOT/pages/web-server.adoc
similarity index 100%
rename from docs/user-manual/web-server.adoc
rename to docs/user-manual/modules/ROOT/pages/web-server.adoc
diff --git a/docs/user-manual/wildcard-routing.adoc b/docs/user-manual/modules/ROOT/pages/wildcard-routing.adoc
similarity index 100%
rename from docs/user-manual/wildcard-routing.adoc
rename to docs/user-manual/modules/ROOT/pages/wildcard-routing.adoc
diff --git a/docs/user-manual/wildcard-syntax.adoc b/docs/user-manual/modules/ROOT/pages/wildcard-syntax.adoc
similarity index 100%
rename from docs/user-manual/wildcard-syntax.adoc
rename to docs/user-manual/modules/ROOT/pages/wildcard-syntax.adoc
diff --git a/pom.xml b/pom.xml
index c9850b5e4c7..287a21b96dc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -136,7 +136,6 @@
3.2.0
- 2.3.232.0.78.Final
@@ -912,13 +911,15 @@
**/*.txt**/*.md**/*.adoc
+ **/*-playbook.yml**/docinfo.htmletc/ide-settings/****/*.json
- docs/resources/font-awesome/**/*
- docs/user-manual/_diagrams/*.svg
- docs/user-manual/02-27-00-scripts-profiles.diff
- docs/user-manual/02-27-00-scripts-profiles-windows.diff
+ docs/ui-bundle-custom/**/*
+ docs/diagrams/*.svg
+ docs/**/antora.yml
+ docs/user-manual/modules/ROOT/pages/02-27-00-scripts-profiles.diff
+ docs/user-manual/modules/ROOT/pages/02-27-00-scripts-profiles-windows.diff**/target/**/META-INF/MANIFEST.MF**/META-INF/detectors