From 8f5e40ddec6130858a1d82bb997deb233e4958de Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 6 Sep 2024 23:34:14 +0000 Subject: [PATCH] deploy: 4f7fe8a3159563e0d75de3fa573dec371d6cbead --- 404.html | 10 +- API/index.html | 46 +++++++ .../index.html | 25 ++++ .../How to add configurations/index.html | 122 ++++++++++++++++++ Advanced Configuration/OCR/index.html | 70 ++++++++++ .../Other Customisations/index.html | 21 +++ .../Single Sign-On Configuration/index.html | 68 ++++++++++ .../System and Security/index.html | 52 ++++++++ .../UI Customisation/index.html | 47 +++++++ CNAME | 2 +- Contribute/Code/index.html | 13 ++ Contribute/Language/index.html | 13 ++ FAQ/index.html | 24 ++++ Functionality/Convert/Overview/index.html | 58 +++++++++ .../Miscellaneous/Overview/index.html | 69 ++++++++++ .../Page operations/Overview/index.html | 60 +++++++++ Functionality/Security/Overview/index.html | 39 ++++++ .../Docker/Docker Install/index.html | 53 ++++++++ .../Docker/Docker Versions/index.html | 25 ++++ .../Local/Unix Installation/index.html | 10 +- .../Local/Windows Installation/index.html | 17 +++ Overview/The Technologies/index.html | 32 +++++ about/index.html | 8 +- ...tyles.7e96ba7c.css => styles.b9e01cf1.css} | 2 +- assets/js/05406345.6532c781.js | 1 - assets/js/05406345.968316a0.js | 1 + assets/js/0656e72b.be920fb5.js | 1 - assets/js/0656e72b.efc703dd.js | 1 + assets/js/0ccda0bc.1ec869eb.js | 1 + assets/js/0ccda0bc.32d30fa9.js | 1 - assets/js/13dffe26.cd9440aa.js | 1 + assets/js/186bd3b4.595488b6.js | 1 - assets/js/186bd3b4.7044dc8a.js | 1 + assets/js/195f1085.ea15624b.js | 1 - assets/js/195f1085.ea37bc9f.js | 1 + assets/js/2158bb33.18268033.js | 1 - assets/js/2158bb33.1d1a0cdf.js | 1 + assets/js/28d775d6.87ae8482.js | 1 + assets/js/3c339e32.09ee0599.js | 1 + assets/js/3c339e32.882b6f63.js | 1 - assets/js/3eca61f5.17a007ed.js | 1 + assets/js/3eca61f5.994d039a.js | 1 - assets/js/4b9e34a4.44c09fed.js | 1 - assets/js/4b9e34a4.5160f766.js | 1 + assets/js/54ff00bd.577d412d.js | 1 - assets/js/54ff00bd.5f88c31d.js | 1 + assets/js/58585d64.03e5fbb4.js | 1 - assets/js/58585d64.3b02dbfa.js | 1 + assets/js/5b87d6e1.7b8b662e.js | 1 - assets/js/5b87d6e1.cac3344a.js | 1 + assets/js/5bfee675.f06816a3.js | 1 - assets/js/6629c45f.66f4cfb5.js | 1 + assets/js/69c64e15.4107c0e8.js | 1 + assets/js/69c64e15.b0c1d1d8.js | 1 - assets/js/763c3bf2.7d877d20.js | 1 - assets/js/7c110bd0.f2ac5844.js | 1 - assets/js/94fbe072.184fa5e3.js | 1 - assets/js/94fbe072.c6c340d9.js | 1 + assets/js/9fb582a2.af7ffcb2.js | 1 + assets/js/9fb582a2.ecb91973.js | 1 - assets/js/ad895e75.920867b7.js | 1 - assets/js/ad895e75.ca2c8c9d.js | 1 + assets/js/b9fed88d.0edb26c7.js | 1 + assets/js/bdc0070e.9303014e.js | 1 + assets/js/c4f5d8e4.6cfd69e7.js | 1 - assets/js/c8229a80.1803b3fe.js | 1 - assets/js/c8229a80.66db55a8.js | 1 + assets/js/c94c5787.2b3f8aa0.js | 1 - assets/js/c94c5787.e5c1d76e.js | 1 + assets/js/d6ba1c29.ea5dc692.js | 1 + assets/js/d6ba1c29.ffb15315.js | 1 - assets/js/d734b0a9.8e68f166.js | 1 + assets/js/e1540868.d5a45ba4.js | 1 - assets/js/e1540868.eec12989.js | 1 + assets/js/e8a32332.a363a355.js | 1 - assets/js/f08caec6.3ef36ba2.js | 1 - assets/js/f3c74015.afc439b0.js | 1 - assets/js/f6b04b6b.a21451ab.js | 1 + assets/js/f6b04b6b.b7445dc4.js | 1 - assets/js/main.38ec2b89.js | 2 - assets/js/main.493cdd52.js | 2 + ...CENSE.txt => main.493cdd52.js.LICENSE.txt} | 0 assets/js/runtime~main.5e58a98d.js | 1 + assets/js/runtime~main.8936f1ff.js | 1 - category/functionality/index.html | 13 ++ contact/index.html | 8 +- demos/index.html | 8 +- docs/API/index.html | 46 ------- .../index.html | 25 ---- .../How to add configurations/index.html | 122 ------------------ docs/Advanced Configuration/OCR/index.html | 70 ---------- .../Other Customisations/index.html | 21 --- .../Single Sign-On Configuration/index.html | 68 ---------- .../System and Security/index.html | 52 -------- .../UI Customisation/index.html | 47 ------- docs/Contribute/Code/index.html | 13 -- docs/Contribute/Language/index.html | 13 -- docs/FAQ/index.html | 24 ---- .../Functionality/Convert/Overview/index.html | 58 --------- .../Miscellaneous/Overview/index.html | 69 ---------- .../Page operations/Overview/index.html | 60 --------- .../Security/Overview/index.html | 39 ------ .../Docker/Docker Install/index.html | 53 -------- .../Docker/Docker Versions/index.html | 25 ---- .../Local/Windows Installation/index.html | 17 --- docs/Overview/The Technologies/index.html | 32 ----- docs/Overview/What is Stirling-PDF/index.html | 25 ---- docs/category/functionality/index.html | 13 -- docs/tags/api/index.html | 13 -- docs/tags/code/index.html | 13 -- docs/tags/index.html | 13 -- docs/tags/language/index.html | 13 -- index.html | 22 +++- markdown-page/index.html | 10 +- sitemap.xml | 2 +- tags/api/index.html | 13 ++ tags/code/index.html | 13 ++ tags/index.html | 13 ++ tags/language/index.html | 13 ++ 119 files changed, 996 insertions(+), 1010 deletions(-) create mode 100644 API/index.html create mode 100644 Advanced Configuration/Endpoint or Feature Customisation/index.html create mode 100644 Advanced Configuration/How to add configurations/index.html create mode 100644 Advanced Configuration/OCR/index.html create mode 100644 Advanced Configuration/Other Customisations/index.html create mode 100644 Advanced Configuration/Single Sign-On Configuration/index.html create mode 100644 Advanced Configuration/System and Security/index.html create mode 100644 Advanced Configuration/UI Customisation/index.html create mode 100644 Contribute/Code/index.html create mode 100644 Contribute/Language/index.html create mode 100644 FAQ/index.html create mode 100644 Functionality/Convert/Overview/index.html create mode 100644 Functionality/Miscellaneous/Overview/index.html create mode 100644 Functionality/Page operations/Overview/index.html create mode 100644 Functionality/Security/Overview/index.html create mode 100644 Getting started/Installation/Docker/Docker Install/index.html create mode 100644 Getting started/Installation/Docker/Docker Versions/index.html rename {docs/Getting started => Getting started}/Installation/Local/Unix Installation/index.html (50%) create mode 100644 Getting started/Installation/Local/Windows Installation/index.html create mode 100644 Overview/The Technologies/index.html rename assets/css/{styles.7e96ba7c.css => styles.b9e01cf1.css} (84%) delete mode 100644 assets/js/05406345.6532c781.js create mode 100644 assets/js/05406345.968316a0.js delete mode 100644 assets/js/0656e72b.be920fb5.js create mode 100644 assets/js/0656e72b.efc703dd.js create mode 100644 assets/js/0ccda0bc.1ec869eb.js delete mode 100644 assets/js/0ccda0bc.32d30fa9.js create mode 100644 assets/js/13dffe26.cd9440aa.js delete mode 100644 assets/js/186bd3b4.595488b6.js create mode 100644 assets/js/186bd3b4.7044dc8a.js delete mode 100644 assets/js/195f1085.ea15624b.js create mode 100644 assets/js/195f1085.ea37bc9f.js delete mode 100644 assets/js/2158bb33.18268033.js create mode 100644 assets/js/2158bb33.1d1a0cdf.js create mode 100644 assets/js/28d775d6.87ae8482.js create mode 100644 assets/js/3c339e32.09ee0599.js delete mode 100644 assets/js/3c339e32.882b6f63.js create mode 100644 assets/js/3eca61f5.17a007ed.js delete mode 100644 assets/js/3eca61f5.994d039a.js delete mode 100644 assets/js/4b9e34a4.44c09fed.js create mode 100644 assets/js/4b9e34a4.5160f766.js delete mode 100644 assets/js/54ff00bd.577d412d.js create mode 100644 assets/js/54ff00bd.5f88c31d.js delete mode 100644 assets/js/58585d64.03e5fbb4.js create mode 100644 assets/js/58585d64.3b02dbfa.js delete mode 100644 assets/js/5b87d6e1.7b8b662e.js create mode 100644 assets/js/5b87d6e1.cac3344a.js delete mode 100644 assets/js/5bfee675.f06816a3.js create mode 100644 assets/js/6629c45f.66f4cfb5.js create mode 100644 assets/js/69c64e15.4107c0e8.js delete mode 100644 assets/js/69c64e15.b0c1d1d8.js delete mode 100644 assets/js/763c3bf2.7d877d20.js delete mode 100644 assets/js/7c110bd0.f2ac5844.js delete mode 100644 assets/js/94fbe072.184fa5e3.js create mode 100644 assets/js/94fbe072.c6c340d9.js create mode 100644 assets/js/9fb582a2.af7ffcb2.js delete mode 100644 assets/js/9fb582a2.ecb91973.js delete mode 100644 assets/js/ad895e75.920867b7.js create mode 100644 assets/js/ad895e75.ca2c8c9d.js create mode 100644 assets/js/b9fed88d.0edb26c7.js create mode 100644 assets/js/bdc0070e.9303014e.js delete mode 100644 assets/js/c4f5d8e4.6cfd69e7.js delete mode 100644 assets/js/c8229a80.1803b3fe.js create mode 100644 assets/js/c8229a80.66db55a8.js delete mode 100644 assets/js/c94c5787.2b3f8aa0.js create mode 100644 assets/js/c94c5787.e5c1d76e.js create mode 100644 assets/js/d6ba1c29.ea5dc692.js delete mode 100644 assets/js/d6ba1c29.ffb15315.js create mode 100644 assets/js/d734b0a9.8e68f166.js delete mode 100644 assets/js/e1540868.d5a45ba4.js create mode 100644 assets/js/e1540868.eec12989.js delete mode 100644 assets/js/e8a32332.a363a355.js delete mode 100644 assets/js/f08caec6.3ef36ba2.js delete mode 100644 assets/js/f3c74015.afc439b0.js create mode 100644 assets/js/f6b04b6b.a21451ab.js delete mode 100644 assets/js/f6b04b6b.b7445dc4.js delete mode 100644 assets/js/main.38ec2b89.js create mode 100644 assets/js/main.493cdd52.js rename assets/js/{main.38ec2b89.js.LICENSE.txt => main.493cdd52.js.LICENSE.txt} (100%) create mode 100644 assets/js/runtime~main.5e58a98d.js delete mode 100644 assets/js/runtime~main.8936f1ff.js create mode 100644 category/functionality/index.html delete mode 100644 docs/API/index.html delete mode 100644 docs/Advanced Configuration/Endpoint or Feature Customisation/index.html delete mode 100644 docs/Advanced Configuration/How to add configurations/index.html delete mode 100644 docs/Advanced Configuration/OCR/index.html delete mode 100644 docs/Advanced Configuration/Other Customisations/index.html delete mode 100644 docs/Advanced Configuration/Single Sign-On Configuration/index.html delete mode 100644 docs/Advanced Configuration/System and Security/index.html delete mode 100644 docs/Advanced Configuration/UI Customisation/index.html delete mode 100644 docs/Contribute/Code/index.html delete mode 100644 docs/Contribute/Language/index.html delete mode 100644 docs/FAQ/index.html delete mode 100644 docs/Functionality/Convert/Overview/index.html delete mode 100644 docs/Functionality/Miscellaneous/Overview/index.html delete mode 100644 docs/Functionality/Page operations/Overview/index.html delete mode 100644 docs/Functionality/Security/Overview/index.html delete mode 100644 docs/Getting started/Installation/Docker/Docker Install/index.html delete mode 100644 docs/Getting started/Installation/Docker/Docker Versions/index.html delete mode 100644 docs/Getting started/Installation/Local/Windows Installation/index.html delete mode 100644 docs/Overview/The Technologies/index.html delete mode 100644 docs/Overview/What is Stirling-PDF/index.html delete mode 100644 docs/category/functionality/index.html delete mode 100644 docs/tags/api/index.html delete mode 100644 docs/tags/code/index.html delete mode 100644 docs/tags/index.html delete mode 100644 docs/tags/language/index.html create mode 100644 tags/api/index.html create mode 100644 tags/code/index.html create mode 100644 tags/index.html create mode 100644 tags/language/index.html diff --git a/404.html b/404.html index 8d9faa0..40a7dc2 100644 --- a/404.html +++ b/404.html @@ -1,13 +1,13 @@ - + -Page Not Found | Stirling-PDF - - +Stirling-PDF + + -
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

+
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

\ No newline at end of file diff --git a/API/index.html b/API/index.html new file mode 100644 index 0000000..5d7ed7d --- /dev/null +++ b/API/index.html @@ -0,0 +1,46 @@ + + + + + +API | Stirling-PDF + + + + +
Skip to main content

Stirling PDF API

+

Stirling PDF exposes a simple API for easy integration with external scripts. For an exhaustive list of all available API endpoints and their functions, please refer to the Swagger Documentation.

+

Stirling-PDF's feature set is not entirely confined to the backend, hence not all functionalities are accessible via the API. Certain operations, such as the "view-pdf" or "visually sign", are executed exclusively on the front-end, and as such, they are only available through the Web-UI. If you encounter a situation where some API endpoints appear to be absent, it is likely attributable to these front-end exclusive features.

+

Stirling-PDF also has statistic and health endpoints to integrate with monitoring/dashboard applications +Stats API docs

+

Example CURL Commands

+

Unix

+
curl -X POST "http://localhost:8080/add-watermark" \
+     -H "Content-Type: multipart/form-data" \
+     -F "fileInput=@/Users/username/Downloads/sample-1_cropped.pdf" \
+     -F "watermarkType=text" \
+     -F "watermarkText=YOUR_WATERMARK_TEXT" \
+     -F "alphabet=roman" \
+     -F "fontSize=30" \
+     -F "rotation=0" \
+     -F "opacity=0.5" \
+     -F "widthSpacer=50" \
+     -F "heightSpacer=50" \
+     > "/Users/username/Downloads/output.pdf"
+
+

Windows CMD (Not powershell)

+
curl -X POST "http://localhost:8080/add-watermark" ^
+     -H "Content-Type: multipart/form-data" ^
+     -F "fileInput=@C:\Users\systo\Downloads\sample-1_cropped.pdf" ^
+     -F "watermarkType=text" ^
+     -F "watermarkText=YOUR_WATERMARK_TEXT" ^
+     -F "alphabet=roman" ^
+     -F "fontSize=30" ^
+     -F "rotation=0" ^
+     -F "opacity=0.5" ^
+     -F "widthSpacer=50" ^
+     -F "heightSpacer=50" ^
+     > "C:\Users\systo\Downloads\output.pdf"
+
+ + \ No newline at end of file diff --git a/Advanced Configuration/Endpoint or Feature Customisation/index.html b/Advanced Configuration/Endpoint or Feature Customisation/index.html new file mode 100644 index 0000000..7382415 --- /dev/null +++ b/Advanced Configuration/Endpoint or Feature Customisation/index.html @@ -0,0 +1,25 @@ + + + + + +Endpoints Customisation | Stirling-PDF + + + + +
Skip to main content

Endpoints Customisation

+

You can selectively disable and remove endpoints and functionalities from Stirling PDF as per your requirements. +There are many use-cases for this such as

+
    +
  • Avoid confusion for users for functionality you/your business don't use.
  • +
  • Running a reduced version of Stirling-PDF that doesn't have the necessary server power to support the more advanced features.
  • +
  • Cleanup interface for features you don't use
  • +
+

To do this ENDPOINTS_TO_REMOVE and GROUPS_TO_REMOVE have been setup. +They can include comma-separated lists of endpoints and groups to disable. For example, ENDPOINTS_TO_REMOVE=img-to-pdf,remove-pages would disable both the "image to PDF" and "remove pages" functionalities. +GROUPS_TO_REMOVE=Libre Would disable a group of endpoints, in this case all endpoints which use Libre in the backend.

+

A complete list of all endpoints and groups is available here. +TODO?

+ + \ No newline at end of file diff --git a/Advanced Configuration/How to add configurations/index.html b/Advanced Configuration/How to add configurations/index.html new file mode 100644 index 0000000..2416cc4 --- /dev/null +++ b/Advanced Configuration/How to add configurations/index.html @@ -0,0 +1,122 @@ + + + + + +How to add Configurations | Stirling-PDF + + + + +
Skip to main content

How to add Configurations

+

Stirling PDF allows easy customization of the app. +Includes things like

+
    +
  • Custom application name
  • +
  • Custom slogans, icons, HTML, images CSS etc (via file overrides)
  • +
+

There are two options for this, either using the generated settings file settings.yml +This file is located in the /configs directory and follows standard YAML formatting

+

Environment variables are also supported and would override the settings file +For example in the settings.yml you have

+
system:
+  enableLogin: 'true'
+
+

To have this via an environment variable you would have SYSTEM_ENABLELOGIN

+

The Current list of settings is

+
security:
+  enableLogin: false # set to 'true' to enable login
+  csrfDisabled: true # Set to 'true' to disable CSRF protection (not recommended for production)
+  loginAttemptCount: 5 # lock user account after 5 tries
+  loginResetTimeMinutes: 120 # lock account for 2 hours after x attempts
+#  initialLogin:
+#    username: "admin" # Initial username for the first login
+#    password: "stirling" # Initial password for the first login
+#  oauth2:
+#    enabled: false # set to 'true' to enable login (Note: enableLogin must also be 'true' for this to work)
+#    issuer: "" # set to any provider that supports OpenID Connect Discovery (/.well-known/openid-configuration) end-point
+#    clientId: "" # Client ID from your provider
+#    clientSecret: "" # Client Secret from your provider
+#    autoCreateUser: false # set to 'true' to allow auto-creation of non-existing users
+#    useAsUsername: "email" # Default is 'email'; custom fields can be used as the username
+#    scopes: "openid, profile, email" # Specify the scopes for which the application will request permissions
+#    provider: "google" # Set this to your OAuth provider's name, e.g., 'google' or 'keycloak'
+#    client:
+#      google:
+#        clientId: "" # Client ID for Google OAuth2
+#        clientSecret: "" # Client Secret for Google OAuth2
+#        scopes: "https://www.googleapis.com/auth/userinfo.email, https://www.googleapis.com/auth/userinfo.profile" # Scopes for Google OAuth2
+#        useAsUsername: "email" # Field to use as the username for Google OAuth2
+#      github:
+#        clientId: "" # Client ID for GitHub OAuth2
+#        clientSecret: "" # Client Secret for GitHub OAuth2
+#        scopes: "read:user" # Scope for GitHub OAuth2
+#        useAsUsername: "login" # Field to use as the username for GitHub OAuth2
+#      keycloak:
+#        issuer: "http://192.168.0.123:8888/realms/stirling-pdf" # URL of the Keycloak realm's OpenID Connect Discovery endpoint
+#        clientId: "stirling-pdf" # Client ID for Keycloak OAuth2
+#        clientSecret: "" # Client Secret for Keycloak OAuth2
+#        scopes: "openid, profile, email" # Scopes for Keycloak OAuth2
+#        useAsUsername: "email" # Field to use as the username for Keycloak OAuth2
+
+system:
+  defaultLocale: 'en-US' # Set the default language (e.g. 'de-DE', 'fr-FR', etc)
+  googlevisibility: false # 'true' to allow Google visibility (via robots.txt), 'false' to disallow
+  enableAlphaFunctionality: false # Set to enable functionality which might need more testing before it fully goes live (This feature might make no changes)
+  showUpdate: true # see when a new update is available
+  showUpdateOnlyAdmin: false # Only admins can see when a new update is available, depending on showUpdate it must be set to 'true'
+  customHTMLFiles: false # enable to have files placed in /customFiles/templates override the existing template html files
+
+ui:
+  appName: null # Application's visible name
+  homeDescription: null # Short description or tagline shown on homepage.
+  appNameNavbar: null # Name displayed on the navigation bar
+
+endpoints:
+  toRemove: [] # List endpoints to disable (e.g. ['img-to-pdf', 'remove-pages'])
+  groupsToRemove: [] # List groups to disable (e.g. ['LibreOffice'])
+
+metrics:
+  enabled: true # 'true' to enable Info APIs (`/api/*`) endpoints, 'false' to disable
+
+

There is an additional config file /configs/custom_settings.yml were users familiar with java and spring application.properties can input their own settings on-top of Stirling-PDFs existing ones

+

Extra notes

+
    +
  • Endpoints. Currently, the endpoints ENDPOINTS_TO_REMOVE and GROUPS_TO_REMOVE can include comma separate lists of endpoints and groups to disable as example ENDPOINTS_TO_REMOVE=img-to-pdf,remove-pages would disable both image-to-pdf and remove pages, GROUPS_TO_REMOVE=LibreOffice Would disable all things that use LibreOffice. You can see a list of all endpoints and groups here
  • +
  • customStaticFilePath. Customise static files such as the app logo by placing files in the /customFiles/static/ directory. An example of customising app logo is placing a /customFiles/static/favicon.svg to override current SVG. This can be used to change any images/icons/css/fonts/js etc in Stirling-PDF
  • +
+

Environment only parameters

+
    +
  • SYSTEM_ROOTURIPATH ie set to /pdf-app to Set the application's root URI to localhost:8080/pdf-app
  • +
  • SYSTEM_CONNECTIONTIMEOUTMINUTES to set custom connection timeout values
  • +
  • DOCKER_ENABLE_SECURITY to tell docker to download security jar (required as true for auth login)
  • +
  • INSTALL_BOOK_AND_ADVANCED_HTML_OPS to download calibre onto stirling-pdf enabling pdf to/from book and advanced html conversion
  • +
  • LANGS to define custom font libraries to install for use for document conversions
  • +
+

Local

+

If running Java directly outside of docker, you can set these environment variables before starting the app

+

Unix

+
export UI_APP_NAME="Stirling PDF"
+
+

Windows (CMD)

+
export UI_APP_NAME="Stirling PDF"
+
+

Windows (PowerShell)

+
export UI_APP_NAME="Stirling PDF"
+
+

Docker

+

If in docker you can do it via docker run or compose whichever you are using are part of installation. +Simply add these to the end of your script/file

+

Docker run

+
-e UI_APP_NAME=Stirling PDF \
+-e UI_HOME_DESCRIPTION=Your locally hosted one-stop-shop for all your PDF needs. \
+-e UI_APP_NAVBAR_NAME=Stirling PDF \
+
+

Docker Compose

+
environment:
+  UI_APP_NAME: Stirling PDF
+  UI_HOME_DESCRIPTION: Your locally hosted one-stop-shop for all your PDF needs.
+  UI_APP_NAVBAR_NAME: Stirling PDF
+
+ + \ No newline at end of file diff --git a/Advanced Configuration/OCR/index.html b/Advanced Configuration/OCR/index.html new file mode 100644 index 0000000..6abe0c5 --- /dev/null +++ b/Advanced Configuration/OCR/index.html @@ -0,0 +1,70 @@ + + + + + +OCR (Optical Character Recognition) | Stirling-PDF + + + + +
Skip to main content

OCR Language Packs and Setup

+

This document provides instructions on how to add additional language packs for the OCR tab in Stirling-PDF, both inside and outside of Docker.

+

My OCR used to work and now doesn't!

+

The paths have changed for the tessadata locations on new docker images, please use /usr/share/tessdata (Others should still work for backwards compatibility but might not)

+

How does the OCR Work

+

Stirling-PDF uses OCRmyPDF which in turn uses tesseract for its text recognition. +All credit goes to them for this awesome work!

+

Language Packs

+

Tesseract OCR supports a variety of languages. You can find additional language packs in the Tesseract GitHub repositories:

+
    +
  • tessdata_fast: These language packs are smaller and faster to load, but may provide lower recognition accuracy.
  • +
  • tessdata: These language packs are larger and provide better recognition accuracy, but may take longer to load.
  • +
+

Depending on your requirements, you can choose the appropriate language pack for your use case. By default Stirling-PDF uses the tessdata_fast eng but this can be replaced.

+

Installing Language Packs

+
    +
  1. Download the desired language pack(s) by selecting the .traineddata file(s) for the language(s) you need.
  2. +
  3. Place the .traineddata files in the Tesseract tessdata directory: /usr/share/tessdata
  4. +
+

DO NOT REMOVE EXISTING ENG.TRAINEDDATA, IT'S REQUIRED.

+

Docker

+

If you are using Docker, you need to expose the Tesseract tessdata directory as a volume in order to use the additional language packs.

+

Docker Compose

+

Modify your docker-compose.yml file to include the following volume configuration:

+
services:
+  your_service_name:
+    image: your_docker_image_name
+    volumes:
+      - /location/of/trainingData:/usr/share/tessdata
+
+

Docker run

+

Add the following to your existing docker run command

+
-v /location/of/trainingData:/usr/share/tessdata
+
+

Non-Docker

+

If you are not using Docker, you need to install the OCR components, including the ocrmypdf app. +You can see OCRmyPDF install guide

+

Debian based systems, install languages with this command:

+
sudo apt update &&\
+# All languages
+# sudo apt install -y 'tesseract-ocr-*'
+
+# Find languages:
+apt search tesseract-ocr-
+
+# View installed languages:
+dpkg-query -W tesseract-ocr- | sed 's/tesseract-ocr-//g'
+
+

Fedora:

+
# All languages
+# sudo dnf install -y tesseract-langpack-*
+
+# Find languages:
+dnf search -C tesseract-langpack-
+
+# View installed languages:
+rpm -qa | grep tesseract-langpack | sed 's/tesseract-langpack-//g'
+
+ + \ No newline at end of file diff --git a/Advanced Configuration/Other Customisations/index.html b/Advanced Configuration/Other Customisations/index.html new file mode 100644 index 0000000..484bf3c --- /dev/null +++ b/Advanced Configuration/Other Customisations/index.html @@ -0,0 +1,21 @@ + + + + + +Other Customisations | Stirling-PDF + + + + +
Skip to main content

Other Customisations

+

Stirling PDF offers various other customisation options, such as:

+

Defaulting Language

+

Default language selection via the APP_LOCALE environment variable. Accepted values include de-DE, fr-FR, ar-AR and all other languages codes that are within Stirling-PDFs current list.

+

Google Search Visability (robots.txt)

+

Enable or disable search engine visibility with the ALLOW_GOOGLE_VISIBILITY variable.

+

Custom Root path

+

Redirect the root path of the application using APP_ROOT_PATH. +This is for changing websites like stirlingtools.com to instead host the interface at stirlingtools.com/APP_ROOT_PATH like stirlingtools.com/demo

+ + \ No newline at end of file diff --git a/Advanced Configuration/Single Sign-On Configuration/index.html b/Advanced Configuration/Single Sign-On Configuration/index.html new file mode 100644 index 0000000..a572cac --- /dev/null +++ b/Advanced Configuration/Single Sign-On Configuration/index.html @@ -0,0 +1,68 @@ + + + + + +Single Sign-On (SSO) Configuration | Stirling-PDF + + + + +
Skip to main content

Single Sign-On (SSO) Configuration

+

Stirling PDF allows login via Single Sign-On (SSO) using OAUTH2 OpenID Connect (OIDC) +These are

+
    +
  • oauth2.enabled Set this to 'true' to enable login (Note: enableLogin must also be 'true' for this to work)
  • +
  • oauth2.issuer Set this to any provider that supports OpenID Connect Discovery /.well-known/openid-configuration end-point
  • +
  • oauth2.clientId Client ID from your provider
  • +
  • oauth2.clientSecret Client Secret from your provider
  • +
  • oauth2.autoCreateUser Set this to 'true' to allow auto-creation of non-existing users
  • +
+

The Callback URL (Redirect URL) for entering in your IdP is: https://<striling-pdf.yourdomain>/login/oauth2/code/oidc

+

It is highly recommended to use a SSL-enabled reverse-proxy, if the application is going to be exposed to the internet.

+

After the OAUTH2 login is enabled, a new button shows up on the login page as per the screenshot below:

+

image

+

Settings file

+
security:
+  enableLogin: true # set to 'true' to enable login
+  ...
+  ...
+  oauth2:
+    enabled: false # set to 'true' to enable SSO login (Note: enableLogin must also be 'true' for this to work)
+    issuer: "" # set to any provider that supports OpenID Connect Discovery (/.well-known/openid-configuration) end-point
+    clientId: "" # Client ID from your provider
+    clientSecret: "" # Client Secret from your provider
+    autoCreateUser: false # set to 'true' to allow auto-creation of non-existing users
+
+

Local

+

If running Java directly, you can set these via environment variables by running before starting the application

+
export DOCKER_ENABLE_SECURITY=true
+export SECURITY_ENABLELOGIN=true
+export SECURITY_OAUTH2_ENABLED=true
+export SECURITY_OAUTH2_AUTOCREATEUSER=false
+export SECURITY_OAUTH2_ISSUER="<issuer-url>"
+export SECURITY_OAUTH2_CLIENTID="<client-id>"
+export SECURITY_OAUTH2_CLIENTSECRET="<client-secret>"
+
+

Docker

+

Docker run

+
-e  DOCKER_ENABLE_SECURITY=true \
+-e  SECURITY_ENABLELOGIN=true \
+-e  SECURITY_OAUTH2_ENABLED=true \
+-e  SECURITY_OAUTH2_AUTOCREATEUSER=false \
+-e  SECURITY_OAUTH2_ISSUER="<issuer-url>" \
+-e  SECURITY_OAUTH2_CLIENTID="<client-id>" \
+-e  SECURITY_OAUTH2_CLIENTSECRET="<client-secret>" \
+
+

Docker Compose

+
environment:
+  DOCKER_ENABLE_SECURITY: true
+  SECURITY_ENABLELOGIN: true
+  SECURITY_OAUTH2_ENABLED: true
+  SECURITY_OAUTH2_AUTOCREATEUSER: false
+  SECURITY_OAUTH2_ISSUER: "<issuer-url>"
+  SECURITY_OAUTH2_CLIENTID: "<client-id>"
+  SECURITY_OAUTH2_CLIENTSECRET: "<client-secret>"
+
+ + \ No newline at end of file diff --git a/Advanced Configuration/System and Security/index.html b/Advanced Configuration/System and Security/index.html new file mode 100644 index 0000000..beeed13 --- /dev/null +++ b/Advanced Configuration/System and Security/index.html @@ -0,0 +1,52 @@ + + + + + +System and Security | Stirling-PDF + + + + +
Skip to main content

System and Security

+

Stirling PDF allows custommization of system and security settings +For security please note this section is only enabled if you are using the security jar, for docker that means setting DOCKER_ENABLE_SECURITY to true via a environment variable

+
    +
  • enableLogin This enables or disables the login functionality with
  • +
  • csrfDisabled The description to be displayed on the homepage under the navbar that first greets the user +and
  • +
  • defaultLocale The app name to be shown within to navbar for all pages
  • +
  • googlevisibility The app name to be shown within to navbar for all pages
  • +
+

Settings file

+
security:
+  enableLogin: false # set to 'true' to enable login
+  csrfDisabled: true
+
+system:
+  defaultLocale: 'en-US' # Set the default language (e.g. 'de-DE', 'fr-FR', etc)
+  googlevisibility: false # 'true' to allow Google visibility (via robots.txt), 'false' to disallow
+
+

Local

+

If running Java directly, you can also pass these as properties using -D arguments such as:

+
java -jar Stirling-PDF.jar -DAPP_HOME_NAME="New Application Name"
+
+

Alternatively you can set these via environment variables by running before starting the application

+
export UI_APP_NAME="Stirling PDF"
+export UI_HOME_DESCRIPTION="Your locally hosted one-stop-shop for all your PDF needs."
+export UI_APP_NAVBAR_NAME="Stirling PDF"
+
+

Docker

+

Docker run

+
-e UI_APP_NAME=Stirling PDF \
+-e UI_HOME_DESCRIPTION=Your locally hosted one-stop-shop for all your PDF needs. \
+-e UI_APP_NAVBAR_NAME=Stirling PDF \
+
+

Docker Compose

+
environment:
+  UI_APP_NAME: Stirling PDF
+  UI_HOME_DESCRIPTION: Your locally hosted one-stop-shop for all your PDF needs.
+  UI_APP_NAVBAR_NAME: Stirling PDF
+
+ + \ No newline at end of file diff --git a/Advanced Configuration/UI Customisation/index.html b/Advanced Configuration/UI Customisation/index.html new file mode 100644 index 0000000..39020c7 --- /dev/null +++ b/Advanced Configuration/UI Customisation/index.html @@ -0,0 +1,47 @@ + + + + + +UI Customisation | Stirling-PDF + + + + +
Skip to main content

UI Customisation

+

Stirling PDF allows straightforward customization of the application name to make Stirling-PDF your own +These are

+
    +
  • appName This defines the visible application name showed in the window name and navbar if navbar is not defined separately
  • +
  • homeDescription The description to be displayed on the homepage under the navbar that first greets the user
  • +
  • appNameNavbar The app name to be shown within to navbar for all pages
  • +
+

Settings file

+
ui:
+  appName: exampleAppName # Application's visible name
+  homeDescription: I am a description # Short description or tagline shown on homepage.
+  appNameNavbar: navbarName # Name displayed on the navigation bar
+
+

Local

+

If running Java directly, you can also pass these as properties using -D arguments such as:

+
java -jar Stirling-PDF.jar -DAPP_HOME_NAME="New Application Name"
+
+

Alternatively you can set these via environment variables by running before starting the application

+
export UI_APP_NAME="Stirling PDF"
+export UI_HOME_DESCRIPTION="Your locally hosted one-stop-shop for all your PDF needs."
+export UI_APP_NAVBAR_NAME="Stirling PDF"
+
+

Docker

+

Docker run

+
-e UI_APP_NAME=Stirling PDF \
+-e UI_HOME_DESCRIPTION=Your locally hosted one-stop-shop for all your PDF needs. \
+-e UI_APP_NAVBAR_NAME=Stirling PDF \
+
+

Docker Compose

+
environment:
+  UI_APP_NAME: Stirling PDF
+  UI_HOME_DESCRIPTION: Your locally hosted one-stop-shop for all your PDF needs.
+  UI_APP_NAVBAR_NAME: Stirling PDF
+
+ + \ No newline at end of file diff --git a/CNAME b/CNAME index 2d481d1..c8462f6 100644 --- a/CNAME +++ b/CNAME @@ -1 +1 @@ -docs.stirlingpdf.com \ No newline at end of file +stirlingtools.com diff --git a/Contribute/Code/index.html b/Contribute/Code/index.html new file mode 100644 index 0000000..e65360d --- /dev/null +++ b/Contribute/Code/index.html @@ -0,0 +1,13 @@ + + + + + +Code | Stirling-PDF + + + + +
Skip to main content
+ + \ No newline at end of file diff --git a/Contribute/Language/index.html b/Contribute/Language/index.html new file mode 100644 index 0000000..928ec51 --- /dev/null +++ b/Contribute/Language/index.html @@ -0,0 +1,13 @@ + + + + + +Add a New Language | Stirling-PDF + + + + +
Skip to main content
+ + \ No newline at end of file diff --git a/FAQ/index.html b/FAQ/index.html new file mode 100644 index 0000000..dd3a8e8 --- /dev/null +++ b/FAQ/index.html @@ -0,0 +1,24 @@ + + + + + +Frequently Asked Questions | Stirling-PDF + + + + +
Skip to main content

Frequently Asked Questions

+

Q1: Why are .htm files being downloaded when I use the application?

+

This is often caused by your NGINX configuration. NGINX's default file upload size is 1MB, and any file larger than this will cause an .htm file to be downloaded instead. To fix this issue, you should modify your NGINX configuration to increase the maximum file upload size.

+

Q2: Can I customize the appearance and language of the Stirling PDF application?

+

Yes, Stirling PDF provides several environment variables to allow customization of the application, including the name, description, default language, and visibility to search engines. Please refer to the "Customization" section for more details.

+

Q3: I want to add a new feature to Stirling PDF. How can I contribute?

+

We welcome contributions from the community! Please open an issue on our GitHub page to discuss any large features before making any changes. Any small changes are fully welcome without discussion! After the feature has been discussed and approved, you can make the changes and submit a pull request.

+

Q4: I have a cool idea can you add it?

+

All feedback and suggestions are appreciated. It is best to submit these via a Github issue ticket with [Feature Request] in the title. +You can also reach out in discord but without a ticket to track it the request can often get lost!

+

Q5: I found a bug in Stirling PDF. Where can I report it?

+

Please report any bugs or issues you encounter through our GitHub Issues page. Be sure to include as much detail as possible so we can diagnose and resolve the issue quickly.

+ + \ No newline at end of file diff --git a/Functionality/Convert/Overview/index.html b/Functionality/Convert/Overview/index.html new file mode 100644 index 0000000..7de5175 --- /dev/null +++ b/Functionality/Convert/Overview/index.html @@ -0,0 +1,58 @@ + + + + + +Features - Convert | Stirling-PDF + + + + +
Skip to main content

Features - Convert

+

To PDF

+
    +
  • +

    img-to-pdf: This functionality allows users to convert images into PDF documents.

    +
  • +
  • +

    file-to-pdf: This feature converts various file formats (like DOCX, XLSX, etc.) into PDF.

    +
  • +
  • +

    html-to-pdf: Converts HTML files (And their includes css and images if provided via zip) into a PDF file

    +
  • +
  • +

    url-to-pdf: Renders a URL and converts it to PDF

    +
  • +
  • +

    markdown-to-pdf: Converts a markdown (.md) file to PDF

    +
  • +
+

From PDF

+
    +
  • +

    pdf-to-img: This feature converts PDF documents into image files.

    +
  • +
  • +

    pdf-to-word: This feature allows users to convert PDF documents into Word files.

    +
  • +
  • +

    pdf-to-presentation: With this feature, users can convert PDFs into presentation formats like PPT.

    +
  • +
  • +

    pdf-to-text: This feature enables users to extract text from a PDF by converting it to a text file.

    +
  • +
  • +

    pdf-to-html: This functionality allows users to convert PDFs into HTML format.

    +
  • +
  • +

    pdf-to-xml: This feature enables users to convert PDFs into XML files.

    +
  • +
  • +

    pdf-to-pdfa: This feature transforms PDF files into PDF/A format for long-term archiving.

    +
  • +
  • +

    pdf-to-csv: This feature Tries to detect tables within a PDF which can be exported, This only works with digital PDFs not scanned and is a Work in progress feature due to its complexity

    +
  • +
+ + \ No newline at end of file diff --git a/Functionality/Miscellaneous/Overview/index.html b/Functionality/Miscellaneous/Overview/index.html new file mode 100644 index 0000000..e373fe4 --- /dev/null +++ b/Functionality/Miscellaneous/Overview/index.html @@ -0,0 +1,69 @@ + + + + + +Features - Miscellaneous | Stirling-PDF + + + + +
Skip to main content

Features - Miscellaneous

+
    +
  • +

    ocr-pdf: This feature allows users to perform optical character recognition (OCR) on PDFs, making them searchable and editable.

    +
  • +
  • +

    add-image: This functionality enables users to add image files to their PDF documents.

    +
  • +
  • +

    compress-pdf: This feature allows users to reduce the file size of their PDFs while retaining quality.

    +
  • +
  • +

    extract-images: With this feature, users can extract all images from a PDF document.

    +
  • +
  • +

    change-metadata: This functionality enables users to change the metadata of a PDF, including author name, title, etc.

    +
  • +
  • +

    extract-image-scans: This feature enables users to extract scanned images from PDF files.

    +
  • +
  • +

    sign: This feature allows users to add their writen signature to PDF documents. For digitally signing PDFs see Features - Security --> cert_sign

    +
  • +
  • +

    flatten: This functionality enables users to flatten a PDF, merging interactive form fields with the document.

    +
  • +
  • +

    repair: This feature allows users to repair a corrupted or damaged PDF.

    +
  • +
  • +

    remove-blanks: With this feature, users can remove blank pages from a PDF document.

    +
  • +
  • +

    remove-annotations:

    +
  • +
  • +

    compare: This functionality enables users to compare two PDFs and highlight the differences.

    +
  • +
  • +

    add-page-numbers: Add page numbers (and custom text) to edges of page

    +
  • +
  • +

    auto-rename: Auto renames a PDF based on its header, title or any starter text it can find (tries to use largest font text)

    +
  • +
  • +

    get-info-on-pdf: Grabs and displays all information of a PDF and allows export of info into JSON format

    +
  • +
  • +

    show-javascript: Shows any embedded javascript within a PDF

    +
  • +
  • +

    auto-split-pdf: This Automatically splits documents into seperate files based on the QR code detected between each. It's intent is that a "seperator" page be placed between scans so that bulk scanning can be achieved with splitting as a post process.

    +
  • +
  • +

    add-stamp: Adds a user-defined text or image to the corner of certain or all PDF pages

    +
  • +
+ + \ No newline at end of file diff --git a/Functionality/Page operations/Overview/index.html b/Functionality/Page operations/Overview/index.html new file mode 100644 index 0000000..e510357 --- /dev/null +++ b/Functionality/Page operations/Overview/index.html @@ -0,0 +1,60 @@ + + + + + +Features - Page Operations | Stirling-PDF + + + + +
Skip to main content

Features - Page Operations

+
    +
  • +

    merge-pdfs: With this feature, users can merge multiple PDF documents into a single PDF.

    +
  • +
  • +

    split-pdfs: This functionality enables users to split a single PDF document into multiple separate PDFs.

    +
  • +
  • +

    pdf-organizer: This feature gives users the ability to rearrange, add, or delete pages within a PDF document.

    +
  • +
  • +

    rotate-pdf: With this feature, users can rotate pages within a PDF document to their desired orientation.

    +
  • +
  • +

    remove-pages: This feature allows users to remove specified pages from a PDF document.

    +
  • +
  • +

    multi-page-layout: This functionality allows users to create a layout involving multiple pages of a PDF.

    +
  • +
  • +

    scale-pages: This feature enables users to adjust the scale of pages in a PDF document.

    +
  • +
  • +

    auto-split-pdfs: This allows a user to insert physical divider pages between their documents in their scanner to allow S-PDF to auto separate them

    +
  • +
  • +

    adjust-contrast: Lets the user adjust the contrast, brightness and saturation

    +
  • +
  • +

    crop: Allows user to crop the pages to set size

    +
  • +
  • +

    extract pages: Extracts the defined pages from the PDF into a new PDF document

    +
  • +
  • +

    pdf-to-single-page: Converts multi pages PDF files into a single long pdf page.

    +
  • +
  • +

    split-by-size-or-count: Splits one or multiple PDF files into parts consisting of a maximum file size or page count definde by the user.

    +
  • +
  • +

    overlay-pdf: Can merge multiple PDFs into one another (ontop/behind etc) in various ways

    +
  • +
  • +

    split-pdf-by-sections: Splits a page in multiple section vertically, horizontally or both. Can be used to split a page in half etc.

    +
  • +
+ + \ No newline at end of file diff --git a/Functionality/Security/Overview/index.html b/Functionality/Security/Overview/index.html new file mode 100644 index 0000000..e3ad64d --- /dev/null +++ b/Functionality/Security/Overview/index.html @@ -0,0 +1,39 @@ + + + + + +Features - Security | Stirling-PDF + + + + +
Skip to main content

Features - Security

+
    +
  • +

    add-password: This feature allows users to secure their PDFs by adding a password.

    +
  • +
  • +

    remove-password: With this feature, users can remove the password from a secured PDF.

    +
  • +
  • +

    change-permissions: This functionality allows users to change the permissions of a PDF, controlling how others can view and edit it.

    +
  • +
  • +

    add-watermark: This feature enables users to add custom watermarks to their PDFs.

    +
  • +
  • +

    cert-sign: This feature enables users to digitally sign their PDFs using a certificate. For (hand-)written signatures see Features - Additional Utilities --> sign

    +
  • +
  • +

    sanitize-pdf: This allows the user to remove various things within the PDF which may cause security concern such as javascript, files, links, fonts and metadata.

    +
  • +
  • +

    auto-redact: This features lets the user input text (or regex) to be redacted/blacked out from the pdf document.

    +
  • +
  • +

    get-info-on-pdf: This grabs all info on a PDF such as version, font types, width height and any and all information it can find and puts it within a formatted JSON doc (or visual tables within UI)

    +
  • +
+ + \ No newline at end of file diff --git a/Getting started/Installation/Docker/Docker Install/index.html b/Getting started/Installation/Docker/Docker Install/index.html new file mode 100644 index 0000000..7db4823 --- /dev/null +++ b/Getting started/Installation/Docker/Docker Install/index.html @@ -0,0 +1,53 @@ + + + + + +Installation Guide | Stirling-PDF + + + + +
Skip to main content

Docker Images for Stirling-PDF

+

The docker image for Stirling-PDF is available on Docker Hub at frooodle/s-pdf or on Github at s-pdf.

+

Please note that Stirling PDF offers three distinct versions tailored for various hardware configurations. Users seeking optimal performance on lower-end hardware can choose from the specific versions provided. For those who prefer the most recent features and updates, it is recommended to continue using the latest tag.

+
VersionLatest Tag
Standardlatest
Ultra Litelatest-ultra-lite
+

Run docker container with docker run

+
docker run -d \
+  -p 8080:8080 \
+  -v /location/of/trainingData:/usr/share/tessdata \
+  -v /location/of/extraConfigs:/configs \
+  -v /location/of/logs:/logs \
+  -e DOCKER_ENABLE_SECURITY=false \
+  -e INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false \
+  -e LANGS=en_GB \
+  --name stirling-pdf \
+  frooodle/s-pdf:latest
+
+  Can also add these for customisation but are not required
+  -v /location/of/customFiles:/customFiles \
+
+

Run docker container with docker compose

+
    +
  • docker-compose.yml
  • +
+
version: '3.3'
+services:
+  stirling-pdf:
+    image: frooodle/s-pdf:latest
+    ports:
+      - '8080:8080'
+    volumes:
+      - /location/of/trainingData:/usr/share/tessdata #Required for extra OCR languages
+      - /location/of/extraConfigs:/configs
+#      - /location/of/customFiles:/customFiles/
+#      - /location/of/logs:/logs/
+    environment:
+      - DOCKER_ENABLE_SECURITY=false
+      - INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false
+      - LANGS=en_GB
+
+

Extras

+

For extra parameters and customization please check the advanced configuration page!

+ + \ No newline at end of file diff --git a/Getting started/Installation/Docker/Docker Versions/index.html b/Getting started/Installation/Docker/Docker Versions/index.html new file mode 100644 index 0000000..723daf9 --- /dev/null +++ b/Getting started/Installation/Docker/Docker Versions/index.html @@ -0,0 +1,25 @@ + + + + + +Docker Versions | Stirling-PDF + + + + +
Skip to main content

Docker Versions of Stirling PDF

+

Stirling PDF is avaiable in two distinct docker images:

+
    +
  • Docker Image Size (tag)
  • +
  • Docker Image Size (tag)
  • +
+

Each version caters to different needs based on the specific features required and the storage space available.

+

For an in-depth comparison of what each version offers, please refer to the graph below. +If storage optimization is not a concern, we recommend using the latest tag for the most complete set of features.

+

Here are the different technologies each version uses.

+
TechnologyUltra-LiteFull
Java✔️✔️
JavaScript✔️✔️
Libre✔️
Python✔️
OpenCV✔️
OCRmyPDF✔️
+

And here you see what functions are offered as part of each.

+
OperationUltra-LiteFull
add-page-numbers✔️✔️
add-password✔️✔️
add-image✔️✔️
add-watermark✔️✔️
adjust-contrast✔️✔️
auto-split-pdf✔️✔️
auto-redact✔️✔️
auto-rename✔️✔️
cert-sign✔️✔️
crop✔️✔️
change-metadata✔️✔️
change-permissions✔️✔️
compare✔️✔️
extract-page✔️✔️
extract-images✔️✔️
flatten✔️✔️
get-info-on-pdf✔️✔️
img-to-pdf✔️✔️
markdown-to-pdf✔️✔️
merge-pdfs✔️✔️
multi-page-layout✔️✔️
overlay-pdf✔️✔️
pdf-organizer✔️✔️
pdf-to-csv✔️✔️
pdf-to-img✔️✔️
pdf-to-single-page✔️✔️
remove-blanks✔️✔️
remove-pages✔️✔️
remove-password✔️✔️
rotate-pdf✔️✔️
sanitize-pdf✔️✔️
scale-pages✔️✔️
sign✔️✔️
show-javascript✔️✔️
split-by-size-or-count✔️✔️
split-pdf-by-sections✔️✔️
split-pdfs✔️✔️
compress-pdf✔️
extract-image-scans✔️
ocr-pdf✔️
pdf-to-pdfa✔️
+ + \ No newline at end of file diff --git a/docs/Getting started/Installation/Local/Unix Installation/index.html b/Getting started/Installation/Local/Unix Installation/index.html similarity index 50% rename from docs/Getting started/Installation/Local/Unix Installation/index.html rename to Getting started/Installation/Local/Unix Installation/index.html index ec0d98b..0343b01 100644 --- a/docs/Getting started/Installation/Local/Unix Installation/index.html +++ b/Getting started/Installation/Local/Unix Installation/index.html @@ -3,12 +3,12 @@ -Unix installation Guide | Stirling-PDF - - +Unix installation Guide | Stirling-PDF + + -
Skip to main content

Unix Installation Guide for Stirling PDF

+

Unix Installation Guide for Stirling PDF

To run the application without Docker/Podman, you will need to manually install all dependencies and build the necessary components.

Note that some dependencies might not be available in the standard repositories of all Linux distributions, and may require additional steps to install.

The following guide assumes you have a basic understanding of using a command line interface in your operating system.

@@ -278,6 +278,6 @@

Optional: Run Stir
export APP_HOME_NAME="Stirling PDF"
 or
 -DAPP_HOME_NAME="Stirling PDF"
-

+
\ No newline at end of file diff --git a/Getting started/Installation/Local/Windows Installation/index.html b/Getting started/Installation/Local/Windows Installation/index.html new file mode 100644 index 0000000..fa02ad2 --- /dev/null +++ b/Getting started/Installation/Local/Windows Installation/index.html @@ -0,0 +1,17 @@ + + + + + +Windows installation Guide | Stirling-PDF + + + + +
Skip to main content

Windows Installation Guide for Stirling PDF

+

Stirling PDF provides Windows compatibility through a downloadable .exe file, which can be obtained from here. +This is a streamlined version of the application, offering the same capabilities as the Stirling-PDF-Ultra-lite found in Docker, but in a compact 80MB executable!

+

Simply download and launch the .exe file to access the Stirling-PDF Web-UI. It is important to note that this application requires JAVA 17 or 21. If the application identifies that this version of JAVA isn't installed on your system, it will prompt a link to download the appropriate version.

+

Once launched, the application hosts a web server that is accessible and usable by anyone on your network.

+ + \ No newline at end of file diff --git a/Overview/The Technologies/index.html b/Overview/The Technologies/index.html new file mode 100644 index 0000000..baa6b7f --- /dev/null +++ b/Overview/The Technologies/index.html @@ -0,0 +1,32 @@ + + + + + +The Technologies Behind Stirling PDF | Stirling-PDF + + + + +
Skip to main content

The Technologies Behind Stirling PDF

+

Stirling PDF harnesses several technologies throughout.

+

Java

+

As part of the JAVA framework to host the WebUI itself we use +Spring Boot, Thymeleaf and PDFBox. +Apache PDFBox is the core of the PDF functionality within Stirling-PDF. +They offer a variety of methods to edit PDFs which we have then build Stirling-PDF on. +We also show all licenses used within our Java application here

+

JavaScript

+ +

Others

+

We also use other open source applications along side ours to offer additional functionality.

+
    +
  • LibreOffice for advanced conversions
  • +
  • OCRmyPDF is used for OCR (Optical CHaracter recognition) to change PDF images into text.
  • +
  • GhostScript, Bundled with OCRmyPDF, this is used to compress PDF documents.
  • +
+ + \ No newline at end of file diff --git a/about/index.html b/about/index.html index b4d97bd..aa3bf88 100644 --- a/about/index.html +++ b/about/index.html @@ -3,11 +3,11 @@ -About | Stirling-PDF - - +About | Stirling-PDF + + -
Skip to main content

About Stirling-PDF

Stirling PDF is a powerful, locally-hosted web application for PDF manipulation and processing, designed with privacy as a core principles. Developed as an open-source project, Stirling PDF offers a comprehensive suite of tools to handle all your PDF needs efficiently, while ensuring that your documents never leave your control. Unlike cloud-based web solutions, Stirling PDF processes everything locally meaning all files never leave your network. This privacy-first approach makes Stirling PDF an ideal choice for handling sensitive documents in both personal and professional contexts.

Our Vision

Stirling-PDF was created to provide a locally-hosted alternative to online PDF tools, ensuring complete privacy and control over your documents. The application is continuously improved through community contributions, with new features and language support added regularly. Our long-term goal is to provide comprehensive PDF manipulation capabilities, eliminating the need for expensive Adobe subscriptions. In the short term, we're focused on revolutionizing PDF interactions through seamless automation and ensuring a quick clean UI for simple operations.

Milestones

Our community has shown tremendous support, with two Reddit posts receiving over 400 upvotes each. Stirling-PDF is ranked among the top 20 Java apps by GitHub stars and in the top 400 overall, with over 5 million Docker downloads.

Get Involved

Whether you're an individual user, part of a business, or a developer looking to integrate PDF capabilities into your workflow, Stirling PDF offers a flexible and powerful solution for all your PDF manipulation needs. Join our community on Discord or GitHub and discuss at upcoming features. We'd love to hear your feedback and ideas!


About the Founder

I'm Anthony Stirling from the UK. I started as a passionate software developer and grew into a dedicated DevOps enthusiast. My love for creating, making things, and improving systems drives me every day. My interests range from software development to hosting my own privacy focused selfhosted tech.

Professional Journey

With 5 years in development and 3 years as a DevOps specialist, I've gained a lot of experience. A proud moment for me was being nominated and becoming a runner-up for "Innovation of the Year" at the UK IT Industry Awards representing my previous employer.

+
Skip to main content

About Stirling-PDF

Stirling PDF is a powerful, locally-hosted web application for PDF manipulation and processing, designed with privacy as a core principles. Developed as an open-source project, Stirling PDF offers a comprehensive suite of tools to handle all your PDF needs efficiently, while ensuring that your documents never leave your control. Unlike cloud-based web solutions, Stirling PDF processes everything locally meaning all files never leave your network. This privacy-first approach makes Stirling PDF an ideal choice for handling sensitive documents in both personal and professional contexts.

Our Vision

Stirling-PDF was created to provide a locally-hosted alternative to online PDF tools, ensuring complete privacy and control over your documents. The application is continuously improved through community contributions, with new features and language support added regularly. Our long-term goal is to provide comprehensive PDF manipulation capabilities, eliminating the need for expensive Adobe subscriptions. In the short term, we're focused on revolutionizing PDF interactions through seamless automation and ensuring a quick clean UI for simple operations.

Milestones

Our community has shown tremendous support, with two Reddit posts receiving over 400 upvotes each. Stirling-PDF is ranked among the top 20 Java apps by GitHub stars and in the top 400 overall, with over 5 million Docker downloads.

Get Involved

Whether you're an individual user, part of a business, or a developer looking to integrate PDF capabilities into your workflow, Stirling PDF offers a flexible and powerful solution for all your PDF manipulation needs. Join our community on Discord or GitHub and discuss at upcoming features. We'd love to hear your feedback and ideas!


About the Founder

I'm Anthony Stirling from the UK. I started as a passionate software developer and grew into a dedicated DevOps enthusiast. My love for creating, making things, and improving systems drives me every day. My interests range from software development to hosting my own privacy focused selfhosted tech.

Professional Journey

With 5 years in development and 3 years as a DevOps specialist, I've gained a lot of experience. A proud moment for me was being nominated and becoming a runner-up for "Innovation of the Year" at the UK IT Industry Awards representing my previous employer.

\ No newline at end of file diff --git a/assets/css/styles.7e96ba7c.css b/assets/css/styles.b9e01cf1.css similarity index 84% rename from assets/css/styles.7e96ba7c.css rename to assets/css/styles.b9e01cf1.css index 8d96872..fb660c7 100644 --- a/assets/css/styles.7e96ba7c.css +++ b/assets/css/styles.b9e01cf1.css @@ -1 +1 @@ -.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}.toggleButton_gllP,html{-webkit-tap-highlight-color:transparent}.clean-list,.containsTaskList_mC6p,.details_lb9f>summary,.dropdown__menu,.menu__list{list-style:none}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:#0000;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:#0000000d;--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 #0000001a;--ifm-global-shadow-md:0 5px 40px #0003;--ifm-global-shadow-tl:0 12px 28px 0 #0003,0 2px 4px 0 #0000001a;--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:#0000;--ifm-table-stripe-background:#00000008;--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.125rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem;--docusaurus-progress-bar-color:var(--ifm-color-primary);--ifm-color-primary:#b52e2e;--ifm-color-primary-dark:#a32727;--ifm-color-primary-darker:#8c2323;--ifm-color-primary-darkest:#791f1f;--ifm-color-primary-light:#c93636;--ifm-color-primary-lighter:#db3f3f;--ifm-color-primary-lightest:#ed4a4a;--ifm-code-font-size:95%;--docusaurus-highlighted-code-line-bg:#0000001a;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300);--docusaurus-announcement-bar-height:auto;--docusaurus-collapse-button-bg:#0000;--docusaurus-collapse-button-bg-hover:#0000001a;--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:#0000}*{box-sizing:border-box}html{background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;-webkit-text-size-adjust:100%;text-size-adjust:100%}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.list_eTzJ article:last-child,.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none{margin-top:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.menuExternalLink_NmtK,.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid #0000001a;border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:initial;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}img{max-width:100%}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary,.wordWrapButtonEnabled_EoeP .wordWrapButtonIcon_Bwma{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.admonitionHeading_Gvgb,.alert__heading,.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:#3578e526;--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:#ebedf026;--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:#00a40026;--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:#54c7ec26;--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:#ffba0026;--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:#fa383e26;--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);overflow:hidden;width:var(--ifm-avatar-photo-size)}.card--full-height,.navbar__logo img,body,html{height:100%}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:any-link:hover,.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;-webkit-user-select:none;user-select:none;white-space:nowrap}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:#0000;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column;overflow:hidden}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus,.theme-code-block-highlighted-line .codeLineNumber_Tfdd:before{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}#nprogress,.dropdown__menu,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem;white-space:nowrap}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color);text-decoration:none}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor #0000;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:var(--ifm-footer-logo-max-width)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.docItemContainer_Djhp article>:first-child,.docItemContainer_Djhp header+*,.footer__item{margin-top:0}.admonitionContent_BuS1>:last-child,.cardContainer_fWXF :last-child,.collapsibleContent_i85q p:last-child,.details_lb9f>summary>p:last-child,.footer__items{margin-bottom:0}.codeBlockStandalone_MEMb,[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.details_lb9f[data-collapsed=false].isBrowser_bmU9>summary:before,.details_lb9f[open]:not(.isBrowser_bmU9)>summary:before,.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;top:0;left:0;visibility:hidden}.menu__link{color:var(--ifm-menu-color);flex:1;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color);text-decoration:none}.menu__caret:before,.menu__link--sublist-caret:after{height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;content:"";filter:var(--ifm-menu-link-sublist-icon-filter)}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:1.25rem}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.announcementBarContent_xLdY,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;height:2rem;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.navbar__items--center .navbar__brand{margin:0}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:#ffffff1a;--ifm-navbar-search-input-placeholder-color:#ffffff80;color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:#ffffff0d;--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:.9rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);position:fixed;transform:translate3d(-100%,0,0);transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:#0009;position:fixed;right:0;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination__link:hover{text-decoration:none}.pagination-nav{display:grid;grid-gap:var(--ifm-spacing-horizontal);gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover);text-decoration:none}.pagination-nav__link--next{grid-column:2/3;text-align:right}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"« "}.pagination-nav__link--next .pagination-nav__label:after{content:" »"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs,:not(.containsTaskList_mC6p>li)>.containsTaskList_mC6p{padding-left:0}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto}.tabs__item{border-bottom:3px solid #0000;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:#ffffff0d;--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:#ffffff1a;--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:#ffffff12;--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}[data-theme=dark]{--ifm-color-primary:#d84343;--ifm-color-primary-dark:#c23333;--ifm-color-primary-darker:#b12929;--ifm-color-primary-darkest:#9b1f1f;--ifm-color-primary-light:#e74d4d;--ifm-color-primary-lighter:#f05757;--ifm-color-primary-lightest:#f86969;--docusaurus-highlighted-code-line-bg:#0000004d}.tag_zVej{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_zVej:hover{--docusaurus-tag-list-border:var(--ifm-link-color);text-decoration:none}.tagRegular_sFm0{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_h2kH{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_h2kH:after,.tagWithCount_h2kH:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_h2kH:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_h2kH:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_h2kH span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tags_jXut{display:inline}.tag_QGVx{display:inline-block;margin:0 .4rem .5rem 0}.backToTopButton_sjWU{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.backToTopButton_sjWU:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_xfvO{opacity:1;transform:scale(1);visibility:visible}.skipToContent_fXgn{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem;z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_fXgn:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_CVFx{line-height:0;padding:0}.content_knG7{font-size:85%;padding:5px 0;text-align:center}.content_knG7 a{color:inherit;text-decoration:underline}.announcementBar_mb4j{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}#__docusaurus-base-url-issue-banner-container,.docSidebarContainer_YfHR,.navbarSearchContainer_Bca1:empty,.sidebarLogo_isFc,.themedComponent_mlkZ,[data-theme=dark] .lightToggleIcon_pyhR,[data-theme=light] .darkToggleIcon_wfgR,html[data-announcement-bar-initially-dismissed=true] .announcementBar_mb4j{display:none}.announcementBarPlaceholder_vyr4{flex:0 0 10px}.announcementBarClose_gvF7{align-self:stretch;flex:0 0 30px}.toggle_vylO{height:2rem;width:2rem}.toggleButton_gllP{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.toggleButton_gllP:hover{background:var(--ifm-color-emphasis-200)}.toggleButtonDisabled_aARS{cursor:not-allowed}.darkNavbarColorModeToggle_X3D1:hover{background:var(--ifm-color-gray-800)}[data-theme=dark] .themedComponent--dark_xIcU,[data-theme=light] .themedComponent--light_NVdE,html:not([data-theme]) .themedComponent--light_NVdE{display:initial}[data-theme=dark]:root{--docusaurus-collapse-button-bg:#ffffff0d;--docusaurus-collapse-button-bg-hover:#ffffff1a}.collapseSidebarButton_PEFL{display:none;margin:0}.iconExternalLink_nPIU{margin-left:.3rem}.docMainContainer_TBSr,.docRoot_UBD9{display:flex;width:100%}.docsWrapper_hBAB{display:flex;flex:1 0 auto}.dropdownNavbarItemMobile_S0Fm{cursor:pointer}.iconLanguage_nlXk{margin-right:5px;vertical-align:text-bottom}.navbarHideable_m1mJ{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_jGov{transform:translate3d(0,calc(-100% - 2px),0)}.errorBoundaryError_a6uf{color:red;white-space:pre-wrap}.errorBoundaryFallback_VBag{color:red;padding:.55rem}.buttonGroup__atx button,.codeBlockContainer_Ckt0{background:var(--prism-background-color);color:var(--prism-color)}.footerLogoLink_BH7S{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.footerLogoLink_BH7S:hover,.hash-link:focus,:hover>.hash-link{opacity:1}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}.anchorWithStickyNavbar_LWe7{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorWithHideOnScrollNavbar_WYt5{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);-webkit-user-select:none;user-select:none}.hash-link:before{content:"#"}.mainWrapper_z2l0{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.cardContainer_fWXF{--ifm-link-color:var(--ifm-color-emphasis-800);--ifm-link-hover-color:var(--ifm-color-emphasis-700);--ifm-link-hover-decoration:none;border:1px solid var(--ifm-color-emphasis-200);box-shadow:0 1.5px 3px 0 #00000026;transition:all var(--ifm-transition-fast) ease;transition-property:border,box-shadow}.cardContainer_fWXF:hover{border-color:var(--ifm-color-primary);box-shadow:0 3px 6px 0 #0003}.cardTitle_rnsV{font-size:1.2rem}.cardDescription_PWke{font-size:.8rem}.tag_Nnez{display:inline-block;margin:.5rem .5rem 0 1rem}.features_t9lD{align-items:center;display:flex;padding:2rem 0;width:100%}.featureSvg_GfXr{height:200px;width:200px}.heroBanner_qdFl{overflow:hidden;padding:4rem 0;position:relative;text-align:center}.buttons_AeoN{align-items:center;display:flex;justify-content:center}.codeBlockContainer_Ckt0{border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlockContent_biex{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_Ktv7{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlock_bY9V{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockTitle_Ktv7+.codeBlockContent_biex .codeBlock_bY9V{border-top-left-radius:0;border-top-right-radius:0}.codeBlockLines_e6Vv{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_o6Pm{display:table;padding:var(--ifm-pre-padding) 0}.buttonGroup__atx{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup__atx button{align-items:center;border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;line-height:0;opacity:0;padding:.4rem;transition:opacity var(--ifm-transition-fast) ease-in-out}.buttonGroup__atx button:focus-visible,.buttonGroup__atx button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup__atx button{opacity:.4}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_lJS_{counter-increment:a;display:table-row}.codeLineNumber_Tfdd{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:sticky;text-align:right;width:1%}.codeLineNumber_Tfdd:before{content:counter(a);opacity:.4}.codeLineContent_feaV{padding-right:var(--ifm-pre-padding)}.theme-code-block:hover .copyButtonCopied_obH4{opacity:1!important}.copyButtonIcons_eSgA{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_y97N,.copyButtonSuccessIcon_LjdS{left:0;position:absolute;top:0;fill:currentColor;height:inherit;opacity:inherit;transition:all var(--ifm-transition-fast) ease;width:inherit}.copyButtonSuccessIcon_LjdS{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_obH4 .copyButtonIcon_y97N{opacity:0;transform:scale(.33)}.copyButtonCopied_obH4 .copyButtonSuccessIcon_LjdS{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.wordWrapButtonIcon_Bwma{height:1.2rem;width:1.2rem}.iconEdit_Z9Sw{margin-right:.3em;vertical-align:sub}.details_lb9f{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_lb9f>summary{cursor:pointer;padding-left:1rem;position:relative}.details_lb9f>summary::-webkit-details-marker{display:none}.details_lb9f>summary:before{border-color:#0000 #0000 #0000 var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_i85q{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.lastUpdated_JAkA{font-size:smaller;font-style:italic;margin-top:.2rem}.tocCollapsibleButton_TO0P{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_TO0P:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleButtonExpanded_MG3E:after,.tocCollapsibleExpanded_sAul{transform:none}.tocCollapsible_ETCw{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleContent_vkbj>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_vkbj ul li{margin:.4rem .8rem}.tocCollapsibleContent_vkbj a{display:block}.details_b_Ee{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}.img_ev3q{height:auto}.tableOfContents_bqdL{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.admonition_xJq3{margin-bottom:1em}.admonitionHeading_Gvgb{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family)}.admonitionHeading_Gvgb:not(:last-child){margin-bottom:.3rem}.admonitionHeading_Gvgb code{text-transform:none}.admonitionIcon_Rf37{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_Rf37 svg{display:inline-block;height:1.6em;width:1.6em;fill:var(--ifm-alert-foreground-color)}.breadcrumbHomeIcon_YNFT{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.breadcrumbsContainer_Z_bl{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}.title_kItE{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-leading)*1.25)}.mdxPageWrapper_j9I6{justify-content:center}@media (min-width:997px){.collapseSidebarButton_PEFL,.expandButton_TmdG{background-color:var(--docusaurus-collapse-button-bg)}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_gvF7,.announcementBarPlaceholder_vyr4{flex-basis:50px}.collapseSidebarButton_PEFL{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.collapseSidebarButtonIcon_kv0_{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_i1dp,[dir=rtl] .collapseSidebarButtonIcon_kv0_{transform:rotate(0)}.collapseSidebarButton_PEFL:focus,.collapseSidebarButton_PEFL:hover,.expandButton_TmdG:focus,.expandButton_TmdG:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.menuHtmlItem_M9Kj{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_SIkG{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_SIkG{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_GW3s{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_njMd{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_wUlq{padding-top:0}.sidebarHidden_VK0M{opacity:0;visibility:hidden}.sidebarLogo_isFc{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);text-decoration:none!important}.sidebarLogo_isFc img{height:2rem;margin-right:.5rem}.expandButton_TmdG{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}[dir=rtl] .expandButtonIcon_i1dp{transform:rotate(180deg)}.docSidebarContainer_YfHR{border-right:1px solid var(--ifm-toc-border-color);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_DPk8{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_aRkj{height:100%;max-height:100vh;position:sticky;top:0}.docMainContainer_TBSr{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_lQrH{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_JWYK{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}.navbarSearchContainer_Bca1{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.lastUpdated_JAkA{text-align:right}.tocMobile_ITEo{display:none}.docItemCol_VOVn,.generatedIndexPage_vN6x{max-width:75%!important}.list_eTzJ article:nth-last-child(-n+2){margin-bottom:0!important}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:996px){.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.colorModeToggle_DEke,.footer__link-separator,.navbar__item,.tableOfContents_bqdL{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.navbarSearchContainer_Bca1{position:absolute;right:var(--ifm-navbar-padding-horizontal)}.docItemContainer_F8PC{padding:0 .3rem}}@media screen and (max-width:996px){.heroBanner_qdFl{padding:2rem}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}}@media (hover:hover){.backToTopButton_sjWU:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}}@media print{.announcementBar_mb4j,.footer,.menu,.navbar,.pagination-nav,.table-of-contents,.tocMobile_ITEo{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_e6Vv{white-space:pre-wrap}} \ No newline at end of file +.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}.toggleButton_gllP,html{-webkit-tap-highlight-color:transparent}.clean-list,.containsTaskList_mC6p,.details_lb9f>summary,.dropdown__menu,.menu__list{list-style:none}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:#0000;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:#0000000d;--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 #0000001a;--ifm-global-shadow-md:0 5px 40px #0003;--ifm-global-shadow-tl:0 12px 28px 0 #0003,0 2px 4px 0 #0000001a;--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:#0000;--ifm-table-stripe-background:#00000008;--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.125rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem;--docusaurus-progress-bar-color:var(--ifm-color-primary);--ifm-color-primary:#b52e2e;--ifm-color-primary-dark:#a32727;--ifm-color-primary-darker:#8c2323;--ifm-color-primary-darkest:#791f1f;--ifm-color-primary-light:#c93636;--ifm-color-primary-lighter:#db3f3f;--ifm-color-primary-lightest:#ed4a4a;--ifm-code-font-size:95%;--docusaurus-highlighted-code-line-bg:#0000001a;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300);--docusaurus-announcement-bar-height:auto;--docusaurus-collapse-button-bg:#0000;--docusaurus-collapse-button-bg-hover:#0000001a;--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:#0000}*{box-sizing:border-box}html{background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;-webkit-text-size-adjust:100%;text-size-adjust:100%}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.list_eTzJ article:last-child,.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none{margin-top:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.menuExternalLink_NmtK,.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid #0000001a;border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:initial;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}img{max-width:100%}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary,.wordWrapButtonEnabled_EoeP .wordWrapButtonIcon_Bwma{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.admonitionHeading_Gvgb,.alert__heading,.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:#3578e526;--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:#ebedf026;--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:#00a40026;--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:#54c7ec26;--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:#ffba0026;--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:#fa383e26;--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);overflow:hidden;width:var(--ifm-avatar-photo-size)}.card--full-height,.navbar__logo img,body,html{height:100%}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:any-link:hover,.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;-webkit-user-select:none;user-select:none;white-space:nowrap}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:#0000;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column;overflow:hidden}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus,.theme-code-block-highlighted-line .codeLineNumber_Tfdd:before{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}#nprogress,.dropdown__menu,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem;white-space:nowrap}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color);text-decoration:none}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor #0000;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:var(--ifm-footer-logo-max-width)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.docItemContainer_Djhp article>:first-child,.docItemContainer_Djhp header+*,.footer__item{margin-top:0}.admonitionContent_BuS1>:last-child,.cardContainer_fWXF :last-child,.collapsibleContent_i85q p:last-child,.details_lb9f>summary>p:last-child,.footer__items{margin-bottom:0}.codeBlockStandalone_MEMb,[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.details_lb9f[data-collapsed=false].isBrowser_bmU9>summary:before,.details_lb9f[open]:not(.isBrowser_bmU9)>summary:before,.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;top:0;left:0;visibility:hidden}.menu__link{color:var(--ifm-menu-color);flex:1;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color);text-decoration:none}.menu__caret:before,.menu__link--sublist-caret:after{height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;content:"";filter:var(--ifm-menu-link-sublist-icon-filter)}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:1.25rem}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.announcementBarContent_xLdY,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;height:2rem;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.navbar__items--center .navbar__brand{margin:0}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:#ffffff1a;--ifm-navbar-search-input-placeholder-color:#ffffff80;color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:#ffffff0d;--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:.9rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);position:fixed;transform:translate3d(-100%,0,0);transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:#0009;position:fixed;right:0;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination__link:hover{text-decoration:none}.pagination-nav{display:grid;grid-gap:var(--ifm-spacing-horizontal);gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover);text-decoration:none}.pagination-nav__link--next{grid-column:2/3;text-align:right}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"« "}.pagination-nav__link--next .pagination-nav__label:after{content:" »"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs,:not(.containsTaskList_mC6p>li)>.containsTaskList_mC6p{padding-left:0}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto}.tabs__item{border-bottom:3px solid #0000;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:#ffffff0d;--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:#ffffff1a;--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:#ffffff12;--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}[data-theme=dark]{--ifm-color-primary:#d84343;--ifm-color-primary-dark:#c23333;--ifm-color-primary-darker:#b12929;--ifm-color-primary-darkest:#9b1f1f;--ifm-color-primary-light:#e74d4d;--ifm-color-primary-lighter:#f05757;--ifm-color-primary-lightest:#f86969;--docusaurus-highlighted-code-line-bg:#0000004d}.tag_zVej{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_zVej:hover{--docusaurus-tag-list-border:var(--ifm-link-color);text-decoration:none}.tagRegular_sFm0{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_h2kH{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_h2kH:after,.tagWithCount_h2kH:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_h2kH:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_h2kH:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_h2kH span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tags_jXut{display:inline}.tag_QGVx{display:inline-block;margin:0 .4rem .5rem 0}.backToTopButton_sjWU{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.backToTopButton_sjWU:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_xfvO{opacity:1;transform:scale(1);visibility:visible}.skipToContent_fXgn{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem;z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_fXgn:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_CVFx{line-height:0;padding:0}.content_knG7{font-size:85%;padding:5px 0;text-align:center}.content_knG7 a{color:inherit;text-decoration:underline}.announcementBar_mb4j{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}#__docusaurus-base-url-issue-banner-container,.docSidebarContainer_YfHR,.navbarSearchContainer_Bca1:empty,.sidebarLogo_isFc,.themedComponent_mlkZ,[data-theme=dark] .lightToggleIcon_pyhR,[data-theme=light] .darkToggleIcon_wfgR,html[data-announcement-bar-initially-dismissed=true] .announcementBar_mb4j{display:none}.announcementBarPlaceholder_vyr4{flex:0 0 10px}.announcementBarClose_gvF7{align-self:stretch;flex:0 0 30px}.toggle_vylO{height:2rem;width:2rem}.toggleButton_gllP{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.toggleButton_gllP:hover{background:var(--ifm-color-emphasis-200)}.toggleButtonDisabled_aARS{cursor:not-allowed}.darkNavbarColorModeToggle_X3D1:hover{background:var(--ifm-color-gray-800)}[data-theme=dark] .themedComponent--dark_xIcU,[data-theme=light] .themedComponent--light_NVdE,html:not([data-theme]) .themedComponent--light_NVdE{display:initial}[data-theme=dark]:root{--docusaurus-collapse-button-bg:#ffffff0d;--docusaurus-collapse-button-bg-hover:#ffffff1a}.collapseSidebarButton_PEFL{display:none;margin:0}.iconExternalLink_nPIU{margin-left:.3rem}.docMainContainer_TBSr,.docRoot_UBD9{display:flex;width:100%}.docsWrapper_hBAB{display:flex;flex:1 0 auto}.dropdownNavbarItemMobile_S0Fm{cursor:pointer}.iconLanguage_nlXk{margin-right:5px;vertical-align:text-bottom}.navbarHideable_m1mJ{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_jGov{transform:translate3d(0,calc(-100% - 2px),0)}.errorBoundaryError_a6uf{color:red;white-space:pre-wrap}.errorBoundaryFallback_VBag{color:red;padding:.55rem}.buttonGroup__atx button,.codeBlockContainer_Ckt0{background:var(--prism-background-color);color:var(--prism-color)}.footerLogoLink_BH7S{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.footerLogoLink_BH7S:hover,.hash-link:focus,:hover>.hash-link{opacity:1}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}.anchorWithStickyNavbar_LWe7{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorWithHideOnScrollNavbar_WYt5{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);-webkit-user-select:none;user-select:none}.hash-link:before{content:"#"}.mainWrapper_z2l0{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.cardContainer_fWXF{--ifm-link-color:var(--ifm-color-emphasis-800);--ifm-link-hover-color:var(--ifm-color-emphasis-700);--ifm-link-hover-decoration:none;border:1px solid var(--ifm-color-emphasis-200);box-shadow:0 1.5px 3px 0 #00000026;transition:all var(--ifm-transition-fast) ease;transition-property:border,box-shadow}.cardContainer_fWXF:hover{border-color:var(--ifm-color-primary);box-shadow:0 3px 6px 0 #0003}.cardTitle_rnsV{font-size:1.2rem}.cardDescription_PWke{font-size:.8rem}.tag_Nnez{display:inline-block;margin:.5rem .5rem 0 1rem}.codeBlockContainer_Ckt0{border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlockContent_biex{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_Ktv7{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlock_bY9V{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockTitle_Ktv7+.codeBlockContent_biex .codeBlock_bY9V{border-top-left-radius:0;border-top-right-radius:0}.codeBlockLines_e6Vv{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_o6Pm{display:table;padding:var(--ifm-pre-padding) 0}.buttonGroup__atx{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup__atx button{align-items:center;border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;line-height:0;opacity:0;padding:.4rem;transition:opacity var(--ifm-transition-fast) ease-in-out}.buttonGroup__atx button:focus-visible,.buttonGroup__atx button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup__atx button{opacity:.4}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_lJS_{counter-increment:a;display:table-row}.codeLineNumber_Tfdd{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:sticky;text-align:right;width:1%}.codeLineNumber_Tfdd:before{content:counter(a);opacity:.4}.codeLineContent_feaV{padding-right:var(--ifm-pre-padding)}.theme-code-block:hover .copyButtonCopied_obH4{opacity:1!important}.copyButtonIcons_eSgA{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_y97N,.copyButtonSuccessIcon_LjdS{left:0;position:absolute;top:0;fill:currentColor;height:inherit;opacity:inherit;transition:all var(--ifm-transition-fast) ease;width:inherit}.copyButtonSuccessIcon_LjdS{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_obH4 .copyButtonIcon_y97N{opacity:0;transform:scale(.33)}.copyButtonCopied_obH4 .copyButtonSuccessIcon_LjdS{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.wordWrapButtonIcon_Bwma{height:1.2rem;width:1.2rem}.iconEdit_Z9Sw{margin-right:.3em;vertical-align:sub}.details_lb9f{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_lb9f>summary{cursor:pointer;padding-left:1rem;position:relative}.details_lb9f>summary::-webkit-details-marker{display:none}.details_lb9f>summary:before{border-color:#0000 #0000 #0000 var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_i85q{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.lastUpdated_JAkA{font-size:smaller;font-style:italic;margin-top:.2rem}.tocCollapsibleButton_TO0P{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_TO0P:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleButtonExpanded_MG3E:after,.tocCollapsibleExpanded_sAul{transform:none}.tocCollapsible_ETCw{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleContent_vkbj>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_vkbj ul li{margin:.4rem .8rem}.tocCollapsibleContent_vkbj a{display:block}.details_b_Ee{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}.img_ev3q{height:auto}.tableOfContents_bqdL{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.admonition_xJq3{margin-bottom:1em}.admonitionHeading_Gvgb{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family)}.admonitionHeading_Gvgb:not(:last-child){margin-bottom:.3rem}.admonitionHeading_Gvgb code{text-transform:none}.admonitionIcon_Rf37{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_Rf37 svg{display:inline-block;height:1.6em;width:1.6em;fill:var(--ifm-alert-foreground-color)}.breadcrumbHomeIcon_YNFT{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.breadcrumbsContainer_Z_bl{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}.title_kItE{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-leading)*1.25)}.mdxPageWrapper_j9I6{justify-content:center}@media (min-width:997px){.collapseSidebarButton_PEFL,.expandButton_TmdG{background-color:var(--docusaurus-collapse-button-bg)}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_gvF7,.announcementBarPlaceholder_vyr4{flex-basis:50px}.collapseSidebarButton_PEFL{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.collapseSidebarButtonIcon_kv0_{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_i1dp,[dir=rtl] .collapseSidebarButtonIcon_kv0_{transform:rotate(0)}.collapseSidebarButton_PEFL:focus,.collapseSidebarButton_PEFL:hover,.expandButton_TmdG:focus,.expandButton_TmdG:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.menuHtmlItem_M9Kj{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_SIkG{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_SIkG{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_GW3s{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_njMd{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_wUlq{padding-top:0}.sidebarHidden_VK0M{opacity:0;visibility:hidden}.sidebarLogo_isFc{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);text-decoration:none!important}.sidebarLogo_isFc img{height:2rem;margin-right:.5rem}.expandButton_TmdG{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}[dir=rtl] .expandButtonIcon_i1dp{transform:rotate(180deg)}.docSidebarContainer_YfHR{border-right:1px solid var(--ifm-toc-border-color);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_DPk8{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_aRkj{height:100%;max-height:100vh;position:sticky;top:0}.docMainContainer_TBSr{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_lQrH{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_JWYK{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}.navbarSearchContainer_Bca1{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.lastUpdated_JAkA{text-align:right}.tocMobile_ITEo{display:none}.docItemCol_VOVn,.generatedIndexPage_vN6x{max-width:75%!important}.list_eTzJ article:nth-last-child(-n+2){margin-bottom:0!important}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:996px){.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.colorModeToggle_DEke,.footer__link-separator,.navbar__item,.tableOfContents_bqdL{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.navbarSearchContainer_Bca1{position:absolute;right:var(--ifm-navbar-padding-horizontal)}.docItemContainer_F8PC{padding:0 .3rem}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}}@media (hover:hover){.backToTopButton_sjWU:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}}@media print{.announcementBar_mb4j,.footer,.menu,.navbar,.pagination-nav,.table-of-contents,.tocMobile_ITEo{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_e6Vv{white-space:pre-wrap}} \ No newline at end of file diff --git a/assets/js/05406345.6532c781.js b/assets/js/05406345.6532c781.js deleted file mode 100644 index 44ddc3b..0000000 --- a/assets/js/05406345.6532c781.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[422],{9384:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>l,frontMatter:()=>a,metadata:()=>c,toc:()=>s});var n=r(4848),o=r(5680);const a={sidebar_position:7,id:"Language",title:"Add a New Language",description:"Create a doc page with rich content.",tags:["Language"]},i=void 0,c={id:"Contribute/Language",title:"Add a New Language",description:"Create a doc page with rich content.",source:"@site/docs/Contribute/Language.md",sourceDirName:"Contribute",slug:"/Contribute/Language",permalink:"/docs/Contribute/Language",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/Contribute/Language.md",tags:[{label:"Language",permalink:"/docs/tags/language"}],version:"current",sidebarPosition:7,frontMatter:{sidebar_position:7,id:"Language",title:"Add a New Language",description:"Create a doc page with rich content.",tags:["Language"]},sidebar:"tutorialSidebar",previous:{title:"Code",permalink:"/docs/Contribute/Code"}},u={},s=[];function g(e){const t={a:"a",p:"p",...(0,o.RP)(),...e.components};return(0,n.jsxs)(t.p,{children:["See ",(0,n.jsx)(t.a,{href:"https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md",children:"HowToAddNewLanguage"})]})}function l(e={}){const{wrapper:t}={...(0,o.RP)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(g,{...e})}):g(e)}},5680:(e,t,r)=>{r.d(t,{RP:()=>s});var n=r(6540);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var u=n.createContext({}),s=function(e){var t=n.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},g={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},l=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,u=e.parentName,l=c(e,["components","mdxType","originalType","parentName"]),p=s(r),d=o,b=p["".concat(u,".").concat(d)]||p[d]||g[d]||a;return r?n.createElement(b,i(i({ref:t},l),{},{components:r})):n.createElement(b,i({ref:t},l))}));l.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/05406345.968316a0.js b/assets/js/05406345.968316a0.js new file mode 100644 index 0000000..f883fd1 --- /dev/null +++ b/assets/js/05406345.968316a0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[422],{9384:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>l,frontMatter:()=>o,metadata:()=>c,toc:()=>s});var n=r(4848),a=r(5680);const o={sidebar_position:7,id:"Language",title:"Add a New Language",description:"Create a doc page with rich content.",tags:["Language"]},i=void 0,c={id:"Contribute/Language",title:"Add a New Language",description:"Create a doc page with rich content.",source:"@site/docs/Contribute/Language.md",sourceDirName:"Contribute",slug:"/Contribute/Language",permalink:"/Contribute/Language",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/Contribute/Language.md",tags:[{label:"Language",permalink:"/tags/language"}],version:"current",sidebarPosition:7,frontMatter:{sidebar_position:7,id:"Language",title:"Add a New Language",description:"Create a doc page with rich content.",tags:["Language"]},sidebar:"tutorialSidebar",previous:{title:"Code",permalink:"/Contribute/Code"}},u={},s=[];function g(e){const t={a:"a",p:"p",...(0,a.RP)(),...e.components};return(0,n.jsxs)(t.p,{children:["See ",(0,n.jsx)(t.a,{href:"https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md",children:"HowToAddNewLanguage"})]})}function l(e={}){const{wrapper:t}={...(0,a.RP)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(g,{...e})}):g(e)}},5680:(e,t,r)=>{r.d(t,{RP:()=>s});var n=r(6540);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var u=n.createContext({}),s=function(e){var t=n.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},g={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},l=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,u=e.parentName,l=c(e,["components","mdxType","originalType","parentName"]),p=s(r),d=a,b=p["".concat(u,".").concat(d)]||p[d]||g[d]||o;return r?n.createElement(b,i(i({ref:t},l),{},{components:r})):n.createElement(b,i({ref:t},l))}));l.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/0656e72b.be920fb5.js b/assets/js/0656e72b.be920fb5.js deleted file mode 100644 index 85fa548..0000000 --- a/assets/js/0656e72b.be920fb5.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[864],{8816:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>a,contentTitle:()=>s,default:()=>u,frontMatter:()=>r,metadata:()=>l,toc:()=>c});var t=o(4848),i=o(5680);const r={sidebar_position:1},s="How to add Configurations",l={id:"Advanced Configuration/How to add configurations",title:"How to add Configurations",description:"Stirling PDF allows easy customization of the app.",source:"@site/docs/Advanced Configuration/How to add configurations.md",sourceDirName:"Advanced Configuration",slug:"/Advanced Configuration/How to add configurations",permalink:"/docs/Advanced Configuration/How to add configurations",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/Advanced Configuration/How to add configurations.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Frequently Asked Questions",permalink:"/docs/FAQ"},next:{title:"OCR (Optical Character Recognition)",permalink:"/docs/Advanced Configuration/OCR"}},a={},c=[{value:"Extra notes",id:"extra-notes",level:4},{value:"Environment only parameters",id:"environment-only-parameters",level:3},{value:"Local",id:"local",level:3},{value:"Unix",id:"unix",level:4},{value:"Windows (CMD)",id:"windows-cmd",level:4},{value:"Windows (PowerShell)",id:"windows-powershell",level:4},{value:"Docker",id:"docker",level:3},{value:"Docker run",id:"docker-run",level:4},{value:"Docker Compose",id:"docker-compose",level:4}];function d(e){const n={a:"a",code:"code",h1:"h1",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.RP)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"how-to-add-configurations",children:"How to add Configurations"}),"\n",(0,t.jsx)(n.p,{children:"Stirling PDF allows easy customization of the app.\nIncludes things like"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Custom application name"}),"\n",(0,t.jsx)(n.li,{children:"Custom slogans, icons, HTML, images CSS etc (via file overrides)"}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["There are two options for this, either using the generated settings file ",(0,t.jsx)(n.code,{children:"settings.yml"}),"\nThis file is located in the ",(0,t.jsx)(n.code,{children:"/configs"})," directory and follows standard YAML formatting"]}),"\n",(0,t.jsx)(n.p,{children:"Environment variables are also supported and would override the settings file\nFor example in the settings.yml you have"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:"system:\n enableLogin: 'true'\n"})}),"\n",(0,t.jsxs)(n.p,{children:["To have this via an environment variable you would have ",(0,t.jsx)(n.code,{children:"SYSTEM_ENABLELOGIN"})]}),"\n",(0,t.jsx)(n.p,{children:"The Current list of settings is"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:'security:\n enableLogin: false # set to \'true\' to enable login\n csrfDisabled: true # Set to \'true\' to disable CSRF protection (not recommended for production)\n loginAttemptCount: 5 # lock user account after 5 tries\n loginResetTimeMinutes: 120 # lock account for 2 hours after x attempts\n# initialLogin:\n# username: "admin" # Initial username for the first login\n# password: "stirling" # Initial password for the first login\n# oauth2:\n# enabled: false # set to \'true\' to enable login (Note: enableLogin must also be \'true\' for this to work)\n# issuer: "" # set to any provider that supports OpenID Connect Discovery (/.well-known/openid-configuration) end-point\n# clientId: "" # Client ID from your provider\n# clientSecret: "" # Client Secret from your provider\n# autoCreateUser: false # set to \'true\' to allow auto-creation of non-existing users\n# useAsUsername: "email" # Default is \'email\'; custom fields can be used as the username\n# scopes: "openid, profile, email" # Specify the scopes for which the application will request permissions\n# provider: "google" # Set this to your OAuth provider\'s name, e.g., \'google\' or \'keycloak\'\n# client:\n# google:\n# clientId: "" # Client ID for Google OAuth2\n# clientSecret: "" # Client Secret for Google OAuth2\n# scopes: "https://www.googleapis.com/auth/userinfo.email, https://www.googleapis.com/auth/userinfo.profile" # Scopes for Google OAuth2\n# useAsUsername: "email" # Field to use as the username for Google OAuth2\n# github:\n# clientId: "" # Client ID for GitHub OAuth2\n# clientSecret: "" # Client Secret for GitHub OAuth2\n# scopes: "read:user" # Scope for GitHub OAuth2\n# useAsUsername: "login" # Field to use as the username for GitHub OAuth2\n# keycloak:\n# issuer: "http://192.168.0.123:8888/realms/stirling-pdf" # URL of the Keycloak realm\'s OpenID Connect Discovery endpoint\n# clientId: "stirling-pdf" # Client ID for Keycloak OAuth2\n# clientSecret: "" # Client Secret for Keycloak OAuth2\n# scopes: "openid, profile, email" # Scopes for Keycloak OAuth2\n# useAsUsername: "email" # Field to use as the username for Keycloak OAuth2\n\nsystem:\n defaultLocale: \'en-US\' # Set the default language (e.g. \'de-DE\', \'fr-FR\', etc)\n googlevisibility: false # \'true\' to allow Google visibility (via robots.txt), \'false\' to disallow\n enableAlphaFunctionality: false # Set to enable functionality which might need more testing before it fully goes live (This feature might make no changes)\n showUpdate: true # see when a new update is available\n showUpdateOnlyAdmin: false # Only admins can see when a new update is available, depending on showUpdate it must be set to \'true\'\n customHTMLFiles: false # enable to have files placed in /customFiles/templates override the existing template html files\n\nui:\n appName: null # Application\'s visible name\n homeDescription: null # Short description or tagline shown on homepage.\n appNameNavbar: null # Name displayed on the navigation bar\n\nendpoints:\n toRemove: [] # List endpoints to disable (e.g. [\'img-to-pdf\', \'remove-pages\'])\n groupsToRemove: [] # List groups to disable (e.g. [\'LibreOffice\'])\n\nmetrics:\n enabled: true # \'true\' to enable Info APIs (`/api/*`) endpoints, \'false\' to disable\n'})}),"\n",(0,t.jsxs)(n.p,{children:["There is an additional config file ",(0,t.jsx)(n.code,{children:"/configs/custom_settings.yml"})," were users familiar with java and spring application.properties can input their own settings on-top of Stirling-PDFs existing ones"]}),"\n",(0,t.jsx)(n.h4,{id:"extra-notes",children:"Extra notes"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Endpoints. Currently, the endpoints ENDPOINTS_TO_REMOVE and GROUPS_TO_REMOVE can include comma separate lists of endpoints and groups to disable as example ENDPOINTS_TO_REMOVE=img-to-pdf,remove-pages would disable both image-to-pdf and remove pages, GROUPS_TO_REMOVE=LibreOffice Would disable all things that use LibreOffice. You can see a list of all endpoints and groups ",(0,t.jsx)(n.a,{href:"https://github.com/Stirling-Tools/Stirling-PDF/blob/main/Endpoint-groups.md",children:"here"})]}),"\n",(0,t.jsx)(n.li,{children:"customStaticFilePath. Customise static files such as the app logo by placing files in the /customFiles/static/ directory. An example of customising app logo is placing a /customFiles/static/favicon.svg to override current SVG. This can be used to change any images/icons/css/fonts/js etc in Stirling-PDF"}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"environment-only-parameters",children:"Environment only parameters"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"SYSTEM_ROOTURIPATH"})," ie set to ",(0,t.jsx)(n.code,{children:"/pdf-app"})," to Set the application's root URI to ",(0,t.jsx)(n.code,{children:"localhost:8080/pdf-app"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"SYSTEM_CONNECTIONTIMEOUTMINUTES"})," to set custom connection timeout values"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"DOCKER_ENABLE_SECURITY"})," to tell docker to download security jar (required as true for auth login)"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"INSTALL_BOOK_AND_ADVANCED_HTML_OPS"})," to download calibre onto stirling-pdf enabling pdf to/from book and advanced html conversion"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"LANGS"})," to define custom font libraries to install for use for document conversions"]}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"local",children:"Local"}),"\n",(0,t.jsx)(n.p,{children:"If running Java directly outside of docker, you can set these environment variables before starting the app"}),"\n",(0,t.jsx)(n.h4,{id:"unix",children:"Unix"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:'export UI_APP_NAME="Stirling PDF"\n'})}),"\n",(0,t.jsx)(n.h4,{id:"windows-cmd",children:"Windows (CMD)"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:'export UI_APP_NAME="Stirling PDF"\n'})}),"\n",(0,t.jsx)(n.h4,{id:"windows-powershell",children:"Windows (PowerShell)"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:'export UI_APP_NAME="Stirling PDF"\n'})}),"\n",(0,t.jsx)(n.h3,{id:"docker",children:"Docker"}),"\n",(0,t.jsx)(n.p,{children:"If in docker you can do it via docker run or compose whichever you are using are part of installation.\nSimply add these to the end of your script/file"}),"\n",(0,t.jsx)(n.h4,{id:"docker-run",children:"Docker run"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:"-e UI_APP_NAME=Stirling PDF \\\n-e UI_HOME_DESCRIPTION=Your locally hosted one-stop-shop for all your PDF needs. \\\n-e UI_APP_NAVBAR_NAME=Stirling PDF \\\n"})}),"\n",(0,t.jsx)(n.h4,{id:"docker-compose",children:"Docker Compose"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:"environment:\n UI_APP_NAME: Stirling PDF\n UI_HOME_DESCRIPTION: Your locally hosted one-stop-shop for all your PDF needs.\n UI_APP_NAVBAR_NAME: Stirling PDF\n"})})]})}function u(e={}){const{wrapper:n}={...(0,i.RP)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},5680:(e,n,o)=>{o.d(n,{RP:()=>c});var t=o(6540);function i(e,n,o){return n in e?Object.defineProperty(e,n,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[n]=o,e}function r(e,n){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),o.push.apply(o,t)}return o}function s(e){for(var n=1;n=0||(i[o]=e[o]);return i}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}var a=t.createContext({}),c=function(e){var n=t.useContext(a),o=n;return e&&(o="function"==typeof e?e(n):s(s({},n),e)),o},d={inlineCode:"code",wrapper:function(e){var n=e.children;return t.createElement(t.Fragment,{},n)}},u=t.forwardRef((function(e,n){var o=e.components,i=e.mdxType,r=e.originalType,a=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=c(o),h=i,f=p["".concat(a,".").concat(h)]||p[h]||d[h]||r;return o?t.createElement(f,s(s({ref:n},u),{},{components:o})):t.createElement(f,s({ref:n},u))}));u.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/0656e72b.efc703dd.js b/assets/js/0656e72b.efc703dd.js new file mode 100644 index 0000000..4250918 --- /dev/null +++ b/assets/js/0656e72b.efc703dd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[864],{8816:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>a,contentTitle:()=>s,default:()=>u,frontMatter:()=>r,metadata:()=>l,toc:()=>c});var t=o(4848),i=o(5680);const r={sidebar_position:1},s="How to add Configurations",l={id:"Advanced Configuration/How to add configurations",title:"How to add Configurations",description:"Stirling PDF allows easy customization of the app.",source:"@site/docs/Advanced Configuration/How to add configurations.md",sourceDirName:"Advanced Configuration",slug:"/Advanced Configuration/How to add configurations",permalink:"/Advanced Configuration/How to add configurations",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/Advanced Configuration/How to add configurations.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Frequently Asked Questions",permalink:"/FAQ"},next:{title:"OCR (Optical Character Recognition)",permalink:"/Advanced Configuration/OCR"}},a={},c=[{value:"Extra notes",id:"extra-notes",level:4},{value:"Environment only parameters",id:"environment-only-parameters",level:3},{value:"Local",id:"local",level:3},{value:"Unix",id:"unix",level:4},{value:"Windows (CMD)",id:"windows-cmd",level:4},{value:"Windows (PowerShell)",id:"windows-powershell",level:4},{value:"Docker",id:"docker",level:3},{value:"Docker run",id:"docker-run",level:4},{value:"Docker Compose",id:"docker-compose",level:4}];function d(e){const n={a:"a",code:"code",h1:"h1",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.RP)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"how-to-add-configurations",children:"How to add Configurations"}),"\n",(0,t.jsx)(n.p,{children:"Stirling PDF allows easy customization of the app.\nIncludes things like"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Custom application name"}),"\n",(0,t.jsx)(n.li,{children:"Custom slogans, icons, HTML, images CSS etc (via file overrides)"}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["There are two options for this, either using the generated settings file ",(0,t.jsx)(n.code,{children:"settings.yml"}),"\nThis file is located in the ",(0,t.jsx)(n.code,{children:"/configs"})," directory and follows standard YAML formatting"]}),"\n",(0,t.jsx)(n.p,{children:"Environment variables are also supported and would override the settings file\nFor example in the settings.yml you have"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:"system:\n enableLogin: 'true'\n"})}),"\n",(0,t.jsxs)(n.p,{children:["To have this via an environment variable you would have ",(0,t.jsx)(n.code,{children:"SYSTEM_ENABLELOGIN"})]}),"\n",(0,t.jsx)(n.p,{children:"The Current list of settings is"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:'security:\n enableLogin: false # set to \'true\' to enable login\n csrfDisabled: true # Set to \'true\' to disable CSRF protection (not recommended for production)\n loginAttemptCount: 5 # lock user account after 5 tries\n loginResetTimeMinutes: 120 # lock account for 2 hours after x attempts\n# initialLogin:\n# username: "admin" # Initial username for the first login\n# password: "stirling" # Initial password for the first login\n# oauth2:\n# enabled: false # set to \'true\' to enable login (Note: enableLogin must also be \'true\' for this to work)\n# issuer: "" # set to any provider that supports OpenID Connect Discovery (/.well-known/openid-configuration) end-point\n# clientId: "" # Client ID from your provider\n# clientSecret: "" # Client Secret from your provider\n# autoCreateUser: false # set to \'true\' to allow auto-creation of non-existing users\n# useAsUsername: "email" # Default is \'email\'; custom fields can be used as the username\n# scopes: "openid, profile, email" # Specify the scopes for which the application will request permissions\n# provider: "google" # Set this to your OAuth provider\'s name, e.g., \'google\' or \'keycloak\'\n# client:\n# google:\n# clientId: "" # Client ID for Google OAuth2\n# clientSecret: "" # Client Secret for Google OAuth2\n# scopes: "https://www.googleapis.com/auth/userinfo.email, https://www.googleapis.com/auth/userinfo.profile" # Scopes for Google OAuth2\n# useAsUsername: "email" # Field to use as the username for Google OAuth2\n# github:\n# clientId: "" # Client ID for GitHub OAuth2\n# clientSecret: "" # Client Secret for GitHub OAuth2\n# scopes: "read:user" # Scope for GitHub OAuth2\n# useAsUsername: "login" # Field to use as the username for GitHub OAuth2\n# keycloak:\n# issuer: "http://192.168.0.123:8888/realms/stirling-pdf" # URL of the Keycloak realm\'s OpenID Connect Discovery endpoint\n# clientId: "stirling-pdf" # Client ID for Keycloak OAuth2\n# clientSecret: "" # Client Secret for Keycloak OAuth2\n# scopes: "openid, profile, email" # Scopes for Keycloak OAuth2\n# useAsUsername: "email" # Field to use as the username for Keycloak OAuth2\n\nsystem:\n defaultLocale: \'en-US\' # Set the default language (e.g. \'de-DE\', \'fr-FR\', etc)\n googlevisibility: false # \'true\' to allow Google visibility (via robots.txt), \'false\' to disallow\n enableAlphaFunctionality: false # Set to enable functionality which might need more testing before it fully goes live (This feature might make no changes)\n showUpdate: true # see when a new update is available\n showUpdateOnlyAdmin: false # Only admins can see when a new update is available, depending on showUpdate it must be set to \'true\'\n customHTMLFiles: false # enable to have files placed in /customFiles/templates override the existing template html files\n\nui:\n appName: null # Application\'s visible name\n homeDescription: null # Short description or tagline shown on homepage.\n appNameNavbar: null # Name displayed on the navigation bar\n\nendpoints:\n toRemove: [] # List endpoints to disable (e.g. [\'img-to-pdf\', \'remove-pages\'])\n groupsToRemove: [] # List groups to disable (e.g. [\'LibreOffice\'])\n\nmetrics:\n enabled: true # \'true\' to enable Info APIs (`/api/*`) endpoints, \'false\' to disable\n'})}),"\n",(0,t.jsxs)(n.p,{children:["There is an additional config file ",(0,t.jsx)(n.code,{children:"/configs/custom_settings.yml"})," were users familiar with java and spring application.properties can input their own settings on-top of Stirling-PDFs existing ones"]}),"\n",(0,t.jsx)(n.h4,{id:"extra-notes",children:"Extra notes"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Endpoints. Currently, the endpoints ENDPOINTS_TO_REMOVE and GROUPS_TO_REMOVE can include comma separate lists of endpoints and groups to disable as example ENDPOINTS_TO_REMOVE=img-to-pdf,remove-pages would disable both image-to-pdf and remove pages, GROUPS_TO_REMOVE=LibreOffice Would disable all things that use LibreOffice. You can see a list of all endpoints and groups ",(0,t.jsx)(n.a,{href:"https://github.com/Stirling-Tools/Stirling-PDF/blob/main/Endpoint-groups.md",children:"here"})]}),"\n",(0,t.jsx)(n.li,{children:"customStaticFilePath. Customise static files such as the app logo by placing files in the /customFiles/static/ directory. An example of customising app logo is placing a /customFiles/static/favicon.svg to override current SVG. This can be used to change any images/icons/css/fonts/js etc in Stirling-PDF"}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"environment-only-parameters",children:"Environment only parameters"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"SYSTEM_ROOTURIPATH"})," ie set to ",(0,t.jsx)(n.code,{children:"/pdf-app"})," to Set the application's root URI to ",(0,t.jsx)(n.code,{children:"localhost:8080/pdf-app"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"SYSTEM_CONNECTIONTIMEOUTMINUTES"})," to set custom connection timeout values"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"DOCKER_ENABLE_SECURITY"})," to tell docker to download security jar (required as true for auth login)"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"INSTALL_BOOK_AND_ADVANCED_HTML_OPS"})," to download calibre onto stirling-pdf enabling pdf to/from book and advanced html conversion"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"LANGS"})," to define custom font libraries to install for use for document conversions"]}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"local",children:"Local"}),"\n",(0,t.jsx)(n.p,{children:"If running Java directly outside of docker, you can set these environment variables before starting the app"}),"\n",(0,t.jsx)(n.h4,{id:"unix",children:"Unix"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:'export UI_APP_NAME="Stirling PDF"\n'})}),"\n",(0,t.jsx)(n.h4,{id:"windows-cmd",children:"Windows (CMD)"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:'export UI_APP_NAME="Stirling PDF"\n'})}),"\n",(0,t.jsx)(n.h4,{id:"windows-powershell",children:"Windows (PowerShell)"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:'export UI_APP_NAME="Stirling PDF"\n'})}),"\n",(0,t.jsx)(n.h3,{id:"docker",children:"Docker"}),"\n",(0,t.jsx)(n.p,{children:"If in docker you can do it via docker run or compose whichever you are using are part of installation.\nSimply add these to the end of your script/file"}),"\n",(0,t.jsx)(n.h4,{id:"docker-run",children:"Docker run"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:"-e UI_APP_NAME=Stirling PDF \\\n-e UI_HOME_DESCRIPTION=Your locally hosted one-stop-shop for all your PDF needs. \\\n-e UI_APP_NAVBAR_NAME=Stirling PDF \\\n"})}),"\n",(0,t.jsx)(n.h4,{id:"docker-compose",children:"Docker Compose"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:"environment:\n UI_APP_NAME: Stirling PDF\n UI_HOME_DESCRIPTION: Your locally hosted one-stop-shop for all your PDF needs.\n UI_APP_NAVBAR_NAME: Stirling PDF\n"})})]})}function u(e={}){const{wrapper:n}={...(0,i.RP)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},5680:(e,n,o)=>{o.d(n,{RP:()=>c});var t=o(6540);function i(e,n,o){return n in e?Object.defineProperty(e,n,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[n]=o,e}function r(e,n){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),o.push.apply(o,t)}return o}function s(e){for(var n=1;n=0||(i[o]=e[o]);return i}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}var a=t.createContext({}),c=function(e){var n=t.useContext(a),o=n;return e&&(o="function"==typeof e?e(n):s(s({},n),e)),o},d={inlineCode:"code",wrapper:function(e){var n=e.children;return t.createElement(t.Fragment,{},n)}},u=t.forwardRef((function(e,n){var o=e.components,i=e.mdxType,r=e.originalType,a=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=c(o),h=i,f=p["".concat(a,".").concat(h)]||p[h]||d[h]||r;return o?t.createElement(f,s(s({ref:n},u),{},{components:o})):t.createElement(f,s({ref:n},u))}));u.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/0ccda0bc.1ec869eb.js b/assets/js/0ccda0bc.1ec869eb.js new file mode 100644 index 0000000..4283f5b --- /dev/null +++ b/assets/js/0ccda0bc.1ec869eb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[587],{6091:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>o,contentTitle:()=>l,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>c});var t=i(4848),s=i(5680);const r={sidebar_position:2,id:"Unix Installation",title:"Unix installation Guide"},l="Unix Installation Guide for Stirling PDF",a={id:"Getting started/Installation/Local/Unix Installation",title:"Unix installation Guide",description:"To run the application without Docker/Podman, you will need to manually install all dependencies and build the necessary components.",source:"@site/docs/Getting started/Installation/Local/Unix.md",sourceDirName:"Getting started/Installation/Local",slug:"/Getting started/Installation/Local/Unix Installation",permalink:"/Getting started/Installation/Local/Unix Installation",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/Getting started/Installation/Local/Unix.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2,id:"Unix Installation",title:"Unix installation Guide"},sidebar:"tutorialSidebar",previous:{title:"Installation Guide",permalink:"/Getting started/Installation/Docker/Docker Install"},next:{title:"Windows installation Guide",permalink:"/Getting started/Installation/Local/Windows Installation"}},o={},c=[{value:"Step 1: Prerequisites",id:"step-1-prerequisites",level:3},{value:"Step 2: Clone and Build jbig2enc (Only required for certain OCR functionality)",id:"step-2-clone-and-build-jbig2enc-only-required-for-certain-ocr-functionality",level:3},{value:"Step 3: Install Additional Software",id:"step-3-install-additional-software",level:3},{value:"Step 4: Clone and Build Stirling-PDF",id:"step-4-clone-and-build-stirling-pdf",level:3},{value:"Step 5: Move jar to desired location",id:"step-5-move-jar-to-desired-location",level:3},{value:"Step 6: Other files",id:"step-6-other-files",level:3},{value:"OCR",id:"ocr",level:4},{value:"Installing Language Packs",id:"installing-language-packs",level:5},{value:"Step 7: Run Stirling-PDF",id:"step-7-run-stirling-pdf",level:3},{value:"Step 8: Adding a Desktop icon",id:"step-8-adding-a-desktop-icon",level:3},{value:"Optional: Changing the host and port of the application:",id:"optional-changing-the-host-and-port-of-the-application",level:3},{value:"Optional: Run Stirling-PDF as a service (requires root).",id:"optional-run-stirling-pdf-as-a-service-requires-root",level:3}];function d(e){const n={a:"a",code:"code",h1:"h1",h3:"h3",h4:"h4",h5:"h5",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.RP)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"unix-installation-guide-for-stirling-pdf",children:"Unix Installation Guide for Stirling PDF"}),"\n",(0,t.jsx)(n.p,{children:"To run the application without Docker/Podman, you will need to manually install all dependencies and build the necessary components."}),"\n",(0,t.jsx)(n.p,{children:"Note that some dependencies might not be available in the standard repositories of all Linux distributions, and may require additional steps to install."}),"\n",(0,t.jsx)(n.p,{children:"The following guide assumes you have a basic understanding of using a command line interface in your operating system."}),"\n",(0,t.jsx)(n.p,{children:"It should work on most Linux distributions and MacOS. For Windows, you might need to use Windows Subsystem for Linux (WSL) for certain steps.\nThe amount of dependencies is to actually reduce overall size, ie installing LibreOffice sub components rather than full LibreOffice package."}),"\n",(0,t.jsx)(n.p,{children:"You could theoretically use a Distrobox/Toolbox, if your Distribution has old or not all Packages. But you might just as well use the Docker Container then."}),"\n",(0,t.jsx)(n.h3,{id:"step-1-prerequisites",children:"Step 1: Prerequisites"}),"\n",(0,t.jsx)(n.p,{children:"Install the following software, if not already installed:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Java 17 or later (21 recommended)"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Gradle 7.0 or later (included within repo so not needed on server)"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Git"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Python 3.8 (with pip)"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Make"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"GCC/G++"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Automake"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Autoconf"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"libtool"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"pkg-config"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"zlib1g-dev"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"libleptonica-dev"}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:"For Debian-based systems, you can use the following command:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"sudo apt-get update\nsudo apt-get install -y git automake autoconf libtool libleptonica-dev pkg-config zlib1g-dev make g++ openjdk-21-jdk python3 python3-pip\n"})}),"\n",(0,t.jsx)(n.p,{children:"For Fedora-based systems use this command:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"sudo dnf install -y git automake autoconf libtool leptonica-devel pkg-config zlib-devel make gcc-c++ java-21-openjdk python3 python3-pip\n"})}),"\n",(0,t.jsx)(n.p,{children:"For non-root users with Nix Package Manager, use the following command:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"nix-channel --update\nnix-env -iA nixpkgs.jdk21 nixpkgs.git nixpkgs.python38 nixpkgs.gnumake nixpkgs.libgcc nixpkgs.automake nixpkgs.autoconf nixpkgs.libtool nixpkgs.pkg-config nixpkgs.zlib nixpkgs.leptonica\n"})}),"\n",(0,t.jsx)(n.h3,{id:"step-2-clone-and-build-jbig2enc-only-required-for-certain-ocr-functionality",children:"Step 2: Clone and Build jbig2enc (Only required for certain OCR functionality)"}),"\n",(0,t.jsx)(n.p,{children:"For Debian and Fedora, you can build it from source using the following commands:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"mkdir ~/.git\ncd ~/.git &&\\\ngit clone https://github.com/agl/jbig2enc.git &&\\\ncd jbig2enc &&\\\n./autogen.sh &&\\\n./configure &&\\\nmake &&\\\nsudo make install\n"})}),"\n",(0,t.jsxs)(n.p,{children:["For Nix, you will face ",(0,t.jsx)(n.code,{children:"Leptonica not detected"}),". Bypass this by installing it directly using the following command:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"nix-env -iA nixpkgs.jbig2enc\n"})}),"\n",(0,t.jsx)(n.h3,{id:"step-3-install-additional-software",children:"Step 3: Install Additional Software"}),"\n",(0,t.jsx)(n.p,{children:"Next we need to install LibreOffice for conversions, ocrmypdf for OCR, and opencv for pattern recognition functionality."}),"\n",(0,t.jsx)(n.p,{children:"Install the following software:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"libreoffice-core"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"libreoffice-common"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"libreoffice-writer"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"libreoffice-calc"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"libreoffice-impress"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"python3-uno"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"unoconv"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"pngquant"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"unpaper"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"ocrmypdf"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"opencv-python-headless"}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:"For Debian-based systems, you can use the following command:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"sudo apt-get install -y libreoffice-writer libreoffice-calc libreoffice-impress unpaper ocrmypdf\npip3 install uno opencv-python-headless unoconv pngquant WeasyPrint --break-system-packages\n"})}),"\n",(0,t.jsx)(n.p,{children:"For Fedora:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"sudo dnf install -y libreoffice-writer libreoffice-calc libreoffice-impress unpaper ocrmypdf\npip3 install uno opencv-python-headless unoconv pngquant WeasyPrint\n"})}),"\n",(0,t.jsx)(n.p,{children:"For Nix:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"nix-env -iA nixpkgs.unpaper nixpkgs.libreoffice nixpkgs.ocrmypdf nixpkgs.poppler_utils\npip3 install uno opencv-python-headless unoconv pngquant WeasyPrint\n"})}),"\n",(0,t.jsx)(n.h3,{id:"step-4-clone-and-build-stirling-pdf",children:"Step 4: Clone and Build Stirling-PDF"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"cd ~/.git &&\\\ngit clone https://github.com/Stirling-Tools/Stirling-PDF.git &&\\\ncd Stirling-PDF &&\\\nchmod +x ./gradlew &&\\\n./gradlew build\n"})}),"\n",(0,t.jsx)(n.h3,{id:"step-5-move-jar-to-desired-location",children:"Step 5: Move jar to desired location"}),"\n",(0,t.jsxs)(n.p,{children:["After the build process, a ",(0,t.jsx)(n.code,{children:".jar"})," file will be generated in the ",(0,t.jsx)(n.code,{children:"build/libs"})," directory.\nYou can move this file to a desired location, for example, ",(0,t.jsx)(n.code,{children:"/opt/Stirling-PDF/"}),".\nYou must also move the Script folder within the Stirling-PDF repo that you have downloaded to this directory.\nThis folder is required for the python scripts using OpenCV."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:'sudo mkdir /opt/Stirling-PDF &&\\\nsudo mv ./build/libs/Stirling-PDF-*.jar /opt/Stirling-PDF/ &&\\\nsudo mv scripts /opt/Stirling-PDF/ &&\\\necho "Scripts installed."\n'})}),"\n",(0,t.jsx)(n.p,{children:"For non-root users, you can just keep the jar in the main directory of Stirling-PDF using the following command:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"mv ./build/libs/Stirling-PDF-*.jar ./Stirling-PDF-*.jar\n"})}),"\n",(0,t.jsx)(n.h3,{id:"step-6-other-files",children:"Step 6: Other files"}),"\n",(0,t.jsx)(n.h4,{id:"ocr",children:"OCR"}),"\n",(0,t.jsx)(n.p,{children:"If you plan to use the OCR (Optical Character Recognition) functionality, you might need to install language packs for Tesseract if running non-english scanning."}),"\n",(0,t.jsx)(n.h5,{id:"installing-language-packs",children:"Installing Language Packs"}),"\n",(0,t.jsx)(n.p,{children:"Easiest is to use the langpacks provided by your repositories. Skip the other steps."}),"\n",(0,t.jsx)(n.p,{children:"Manual:"}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:["Download the desired language pack(s) by selecting the ",(0,t.jsx)(n.code,{children:".traineddata"})," file(s) for the language(s) you need."]}),"\n",(0,t.jsxs)(n.li,{children:["Place the ",(0,t.jsx)(n.code,{children:".traineddata"})," files in the Tesseract tessdata directory: ",(0,t.jsx)(n.code,{children:"/usr/share/tessdata"})]}),"\n",(0,t.jsxs)(n.li,{children:["Please view ",(0,t.jsx)(n.a,{href:"https://ocrmypdf.readthedocs.io/en/latest/installation.html",children:"OCRmyPDF install guide"})," for more info."]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"IMPORTANT:"})," DO NOT REMOVE EXISTING ",(0,t.jsx)(n.code,{children:"eng.traineddata"}),", IT'S REQUIRED."]}),"\n",(0,t.jsx)(n.p,{children:"Debian based systems, install languages with this command:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"sudo apt update &&\\\n# All languages\n# sudo apt install -y 'tesseract-ocr-*'\n\n# Find languages:\napt search tesseract-ocr-\n\n# View installed languages:\ndpkg-query -W tesseract-ocr- | sed 's/tesseract-ocr-//g'\n"})}),"\n",(0,t.jsx)(n.p,{children:"Fedora:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"# All languages\n# sudo dnf install -y tesseract-langpack-*\n\n# Find languages:\ndnf search -C tesseract-langpack-\n\n# View installed languages:\nrpm -qa | grep tesseract-langpack | sed 's/tesseract-langpack-//g'\n"})}),"\n",(0,t.jsx)(n.p,{children:"Nix:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"nix-env -iA nixpkgs.tesseract\n"})}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Note:"})," Nix Package Manager pre-installs almost all the language packs when tesseract is installed."]}),"\n",(0,t.jsx)(n.h3,{id:"step-7-run-stirling-pdf",children:"Step 7: Run Stirling-PDF"}),"\n",(0,t.jsx)(n.p,{children:"Those who have pushed to the root directory, run the following commands:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"./gradlew bootRun\nor\njava -jar /opt/Stirling-PDF/Stirling-PDF-*.jar\n"})}),"\n",(0,t.jsxs)(n.p,{children:["Since libreoffice, soffice, and conversion tools have their dbus_tmp_dir set as ",(0,t.jsx)(n.code,{children:'dbus_tmp_dir="/run/user/$(id -u)/libreoffice-dbus"'}),", you might get the following error when using their endpoints:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:"[Thread-7] INFO s.s.SPDF.utils.ProcessExecutor - mkdir: cannot create directory \u2018/run/user/1501\u2019: Permission denied\n"})}),"\n",(0,t.jsx)(n.p,{children:"To resolve this, before starting the Stirling-PDF, you have to set the environment variable to a directory you have write access to by using the following commands:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:'mkdir temp\nexport DBUS_SESSION_BUS_ADDRESS="unix:path=./temp"\n./gradlew bootRun\nor\njava -jar ./Stirling-PDF-*.jar\n'})}),"\n",(0,t.jsx)(n.h3,{id:"step-8-adding-a-desktop-icon",children:"Step 8: Adding a Desktop icon"}),"\n",(0,t.jsx)(n.p,{children:"This will add a modified Appstarter to your Appmenu."}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"location=$(pwd)/gradlew\nimage=$(pwd)/docs/stirling-transparent.svg\n\ncat > ~/.local/share/applications/Stirling-PDF.desktop <{i.d(n,{RP:()=>c});var t=i(6540);function s(e,n,i){return n in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i,e}function r(e,n){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),i.push.apply(i,t)}return i}function l(e){for(var n=1;n=0||(s[i]=e[i]);return s}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(s[i]=e[i])}return s}var o=t.createContext({}),c=function(e){var n=t.useContext(o),i=n;return e&&(i="function"==typeof e?e(n):l(l({},n),e)),i},d={inlineCode:"code",wrapper:function(e){var n=e.children;return t.createElement(t.Fragment,{},n)}},h=t.forwardRef((function(e,n){var i=e.components,s=e.mdxType,r=e.originalType,o=e.parentName,h=a(e,["components","mdxType","originalType","parentName"]),p=c(i),u=s,g=p["".concat(o,".").concat(u)]||p[u]||d[u]||r;return i?t.createElement(g,l(l({ref:n},h),{},{components:i})):t.createElement(g,l({ref:n},h))}));h.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/0ccda0bc.32d30fa9.js b/assets/js/0ccda0bc.32d30fa9.js deleted file mode 100644 index a2cc697..0000000 --- a/assets/js/0ccda0bc.32d30fa9.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[587],{6091:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>o,contentTitle:()=>l,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>c});var t=i(4848),s=i(5680);const r={sidebar_position:2,id:"Unix Installation",title:"Unix installation Guide"},l="Unix Installation Guide for Stirling PDF",a={id:"Getting started/Installation/Local/Unix Installation",title:"Unix installation Guide",description:"To run the application without Docker/Podman, you will need to manually install all dependencies and build the necessary components.",source:"@site/docs/Getting started/Installation/Local/Unix.md",sourceDirName:"Getting started/Installation/Local",slug:"/Getting started/Installation/Local/Unix Installation",permalink:"/docs/Getting started/Installation/Local/Unix Installation",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/Getting started/Installation/Local/Unix.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2,id:"Unix Installation",title:"Unix installation Guide"},sidebar:"tutorialSidebar",previous:{title:"Installation Guide",permalink:"/docs/Getting started/Installation/Docker/Docker Install"},next:{title:"Windows installation Guide",permalink:"/docs/Getting started/Installation/Local/Windows Installation"}},o={},c=[{value:"Step 1: Prerequisites",id:"step-1-prerequisites",level:3},{value:"Step 2: Clone and Build jbig2enc (Only required for certain OCR functionality)",id:"step-2-clone-and-build-jbig2enc-only-required-for-certain-ocr-functionality",level:3},{value:"Step 3: Install Additional Software",id:"step-3-install-additional-software",level:3},{value:"Step 4: Clone and Build Stirling-PDF",id:"step-4-clone-and-build-stirling-pdf",level:3},{value:"Step 5: Move jar to desired location",id:"step-5-move-jar-to-desired-location",level:3},{value:"Step 6: Other files",id:"step-6-other-files",level:3},{value:"OCR",id:"ocr",level:4},{value:"Installing Language Packs",id:"installing-language-packs",level:5},{value:"Step 7: Run Stirling-PDF",id:"step-7-run-stirling-pdf",level:3},{value:"Step 8: Adding a Desktop icon",id:"step-8-adding-a-desktop-icon",level:3},{value:"Optional: Changing the host and port of the application:",id:"optional-changing-the-host-and-port-of-the-application",level:3},{value:"Optional: Run Stirling-PDF as a service (requires root).",id:"optional-run-stirling-pdf-as-a-service-requires-root",level:3}];function d(e){const n={a:"a",code:"code",h1:"h1",h3:"h3",h4:"h4",h5:"h5",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.RP)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"unix-installation-guide-for-stirling-pdf",children:"Unix Installation Guide for Stirling PDF"}),"\n",(0,t.jsx)(n.p,{children:"To run the application without Docker/Podman, you will need to manually install all dependencies and build the necessary components."}),"\n",(0,t.jsx)(n.p,{children:"Note that some dependencies might not be available in the standard repositories of all Linux distributions, and may require additional steps to install."}),"\n",(0,t.jsx)(n.p,{children:"The following guide assumes you have a basic understanding of using a command line interface in your operating system."}),"\n",(0,t.jsx)(n.p,{children:"It should work on most Linux distributions and MacOS. For Windows, you might need to use Windows Subsystem for Linux (WSL) for certain steps.\nThe amount of dependencies is to actually reduce overall size, ie installing LibreOffice sub components rather than full LibreOffice package."}),"\n",(0,t.jsx)(n.p,{children:"You could theoretically use a Distrobox/Toolbox, if your Distribution has old or not all Packages. But you might just as well use the Docker Container then."}),"\n",(0,t.jsx)(n.h3,{id:"step-1-prerequisites",children:"Step 1: Prerequisites"}),"\n",(0,t.jsx)(n.p,{children:"Install the following software, if not already installed:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Java 17 or later (21 recommended)"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Gradle 7.0 or later (included within repo so not needed on server)"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Git"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Python 3.8 (with pip)"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Make"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"GCC/G++"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Automake"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Autoconf"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"libtool"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"pkg-config"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"zlib1g-dev"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"libleptonica-dev"}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:"For Debian-based systems, you can use the following command:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"sudo apt-get update\nsudo apt-get install -y git automake autoconf libtool libleptonica-dev pkg-config zlib1g-dev make g++ openjdk-21-jdk python3 python3-pip\n"})}),"\n",(0,t.jsx)(n.p,{children:"For Fedora-based systems use this command:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"sudo dnf install -y git automake autoconf libtool leptonica-devel pkg-config zlib-devel make gcc-c++ java-21-openjdk python3 python3-pip\n"})}),"\n",(0,t.jsx)(n.p,{children:"For non-root users with Nix Package Manager, use the following command:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"nix-channel --update\nnix-env -iA nixpkgs.jdk21 nixpkgs.git nixpkgs.python38 nixpkgs.gnumake nixpkgs.libgcc nixpkgs.automake nixpkgs.autoconf nixpkgs.libtool nixpkgs.pkg-config nixpkgs.zlib nixpkgs.leptonica\n"})}),"\n",(0,t.jsx)(n.h3,{id:"step-2-clone-and-build-jbig2enc-only-required-for-certain-ocr-functionality",children:"Step 2: Clone and Build jbig2enc (Only required for certain OCR functionality)"}),"\n",(0,t.jsx)(n.p,{children:"For Debian and Fedora, you can build it from source using the following commands:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"mkdir ~/.git\ncd ~/.git &&\\\ngit clone https://github.com/agl/jbig2enc.git &&\\\ncd jbig2enc &&\\\n./autogen.sh &&\\\n./configure &&\\\nmake &&\\\nsudo make install\n"})}),"\n",(0,t.jsxs)(n.p,{children:["For Nix, you will face ",(0,t.jsx)(n.code,{children:"Leptonica not detected"}),". Bypass this by installing it directly using the following command:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"nix-env -iA nixpkgs.jbig2enc\n"})}),"\n",(0,t.jsx)(n.h3,{id:"step-3-install-additional-software",children:"Step 3: Install Additional Software"}),"\n",(0,t.jsx)(n.p,{children:"Next we need to install LibreOffice for conversions, ocrmypdf for OCR, and opencv for pattern recognition functionality."}),"\n",(0,t.jsx)(n.p,{children:"Install the following software:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"libreoffice-core"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"libreoffice-common"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"libreoffice-writer"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"libreoffice-calc"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"libreoffice-impress"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"python3-uno"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"unoconv"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"pngquant"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"unpaper"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"ocrmypdf"}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"opencv-python-headless"}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:"For Debian-based systems, you can use the following command:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"sudo apt-get install -y libreoffice-writer libreoffice-calc libreoffice-impress unpaper ocrmypdf\npip3 install uno opencv-python-headless unoconv pngquant WeasyPrint --break-system-packages\n"})}),"\n",(0,t.jsx)(n.p,{children:"For Fedora:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"sudo dnf install -y libreoffice-writer libreoffice-calc libreoffice-impress unpaper ocrmypdf\npip3 install uno opencv-python-headless unoconv pngquant WeasyPrint\n"})}),"\n",(0,t.jsx)(n.p,{children:"For Nix:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"nix-env -iA nixpkgs.unpaper nixpkgs.libreoffice nixpkgs.ocrmypdf nixpkgs.poppler_utils\npip3 install uno opencv-python-headless unoconv pngquant WeasyPrint\n"})}),"\n",(0,t.jsx)(n.h3,{id:"step-4-clone-and-build-stirling-pdf",children:"Step 4: Clone and Build Stirling-PDF"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"cd ~/.git &&\\\ngit clone https://github.com/Stirling-Tools/Stirling-PDF.git &&\\\ncd Stirling-PDF &&\\\nchmod +x ./gradlew &&\\\n./gradlew build\n"})}),"\n",(0,t.jsx)(n.h3,{id:"step-5-move-jar-to-desired-location",children:"Step 5: Move jar to desired location"}),"\n",(0,t.jsxs)(n.p,{children:["After the build process, a ",(0,t.jsx)(n.code,{children:".jar"})," file will be generated in the ",(0,t.jsx)(n.code,{children:"build/libs"})," directory.\nYou can move this file to a desired location, for example, ",(0,t.jsx)(n.code,{children:"/opt/Stirling-PDF/"}),".\nYou must also move the Script folder within the Stirling-PDF repo that you have downloaded to this directory.\nThis folder is required for the python scripts using OpenCV."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:'sudo mkdir /opt/Stirling-PDF &&\\\nsudo mv ./build/libs/Stirling-PDF-*.jar /opt/Stirling-PDF/ &&\\\nsudo mv scripts /opt/Stirling-PDF/ &&\\\necho "Scripts installed."\n'})}),"\n",(0,t.jsx)(n.p,{children:"For non-root users, you can just keep the jar in the main directory of Stirling-PDF using the following command:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"mv ./build/libs/Stirling-PDF-*.jar ./Stirling-PDF-*.jar\n"})}),"\n",(0,t.jsx)(n.h3,{id:"step-6-other-files",children:"Step 6: Other files"}),"\n",(0,t.jsx)(n.h4,{id:"ocr",children:"OCR"}),"\n",(0,t.jsx)(n.p,{children:"If you plan to use the OCR (Optical Character Recognition) functionality, you might need to install language packs for Tesseract if running non-english scanning."}),"\n",(0,t.jsx)(n.h5,{id:"installing-language-packs",children:"Installing Language Packs"}),"\n",(0,t.jsx)(n.p,{children:"Easiest is to use the langpacks provided by your repositories. Skip the other steps."}),"\n",(0,t.jsx)(n.p,{children:"Manual:"}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:["Download the desired language pack(s) by selecting the ",(0,t.jsx)(n.code,{children:".traineddata"})," file(s) for the language(s) you need."]}),"\n",(0,t.jsxs)(n.li,{children:["Place the ",(0,t.jsx)(n.code,{children:".traineddata"})," files in the Tesseract tessdata directory: ",(0,t.jsx)(n.code,{children:"/usr/share/tessdata"})]}),"\n",(0,t.jsxs)(n.li,{children:["Please view ",(0,t.jsx)(n.a,{href:"https://ocrmypdf.readthedocs.io/en/latest/installation.html",children:"OCRmyPDF install guide"})," for more info."]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"IMPORTANT:"})," DO NOT REMOVE EXISTING ",(0,t.jsx)(n.code,{children:"eng.traineddata"}),", IT'S REQUIRED."]}),"\n",(0,t.jsx)(n.p,{children:"Debian based systems, install languages with this command:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"sudo apt update &&\\\n# All languages\n# sudo apt install -y 'tesseract-ocr-*'\n\n# Find languages:\napt search tesseract-ocr-\n\n# View installed languages:\ndpkg-query -W tesseract-ocr- | sed 's/tesseract-ocr-//g'\n"})}),"\n",(0,t.jsx)(n.p,{children:"Fedora:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"# All languages\n# sudo dnf install -y tesseract-langpack-*\n\n# Find languages:\ndnf search -C tesseract-langpack-\n\n# View installed languages:\nrpm -qa | grep tesseract-langpack | sed 's/tesseract-langpack-//g'\n"})}),"\n",(0,t.jsx)(n.p,{children:"Nix:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"nix-env -iA nixpkgs.tesseract\n"})}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Note:"})," Nix Package Manager pre-installs almost all the language packs when tesseract is installed."]}),"\n",(0,t.jsx)(n.h3,{id:"step-7-run-stirling-pdf",children:"Step 7: Run Stirling-PDF"}),"\n",(0,t.jsx)(n.p,{children:"Those who have pushed to the root directory, run the following commands:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"./gradlew bootRun\nor\njava -jar /opt/Stirling-PDF/Stirling-PDF-*.jar\n"})}),"\n",(0,t.jsxs)(n.p,{children:["Since libreoffice, soffice, and conversion tools have their dbus_tmp_dir set as ",(0,t.jsx)(n.code,{children:'dbus_tmp_dir="/run/user/$(id -u)/libreoffice-dbus"'}),", you might get the following error when using their endpoints:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:"[Thread-7] INFO s.s.SPDF.utils.ProcessExecutor - mkdir: cannot create directory \u2018/run/user/1501\u2019: Permission denied\n"})}),"\n",(0,t.jsx)(n.p,{children:"To resolve this, before starting the Stirling-PDF, you have to set the environment variable to a directory you have write access to by using the following commands:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:'mkdir temp\nexport DBUS_SESSION_BUS_ADDRESS="unix:path=./temp"\n./gradlew bootRun\nor\njava -jar ./Stirling-PDF-*.jar\n'})}),"\n",(0,t.jsx)(n.h3,{id:"step-8-adding-a-desktop-icon",children:"Step 8: Adding a Desktop icon"}),"\n",(0,t.jsx)(n.p,{children:"This will add a modified Appstarter to your Appmenu."}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"location=$(pwd)/gradlew\nimage=$(pwd)/docs/stirling-transparent.svg\n\ncat > ~/.local/share/applications/Stirling-PDF.desktop <{i.d(n,{RP:()=>c});var t=i(6540);function s(e,n,i){return n in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i,e}function r(e,n){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),i.push.apply(i,t)}return i}function l(e){for(var n=1;n=0||(s[i]=e[i]);return s}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(s[i]=e[i])}return s}var o=t.createContext({}),c=function(e){var n=t.useContext(o),i=n;return e&&(i="function"==typeof e?e(n):l(l({},n),e)),i},d={inlineCode:"code",wrapper:function(e){var n=e.children;return t.createElement(t.Fragment,{},n)}},h=t.forwardRef((function(e,n){var i=e.components,s=e.mdxType,r=e.originalType,o=e.parentName,h=a(e,["components","mdxType","originalType","parentName"]),p=c(i),u=s,g=p["".concat(o,".").concat(u)]||p[u]||d[u]||r;return i?t.createElement(g,l(l({ref:n},h),{},{components:i})):t.createElement(g,l({ref:n},h))}));h.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/13dffe26.cd9440aa.js b/assets/js/13dffe26.cd9440aa.js new file mode 100644 index 0000000..bb2f9c8 --- /dev/null +++ b/assets/js/13dffe26.cd9440aa.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[750],{4980:e=>{e.exports=JSON.parse('{"tags":[{"label":"API","permalink":"/tags/api","count":1},{"label":"Code","permalink":"/tags/code","count":1},{"label":"Language","permalink":"/tags/language","count":1}]}')}}]); \ No newline at end of file diff --git a/assets/js/186bd3b4.595488b6.js b/assets/js/186bd3b4.595488b6.js deleted file mode 100644 index 3b4771d..0000000 --- a/assets/js/186bd3b4.595488b6.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[149],{8691:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>s,default:()=>l,frontMatter:()=>i,metadata:()=>a,toc:()=>d});var o=t(4848),r=t(5680);const i={sidebar_position:2},s="Endpoints Customisation",a={id:"Advanced Configuration/Endpoint or Feature Customisation",title:"Endpoints Customisation",description:"You can selectively disable and remove endpoints and functionalities from Stirling PDF as per your requirements.",source:"@site/docs/Advanced Configuration/Endpoint or Feature Customisation.md",sourceDirName:"Advanced Configuration",slug:"/Advanced Configuration/Endpoint or Feature Customisation",permalink:"/docs/Advanced Configuration/Endpoint or Feature Customisation",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/Advanced Configuration/Endpoint or Feature Customisation.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"UI Customisation",permalink:"/docs/Advanced Configuration/UI Customisation"},next:{title:"Other Customisations",permalink:"/docs/Advanced Configuration/Other Customisations"}},c={},d=[];function u(e){const n={a:"a",code:"code",h1:"h1",li:"li",p:"p",ul:"ul",...(0,r.RP)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.h1,{id:"endpoints-customisation",children:"Endpoints Customisation"}),"\n",(0,o.jsx)(n.p,{children:"You can selectively disable and remove endpoints and functionalities from Stirling PDF as per your requirements.\nThere are many use-cases for this such as"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"Avoid confusion for users for functionality you/your business don't use."}),"\n",(0,o.jsx)(n.li,{children:"Running a reduced version of Stirling-PDF that doesn't have the necessary server power to support the more advanced features."}),"\n",(0,o.jsx)(n.li,{children:"Cleanup interface for features you don't use"}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["To do this ",(0,o.jsx)(n.code,{children:"ENDPOINTS_TO_REMOVE"})," and ",(0,o.jsx)(n.code,{children:"GROUPS_TO_REMOVE"})," have been setup.\nThey can include comma-separated lists of endpoints and groups to disable. For example, ",(0,o.jsx)(n.code,{children:"ENDPOINTS_TO_REMOVE=img-to-pdf,remove-pages"}),' would disable both the "image to PDF" and "remove pages" functionalities.\n',(0,o.jsx)(n.code,{children:"GROUPS_TO_REMOVE=Libre"})," Would disable a group of endpoints, in this case all endpoints which use Libre in the backend."]}),"\n",(0,o.jsxs)(n.p,{children:["A complete list of all endpoints and groups is available ",(0,o.jsx)(n.a,{href:"https://github.com/Stirling-Tools/Stirling-PDF/blob/main/Endpoint-groups.md",children:"here"}),".\nTODO?"]})]})}function l(e={}){const{wrapper:n}={...(0,r.RP)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(u,{...e})}):u(e)}},5680:(e,n,t)=>{t.d(n,{RP:()=>d});var o=t(6540);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);n&&(o=o.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,o)}return t}function s(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var c=o.createContext({}),d=function(e){var n=o.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):s(s({},n),e)),t},u={inlineCode:"code",wrapper:function(e){var n=e.children;return o.createElement(o.Fragment,{},n)}},l=o.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,c=e.parentName,l=a(e,["components","mdxType","originalType","parentName"]),p=d(t),f=r,m=p["".concat(c,".").concat(f)]||p[f]||u[f]||i;return t?o.createElement(m,s(s({ref:n},l),{},{components:t})):o.createElement(m,s({ref:n},l))}));l.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/186bd3b4.7044dc8a.js b/assets/js/186bd3b4.7044dc8a.js new file mode 100644 index 0000000..8e7126f --- /dev/null +++ b/assets/js/186bd3b4.7044dc8a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[149],{8691:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>s,default:()=>l,frontMatter:()=>i,metadata:()=>a,toc:()=>u});var r=t(4848),o=t(5680);const i={sidebar_position:2},s="Endpoints Customisation",a={id:"Advanced Configuration/Endpoint or Feature Customisation",title:"Endpoints Customisation",description:"You can selectively disable and remove endpoints and functionalities from Stirling PDF as per your requirements.",source:"@site/docs/Advanced Configuration/Endpoint or Feature Customisation.md",sourceDirName:"Advanced Configuration",slug:"/Advanced Configuration/Endpoint or Feature Customisation",permalink:"/Advanced Configuration/Endpoint or Feature Customisation",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/Advanced Configuration/Endpoint or Feature Customisation.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"UI Customisation",permalink:"/Advanced Configuration/UI Customisation"},next:{title:"Other Customisations",permalink:"/Advanced Configuration/Other Customisations"}},c={},u=[];function d(e){const n={a:"a",code:"code",h1:"h1",li:"li",p:"p",ul:"ul",...(0,o.RP)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"endpoints-customisation",children:"Endpoints Customisation"}),"\n",(0,r.jsx)(n.p,{children:"You can selectively disable and remove endpoints and functionalities from Stirling PDF as per your requirements.\nThere are many use-cases for this such as"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Avoid confusion for users for functionality you/your business don't use."}),"\n",(0,r.jsx)(n.li,{children:"Running a reduced version of Stirling-PDF that doesn't have the necessary server power to support the more advanced features."}),"\n",(0,r.jsx)(n.li,{children:"Cleanup interface for features you don't use"}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["To do this ",(0,r.jsx)(n.code,{children:"ENDPOINTS_TO_REMOVE"})," and ",(0,r.jsx)(n.code,{children:"GROUPS_TO_REMOVE"})," have been setup.\nThey can include comma-separated lists of endpoints and groups to disable. For example, ",(0,r.jsx)(n.code,{children:"ENDPOINTS_TO_REMOVE=img-to-pdf,remove-pages"}),' would disable both the "image to PDF" and "remove pages" functionalities.\n',(0,r.jsx)(n.code,{children:"GROUPS_TO_REMOVE=Libre"})," Would disable a group of endpoints, in this case all endpoints which use Libre in the backend."]}),"\n",(0,r.jsxs)(n.p,{children:["A complete list of all endpoints and groups is available ",(0,r.jsx)(n.a,{href:"https://github.com/Stirling-Tools/Stirling-PDF/blob/main/Endpoint-groups.md",children:"here"}),".\nTODO?"]})]})}function l(e={}){const{wrapper:n}={...(0,o.RP)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},5680:(e,n,t)=>{t.d(n,{RP:()=>u});var r=t(6540);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function s(e){for(var n=1;n=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var c=r.createContext({}),u=function(e){var n=r.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):s(s({},n),e)),t},d={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},l=r.forwardRef((function(e,n){var t=e.components,o=e.mdxType,i=e.originalType,c=e.parentName,l=a(e,["components","mdxType","originalType","parentName"]),p=u(t),f=o,m=p["".concat(c,".").concat(f)]||p[f]||d[f]||i;return t?r.createElement(m,s(s({ref:n},l),{},{components:t})):r.createElement(m,s({ref:n},l))}));l.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/195f1085.ea15624b.js b/assets/js/195f1085.ea15624b.js deleted file mode 100644 index 51a8445..0000000 --- a/assets/js/195f1085.ea15624b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[774],{192:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>s,contentTitle:()=>l,default:()=>u,frontMatter:()=>o,metadata:()=>c,toc:()=>a});var r=t(4848),i=t(5680);const o={sidebar_position:1},l="Single Sign-On (SSO) Configuration",c={id:"Advanced Configuration/Single Sign-On Configuration",title:"Single Sign-On (SSO) Configuration",description:"Stirling PDF allows login via Single Sign-On (SSO) using OAUTH2 OpenID Connect (OIDC)",source:"@site/docs/Advanced Configuration/Single Sign-On Configuration.md",sourceDirName:"Advanced Configuration",slug:"/Advanced Configuration/Single Sign-On Configuration",permalink:"/docs/Advanced Configuration/Single Sign-On Configuration",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/Advanced Configuration/Single Sign-On Configuration.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"OCR (Optical Character Recognition)",permalink:"/docs/Advanced Configuration/OCR"},next:{title:"System and Security",permalink:"/docs/Advanced Configuration/System and Security"}},s={},a=[{value:"Settings file",id:"settings-file",level:2},{value:"Local",id:"local",level:2},{value:"Docker",id:"docker",level:2},{value:"Docker run",id:"docker-run",level:3},{value:"Docker Compose",id:"docker-compose",level:3}];function d(e){const n={code:"code",h1:"h1",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.RP)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"single-sign-on-sso-configuration",children:"Single Sign-On (SSO) Configuration"}),"\n",(0,r.jsx)(n.p,{children:"Stirling PDF allows login via Single Sign-On (SSO) using OAUTH2 OpenID Connect (OIDC)\nThese are"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"oauth2.enabled"})," Set this to 'true' to enable login (Note: ",(0,r.jsx)(n.code,{children:"enableLogin"})," must also be 'true' for this to work)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"oauth2.issuer"})," Set this to any provider that supports OpenID Connect Discovery ",(0,r.jsx)(n.code,{children:"/.well-known/openid-configuration"})," end-point"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"oauth2.clientId"})," Client ID from your provider"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"oauth2.clientSecret"})," Client Secret from your provider"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"oauth2.autoCreateUser"})," Set this to 'true' to allow auto-creation of non-existing users"]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["The Callback URL (Redirect URL) for entering in your IdP is: ",(0,r.jsx)(n.code,{children:"https:///login/oauth2/code/oidc"})]}),"\n",(0,r.jsx)(n.p,{children:"It is highly recommended to use a SSL-enabled reverse-proxy, if the application is going to be exposed to the internet."}),"\n",(0,r.jsx)(n.p,{children:"After the OAUTH2 login is enabled, a new button shows up on the login page as per the screenshot below:"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.img,{src:"https://github.com/Stirling-Tools/Stirling-PDF/assets/812110/6ec3b233-2eb7-4838-bcc9-f93ca0c21cec",alt:"image"})}),"\n",(0,r.jsx)(n.h2,{id:"settings-file",children:"Settings file"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"security:\n enableLogin: true # set to 'true' to enable login\n ...\n ...\n oauth2:\n enabled: false # set to 'true' to enable SSO login (Note: enableLogin must also be 'true' for this to work)\n issuer: \"\" # set to any provider that supports OpenID Connect Discovery (/.well-known/openid-configuration) end-point\n clientId: \"\" # Client ID from your provider\n clientSecret: \"\" # Client Secret from your provider\n autoCreateUser: false # set to 'true' to allow auto-creation of non-existing users\n"})}),"\n",(0,r.jsx)(n.h2,{id:"local",children:"Local"}),"\n",(0,r.jsx)(n.p,{children:"If running Java directly, you can set these via environment variables by running before starting the application"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:'export DOCKER_ENABLE_SECURITY=true\nexport SECURITY_ENABLELOGIN=true\nexport SECURITY_OAUTH2_ENABLED=true\nexport SECURITY_OAUTH2_AUTOCREATEUSER=false\nexport SECURITY_OAUTH2_ISSUER=""\nexport SECURITY_OAUTH2_CLIENTID=""\nexport SECURITY_OAUTH2_CLIENTSECRET=""\n'})}),"\n",(0,r.jsx)(n.h2,{id:"docker",children:"Docker"}),"\n",(0,r.jsx)(n.h3,{id:"docker-run",children:"Docker run"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:'-e DOCKER_ENABLE_SECURITY=true \\\n-e SECURITY_ENABLELOGIN=true \\\n-e SECURITY_OAUTH2_ENABLED=true \\\n-e SECURITY_OAUTH2_AUTOCREATEUSER=false \\\n-e SECURITY_OAUTH2_ISSUER="" \\\n-e SECURITY_OAUTH2_CLIENTID="" \\\n-e SECURITY_OAUTH2_CLIENTSECRET="" \\\n'})}),"\n",(0,r.jsx)(n.h3,{id:"docker-compose",children:"Docker Compose"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:'environment:\n DOCKER_ENABLE_SECURITY: true\n SECURITY_ENABLELOGIN: true\n SECURITY_OAUTH2_ENABLED: true\n SECURITY_OAUTH2_AUTOCREATEUSER: false\n SECURITY_OAUTH2_ISSUER: ""\n SECURITY_OAUTH2_CLIENTID: ""\n SECURITY_OAUTH2_CLIENTSECRET: ""\n'})})]})}function u(e={}){const{wrapper:n}={...(0,i.RP)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},5680:(e,n,t)=>{t.d(n,{RP:()=>a});var r=t(6540);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function l(e){for(var n=1;n=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var s=r.createContext({}),a=function(e){var n=r.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},d={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},u=r.forwardRef((function(e,n){var t=e.components,i=e.mdxType,o=e.originalType,s=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),p=a(t),g=i,h=p["".concat(s,".").concat(g)]||p[g]||d[g]||o;return t?r.createElement(h,l(l({ref:n},u),{},{components:t})):r.createElement(h,l({ref:n},u))}));u.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/195f1085.ea37bc9f.js b/assets/js/195f1085.ea37bc9f.js new file mode 100644 index 0000000..0b40b49 --- /dev/null +++ b/assets/js/195f1085.ea37bc9f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[774],{192:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>s,contentTitle:()=>l,default:()=>u,frontMatter:()=>o,metadata:()=>c,toc:()=>a});var r=t(4848),i=t(5680);const o={sidebar_position:1},l="Single Sign-On (SSO) Configuration",c={id:"Advanced Configuration/Single Sign-On Configuration",title:"Single Sign-On (SSO) Configuration",description:"Stirling PDF allows login via Single Sign-On (SSO) using OAUTH2 OpenID Connect (OIDC)",source:"@site/docs/Advanced Configuration/Single Sign-On Configuration.md",sourceDirName:"Advanced Configuration",slug:"/Advanced Configuration/Single Sign-On Configuration",permalink:"/Advanced Configuration/Single Sign-On Configuration",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/Advanced Configuration/Single Sign-On Configuration.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"OCR (Optical Character Recognition)",permalink:"/Advanced Configuration/OCR"},next:{title:"System and Security",permalink:"/Advanced Configuration/System and Security"}},s={},a=[{value:"Settings file",id:"settings-file",level:2},{value:"Local",id:"local",level:2},{value:"Docker",id:"docker",level:2},{value:"Docker run",id:"docker-run",level:3},{value:"Docker Compose",id:"docker-compose",level:3}];function d(e){const n={code:"code",h1:"h1",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.RP)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"single-sign-on-sso-configuration",children:"Single Sign-On (SSO) Configuration"}),"\n",(0,r.jsx)(n.p,{children:"Stirling PDF allows login via Single Sign-On (SSO) using OAUTH2 OpenID Connect (OIDC)\nThese are"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"oauth2.enabled"})," Set this to 'true' to enable login (Note: ",(0,r.jsx)(n.code,{children:"enableLogin"})," must also be 'true' for this to work)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"oauth2.issuer"})," Set this to any provider that supports OpenID Connect Discovery ",(0,r.jsx)(n.code,{children:"/.well-known/openid-configuration"})," end-point"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"oauth2.clientId"})," Client ID from your provider"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"oauth2.clientSecret"})," Client Secret from your provider"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"oauth2.autoCreateUser"})," Set this to 'true' to allow auto-creation of non-existing users"]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["The Callback URL (Redirect URL) for entering in your IdP is: ",(0,r.jsx)(n.code,{children:"https:///login/oauth2/code/oidc"})]}),"\n",(0,r.jsx)(n.p,{children:"It is highly recommended to use a SSL-enabled reverse-proxy, if the application is going to be exposed to the internet."}),"\n",(0,r.jsx)(n.p,{children:"After the OAUTH2 login is enabled, a new button shows up on the login page as per the screenshot below:"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.img,{src:"https://github.com/Stirling-Tools/Stirling-PDF/assets/812110/6ec3b233-2eb7-4838-bcc9-f93ca0c21cec",alt:"image"})}),"\n",(0,r.jsx)(n.h2,{id:"settings-file",children:"Settings file"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"security:\n enableLogin: true # set to 'true' to enable login\n ...\n ...\n oauth2:\n enabled: false # set to 'true' to enable SSO login (Note: enableLogin must also be 'true' for this to work)\n issuer: \"\" # set to any provider that supports OpenID Connect Discovery (/.well-known/openid-configuration) end-point\n clientId: \"\" # Client ID from your provider\n clientSecret: \"\" # Client Secret from your provider\n autoCreateUser: false # set to 'true' to allow auto-creation of non-existing users\n"})}),"\n",(0,r.jsx)(n.h2,{id:"local",children:"Local"}),"\n",(0,r.jsx)(n.p,{children:"If running Java directly, you can set these via environment variables by running before starting the application"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:'export DOCKER_ENABLE_SECURITY=true\nexport SECURITY_ENABLELOGIN=true\nexport SECURITY_OAUTH2_ENABLED=true\nexport SECURITY_OAUTH2_AUTOCREATEUSER=false\nexport SECURITY_OAUTH2_ISSUER=""\nexport SECURITY_OAUTH2_CLIENTID=""\nexport SECURITY_OAUTH2_CLIENTSECRET=""\n'})}),"\n",(0,r.jsx)(n.h2,{id:"docker",children:"Docker"}),"\n",(0,r.jsx)(n.h3,{id:"docker-run",children:"Docker run"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:'-e DOCKER_ENABLE_SECURITY=true \\\n-e SECURITY_ENABLELOGIN=true \\\n-e SECURITY_OAUTH2_ENABLED=true \\\n-e SECURITY_OAUTH2_AUTOCREATEUSER=false \\\n-e SECURITY_OAUTH2_ISSUER="" \\\n-e SECURITY_OAUTH2_CLIENTID="" \\\n-e SECURITY_OAUTH2_CLIENTSECRET="" \\\n'})}),"\n",(0,r.jsx)(n.h3,{id:"docker-compose",children:"Docker Compose"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:'environment:\n DOCKER_ENABLE_SECURITY: true\n SECURITY_ENABLELOGIN: true\n SECURITY_OAUTH2_ENABLED: true\n SECURITY_OAUTH2_AUTOCREATEUSER: false\n SECURITY_OAUTH2_ISSUER: ""\n SECURITY_OAUTH2_CLIENTID: ""\n SECURITY_OAUTH2_CLIENTSECRET: ""\n'})})]})}function u(e={}){const{wrapper:n}={...(0,i.RP)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},5680:(e,n,t)=>{t.d(n,{RP:()=>a});var r=t(6540);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function l(e){for(var n=1;n=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var s=r.createContext({}),a=function(e){var n=r.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},d={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},u=r.forwardRef((function(e,n){var t=e.components,i=e.mdxType,o=e.originalType,s=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),p=a(t),g=i,h=p["".concat(s,".").concat(g)]||p[g]||d[g]||o;return t?r.createElement(h,l(l({ref:n},u),{},{components:t})):r.createElement(h,l({ref:n},u))}));u.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/2158bb33.18268033.js b/assets/js/2158bb33.18268033.js deleted file mode 100644 index e9c2ba5..0000000 --- a/assets/js/2158bb33.18268033.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[405],{4055:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>s,default:()=>u,frontMatter:()=>i,metadata:()=>a,toc:()=>l});var r=n(4848),o=n(5680);const i={sidebar_position:2,id:"Docker Install",title:"Installation Guide"},s="Docker Images for Stirling-PDF",a={id:"Getting started/Installation/Docker/Docker Install",title:"Installation Guide",description:"The docker image for Stirling-PDF is available on Docker Hub at frooodle/s-pdf or on Github at s-pdf.",source:"@site/docs/Getting started/Installation/Docker/Docker Install.md",sourceDirName:"Getting started/Installation/Docker",slug:"/Getting started/Installation/Docker/Docker Install",permalink:"/docs/Getting started/Installation/Docker/Docker Install",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/Getting started/Installation/Docker/Docker Install.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2,id:"Docker Install",title:"Installation Guide"},sidebar:"tutorialSidebar",previous:{title:"Docker Versions",permalink:"/docs/Getting started/Installation/Docker/Docker Versions"},next:{title:"Unix installation Guide",permalink:"/docs/Getting started/Installation/Local/Unix Installation"}},c={},l=[{value:"Run docker container with docker run",id:"run-docker-container-with-docker-run",level:3},{value:"Run docker container with docker compose",id:"run-docker-container-with-docker-compose",level:3},{value:"Extras",id:"extras",level:3}];function d(e){const t={a:"a",code:"code",h1:"h1",h3:"h3",li:"li",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,o.RP)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.h1,{id:"docker-images-for-stirling-pdf",children:"Docker Images for Stirling-PDF"}),"\n",(0,r.jsxs)(t.p,{children:["The docker image for Stirling-PDF is available on Docker Hub at ",(0,r.jsx)(t.a,{href:"https://hub.docker.com/r/frooodle/s-pdf",children:"frooodle/s-pdf"})," or on Github at ",(0,r.jsx)(t.a,{href:"https://github.com/Stirling-Tools/Stirling-PDF/pkgs/container/s-pdf",children:"s-pdf"}),"."]}),"\n",(0,r.jsx)(t.p,{children:"Please note that Stirling PDF offers three distinct versions tailored for various hardware configurations. Users seeking optimal performance on lower-end hardware can choose from the specific versions provided. For those who prefer the most recent features and updates, it is recommended to continue using the latest tag."}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Version"}),(0,r.jsx)(t.th,{children:"Latest Tag"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Standard"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"latest"})})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Ultra Lite"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"latest-ultra-lite"})})]})]})]}),"\n",(0,r.jsxs)(t.h3,{id:"run-docker-container-with-docker-run",children:["Run docker container with ",(0,r.jsx)(t.code,{children:"docker run"})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{children:"docker run -d \\\n -p 8080:8080 \\\n -v /location/of/trainingData:/usr/share/tessdata \\\n -v /location/of/extraConfigs:/configs \\\n -v /location/of/logs:/logs \\\n -e DOCKER_ENABLE_SECURITY=false \\\n -e INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false \\\n -e LANGS=en_GB \\\n --name stirling-pdf \\\n frooodle/s-pdf:latest\n\n Can also add these for customisation but are not required\n -v /location/of/customFiles:/customFiles \\\n"})}),"\n",(0,r.jsxs)(t.h3,{id:"run-docker-container-with-docker-compose",children:["Run docker container with ",(0,r.jsx)(t.code,{children:"docker compose"})]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.code,{children:"docker-compose.yml"})}),"\n"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{children:"version: '3.3'\nservices:\n stirling-pdf:\n image: frooodle/s-pdf:latest\n ports:\n - '8080:8080'\n volumes:\n - /location/of/trainingData:/usr/share/tessdata #Required for extra OCR languages\n - /location/of/extraConfigs:/configs\n# - /location/of/customFiles:/customFiles/\n# - /location/of/logs:/logs/\n environment:\n - DOCKER_ENABLE_SECURITY=false\n - INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false\n - LANGS=en_GB\n"})}),"\n",(0,r.jsx)(t.h3,{id:"extras",children:"Extras"}),"\n",(0,r.jsxs)(t.p,{children:["For extra parameters and customization please check the ",(0,r.jsx)(t.a,{href:"https://stirlingtools.com/docs/Advanced%20Configuration/How%20to%20add%20configurations",children:"advanced configuration"})," page!"]})]})}function u(e={}){const{wrapper:t}={...(0,o.RP)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},5680:(e,t,n)=>{n.d(t,{RP:()=>l});var r=n(6540);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=r.createContext({}),l=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,c=e.parentName,u=a(e,["components","mdxType","originalType","parentName"]),h=l(n),f=o,p=h["".concat(c,".").concat(f)]||h[f]||d[f]||i;return n?r.createElement(p,s(s({ref:t},u),{},{components:n})):r.createElement(p,s({ref:t},u))}));u.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/2158bb33.1d1a0cdf.js b/assets/js/2158bb33.1d1a0cdf.js new file mode 100644 index 0000000..cff4bfc --- /dev/null +++ b/assets/js/2158bb33.1d1a0cdf.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[405],{4055:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>s,default:()=>u,frontMatter:()=>i,metadata:()=>a,toc:()=>l});var r=n(4848),o=n(5680);const i={sidebar_position:2,id:"Docker Install",title:"Installation Guide"},s="Docker Images for Stirling-PDF",a={id:"Getting started/Installation/Docker/Docker Install",title:"Installation Guide",description:"The docker image for Stirling-PDF is available on Docker Hub at frooodle/s-pdf or on Github at s-pdf.",source:"@site/docs/Getting started/Installation/Docker/Docker Install.md",sourceDirName:"Getting started/Installation/Docker",slug:"/Getting started/Installation/Docker/Docker Install",permalink:"/Getting started/Installation/Docker/Docker Install",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/Getting started/Installation/Docker/Docker Install.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2,id:"Docker Install",title:"Installation Guide"},sidebar:"tutorialSidebar",previous:{title:"Docker Versions",permalink:"/Getting started/Installation/Docker/Docker Versions"},next:{title:"Unix installation Guide",permalink:"/Getting started/Installation/Local/Unix Installation"}},c={},l=[{value:"Run docker container with docker run",id:"run-docker-container-with-docker-run",level:3},{value:"Run docker container with docker compose",id:"run-docker-container-with-docker-compose",level:3},{value:"Extras",id:"extras",level:3}];function d(e){const t={a:"a",code:"code",h1:"h1",h3:"h3",li:"li",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,o.RP)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.h1,{id:"docker-images-for-stirling-pdf",children:"Docker Images for Stirling-PDF"}),"\n",(0,r.jsxs)(t.p,{children:["The docker image for Stirling-PDF is available on Docker Hub at ",(0,r.jsx)(t.a,{href:"https://hub.docker.com/r/frooodle/s-pdf",children:"frooodle/s-pdf"})," or on Github at ",(0,r.jsx)(t.a,{href:"https://github.com/Stirling-Tools/Stirling-PDF/pkgs/container/s-pdf",children:"s-pdf"}),"."]}),"\n",(0,r.jsx)(t.p,{children:"Please note that Stirling PDF offers three distinct versions tailored for various hardware configurations. Users seeking optimal performance on lower-end hardware can choose from the specific versions provided. For those who prefer the most recent features and updates, it is recommended to continue using the latest tag."}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Version"}),(0,r.jsx)(t.th,{children:"Latest Tag"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Standard"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"latest"})})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Ultra Lite"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"latest-ultra-lite"})})]})]})]}),"\n",(0,r.jsxs)(t.h3,{id:"run-docker-container-with-docker-run",children:["Run docker container with ",(0,r.jsx)(t.code,{children:"docker run"})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{children:"docker run -d \\\n -p 8080:8080 \\\n -v /location/of/trainingData:/usr/share/tessdata \\\n -v /location/of/extraConfigs:/configs \\\n -v /location/of/logs:/logs \\\n -e DOCKER_ENABLE_SECURITY=false \\\n -e INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false \\\n -e LANGS=en_GB \\\n --name stirling-pdf \\\n frooodle/s-pdf:latest\n\n Can also add these for customisation but are not required\n -v /location/of/customFiles:/customFiles \\\n"})}),"\n",(0,r.jsxs)(t.h3,{id:"run-docker-container-with-docker-compose",children:["Run docker container with ",(0,r.jsx)(t.code,{children:"docker compose"})]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.code,{children:"docker-compose.yml"})}),"\n"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{children:"version: '3.3'\nservices:\n stirling-pdf:\n image: frooodle/s-pdf:latest\n ports:\n - '8080:8080'\n volumes:\n - /location/of/trainingData:/usr/share/tessdata #Required for extra OCR languages\n - /location/of/extraConfigs:/configs\n# - /location/of/customFiles:/customFiles/\n# - /location/of/logs:/logs/\n environment:\n - DOCKER_ENABLE_SECURITY=false\n - INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false\n - LANGS=en_GB\n"})}),"\n",(0,r.jsx)(t.h3,{id:"extras",children:"Extras"}),"\n",(0,r.jsxs)(t.p,{children:["For extra parameters and customization please check the ",(0,r.jsx)(t.a,{href:"https://stirlingtools.com/docs/Advanced%20Configuration/How%20to%20add%20configurations",children:"advanced configuration"})," page!"]})]})}function u(e={}){const{wrapper:t}={...(0,o.RP)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},5680:(e,t,n)=>{n.d(t,{RP:()=>l});var r=n(6540);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=r.createContext({}),l=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,c=e.parentName,u=a(e,["components","mdxType","originalType","parentName"]),h=l(n),f=o,p=h["".concat(c,".").concat(f)]||h[f]||d[f]||i;return n?r.createElement(p,s(s({ref:t},u),{},{components:n})):r.createElement(p,s({ref:t},u))}));u.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/28d775d6.87ae8482.js b/assets/js/28d775d6.87ae8482.js new file mode 100644 index 0000000..f76404f --- /dev/null +++ b/assets/js/28d775d6.87ae8482.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[64],{6110:e=>{e.exports=JSON.parse('{"tag":{"label":"Language","permalink":"/tags/language","allTagsPath":"/tags","count":1,"items":[{"id":"Contribute/Language","title":"Add a New Language","description":"Create a doc page with rich content.","permalink":"/Contribute/Language"}],"unlisted":false}}')}}]); \ No newline at end of file diff --git a/assets/js/3c339e32.09ee0599.js b/assets/js/3c339e32.09ee0599.js new file mode 100644 index 0000000..44fddfb --- /dev/null +++ b/assets/js/3c339e32.09ee0599.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[334],{3687:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>d,frontMatter:()=>i,metadata:()=>c,toc:()=>u});var n=r(4848),o=r(5680);const i={sidebar_position:7,id:"Code",title:"Code",description:"Create a doc page with rich content.",tags:["Code"]},a=void 0,c={id:"Contribute/Code",title:"Code",description:"Create a doc page with rich content.",source:"@site/docs/Contribute/Code.md",sourceDirName:"Contribute",slug:"/Contribute/Code",permalink:"/Contribute/Code",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/Contribute/Code.md",tags:[{label:"Code",permalink:"/tags/code"}],version:"current",sidebarPosition:7,frontMatter:{sidebar_position:7,id:"Code",title:"Code",description:"Create a doc page with rich content.",tags:["Code"]},sidebar:"tutorialSidebar",previous:{title:"Other Customisations",permalink:"/Advanced Configuration/Other Customisations"},next:{title:"Add a New Language",permalink:"/Contribute/Language"}},s={},u=[];function l(e){const t={a:"a",p:"p",...(0,o.RP)(),...e.components};return(0,n.jsxs)(t.p,{children:["See our ",(0,n.jsx)(t.a,{href:"https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md",children:"CONTRIBUTING guidelines"})]})}function d(e={}){const{wrapper:t}={...(0,o.RP)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(l,{...e})}):l(e)}},5680:(e,t,r)=>{r.d(t,{RP:()=>u});var n=r(6540);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var s=n.createContext({}),u=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},l={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,i=e.originalType,s=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),p=u(r),b=o,f=p["".concat(s,".").concat(b)]||p[b]||l[b]||i;return r?n.createElement(f,a(a({ref:t},d),{},{components:r})):n.createElement(f,a({ref:t},d))}));d.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/3c339e32.882b6f63.js b/assets/js/3c339e32.882b6f63.js deleted file mode 100644 index b0bb934..0000000 --- a/assets/js/3c339e32.882b6f63.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[334],{3687:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>l,frontMatter:()=>i,metadata:()=>c,toc:()=>u});var n=r(4848),o=r(5680);const i={sidebar_position:7,id:"Code",title:"Code",description:"Create a doc page with rich content.",tags:["Code"]},a=void 0,c={id:"Contribute/Code",title:"Code",description:"Create a doc page with rich content.",source:"@site/docs/Contribute/Code.md",sourceDirName:"Contribute",slug:"/Contribute/Code",permalink:"/docs/Contribute/Code",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/Contribute/Code.md",tags:[{label:"Code",permalink:"/docs/tags/code"}],version:"current",sidebarPosition:7,frontMatter:{sidebar_position:7,id:"Code",title:"Code",description:"Create a doc page with rich content.",tags:["Code"]},sidebar:"tutorialSidebar",previous:{title:"Other Customisations",permalink:"/docs/Advanced Configuration/Other Customisations"},next:{title:"Add a New Language",permalink:"/docs/Contribute/Language"}},s={},u=[];function d(e){const t={a:"a",p:"p",...(0,o.RP)(),...e.components};return(0,n.jsxs)(t.p,{children:["See our ",(0,n.jsx)(t.a,{href:"https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md",children:"CONTRIBUTING guidelines"})]})}function l(e={}){const{wrapper:t}={...(0,o.RP)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},5680:(e,t,r)=>{r.d(t,{RP:()=>u});var n=r(6540);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var s=n.createContext({}),u=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},l=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,i=e.originalType,s=e.parentName,l=c(e,["components","mdxType","originalType","parentName"]),p=u(r),b=o,f=p["".concat(s,".").concat(b)]||p[b]||d[b]||i;return r?n.createElement(f,a(a({ref:t},l),{},{components:r})):n.createElement(f,a({ref:t},l))}));l.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/3eca61f5.17a007ed.js b/assets/js/3eca61f5.17a007ed.js new file mode 100644 index 0000000..e2bf1a0 --- /dev/null +++ b/assets/js/3eca61f5.17a007ed.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[363],{3958:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>o,contentTitle:()=>a,default:()=>u,frontMatter:()=>i,metadata:()=>c,toc:()=>l});var r=t(4848),s=t(5680);const i={sidebar_position:4},a="Features - Miscellaneous",c={id:"Functionality/Miscellaneous/Overview",title:"Features - Miscellaneous",description:"- ocr-pdf: This feature allows users to perform optical character recognition (OCR) on PDFs, making them searchable and editable.",source:"@site/docs/Functionality/Miscellaneous/Overview.md",sourceDirName:"Functionality/Miscellaneous",slug:"/Functionality/Miscellaneous/Overview",permalink:"/Functionality/Miscellaneous/Overview",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/Functionality/Miscellaneous/Overview.md",tags:[],version:"current",sidebarPosition:4,frontMatter:{sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Features - Security",permalink:"/Functionality/Security/Overview"},next:{title:"Docker Versions",permalink:"/Getting started/Installation/Docker/Docker Versions"}},o={},l=[];function d(e){const n={code:"code",h1:"h1",li:"li",p:"p",ul:"ul",...(0,s.RP)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"features---miscellaneous",children:"Features - Miscellaneous"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"ocr-pdf"}),": This feature allows users to perform optical character recognition (OCR) on PDFs, making them searchable and editable."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"add-image"}),": This functionality enables users to add image files to their PDF documents."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"compress-pdf"}),": This feature allows users to reduce the file size of their PDFs while retaining quality."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"extract-images"}),": With this feature, users can extract all images from a PDF document."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"change-metadata"}),": This functionality enables users to change the metadata of a PDF, including author name, title, etc."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"extract-image-scans"}),": This feature enables users to extract scanned images from PDF files."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"sign"}),": This feature allows users to add their writen signature to PDF documents. For digitally signing PDFs see Features - Security --\x3e ",(0,r.jsx)(n.code,{children:"cert_sign"})]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"flatten"}),": This functionality enables users to flatten a PDF, merging interactive form fields with the document."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"repair"}),": This feature allows users to repair a corrupted or damaged PDF."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"remove-blanks"}),": With this feature, users can remove blank pages from a PDF document."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"remove-annotations"}),":"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"compare"}),": This functionality enables users to compare two PDFs and highlight the differences."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"add-page-numbers"}),": Add page numbers (and custom text) to edges of page"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"auto-rename"}),": Auto renames a PDF based on its header, title or any starter text it can find (tries to use largest font text)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"get-info-on-pdf"}),": Grabs and displays all information of a PDF and allows export of info into JSON format"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"show-javascript"}),": Shows any embedded javascript within a PDF"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"auto-split-pdf"}),': This Automatically splits documents into seperate files based on the QR code detected between each. It\'s intent is that a "seperator" page be placed between scans so that bulk scanning can be achieved with splitting as a post process.']}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"add-stamp"}),": Adds a user-defined text or image to the corner of certain or all PDF pages"]}),"\n"]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,s.RP)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},5680:(e,n,t)=>{t.d(n,{RP:()=>l});var r=t(6540);function s(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function a(e){for(var n=1;n=0||(s[t]=e[t]);return s}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(s[t]=e[t])}return s}var o=r.createContext({}),l=function(e){var n=r.useContext(o),t=n;return e&&(t="function"==typeof e?e(n):a(a({},n),e)),t},d={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},u=r.forwardRef((function(e,n){var t=e.components,s=e.mdxType,i=e.originalType,o=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),h=l(t),p=s,f=h["".concat(o,".").concat(p)]||h[p]||d[p]||i;return t?r.createElement(f,a(a({ref:n},u),{},{components:t})):r.createElement(f,a({ref:n},u))}));u.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/3eca61f5.994d039a.js b/assets/js/3eca61f5.994d039a.js deleted file mode 100644 index 4c4b37f..0000000 --- a/assets/js/3eca61f5.994d039a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[363],{3958:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>o,contentTitle:()=>a,default:()=>u,frontMatter:()=>i,metadata:()=>c,toc:()=>l});var s=t(4848),r=t(5680);const i={sidebar_position:4},a="Features - Miscellaneous",c={id:"Functionality/Miscellaneous/Overview",title:"Features - Miscellaneous",description:"- ocr-pdf: This feature allows users to perform optical character recognition (OCR) on PDFs, making them searchable and editable.",source:"@site/docs/Functionality/Miscellaneous/Overview.md",sourceDirName:"Functionality/Miscellaneous",slug:"/Functionality/Miscellaneous/Overview",permalink:"/docs/Functionality/Miscellaneous/Overview",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/Functionality/Miscellaneous/Overview.md",tags:[],version:"current",sidebarPosition:4,frontMatter:{sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Features - Security",permalink:"/docs/Functionality/Security/Overview"},next:{title:"Docker Versions",permalink:"/docs/Getting started/Installation/Docker/Docker Versions"}},o={},l=[];function d(e){const n={code:"code",h1:"h1",li:"li",p:"p",ul:"ul",...(0,r.RP)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"features---miscellaneous",children:"Features - Miscellaneous"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"ocr-pdf"}),": This feature allows users to perform optical character recognition (OCR) on PDFs, making them searchable and editable."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"add-image"}),": This functionality enables users to add image files to their PDF documents."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"compress-pdf"}),": This feature allows users to reduce the file size of their PDFs while retaining quality."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"extract-images"}),": With this feature, users can extract all images from a PDF document."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"change-metadata"}),": This functionality enables users to change the metadata of a PDF, including author name, title, etc."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"extract-image-scans"}),": This feature enables users to extract scanned images from PDF files."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"sign"}),": This feature allows users to add their writen signature to PDF documents. For digitally signing PDFs see Features - Security --\x3e ",(0,s.jsx)(n.code,{children:"cert_sign"})]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"flatten"}),": This functionality enables users to flatten a PDF, merging interactive form fields with the document."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"repair"}),": This feature allows users to repair a corrupted or damaged PDF."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"remove-blanks"}),": With this feature, users can remove blank pages from a PDF document."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"remove-annotations"}),":"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"compare"}),": This functionality enables users to compare two PDFs and highlight the differences."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"add-page-numbers"}),": Add page numbers (and custom text) to edges of page"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"auto-rename"}),": Auto renames a PDF based on its header, title or any starter text it can find (tries to use largest font text)"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"get-info-on-pdf"}),": Grabs and displays all information of a PDF and allows export of info into JSON format"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"show-javascript"}),": Shows any embedded javascript within a PDF"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"auto-split-pdf"}),': This Automatically splits documents into seperate files based on the QR code detected between each. It\'s intent is that a "seperator" page be placed between scans so that bulk scanning can be achieved with splitting as a post process.']}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"add-stamp"}),": Adds a user-defined text or image to the corner of certain or all PDF pages"]}),"\n"]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,r.RP)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},5680:(e,n,t)=>{t.d(n,{RP:()=>l});var s=t(6540);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);n&&(s=s.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,s)}return t}function a(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(s=0;s=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var o=s.createContext({}),l=function(e){var n=s.useContext(o),t=n;return e&&(t="function"==typeof e?e(n):a(a({},n),e)),t},d={inlineCode:"code",wrapper:function(e){var n=e.children;return s.createElement(s.Fragment,{},n)}},u=s.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,o=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),h=l(t),p=r,f=h["".concat(o,".").concat(p)]||h[p]||d[p]||i;return t?s.createElement(f,a(a({ref:n},u),{},{components:t})):s.createElement(f,a({ref:n},u))}));u.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/4b9e34a4.44c09fed.js b/assets/js/4b9e34a4.44c09fed.js deleted file mode 100644 index 1e1c991..0000000 --- a/assets/js/4b9e34a4.44c09fed.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[681],{424:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>s,default:()=>d,frontMatter:()=>r,metadata:()=>a,toc:()=>l});var o=n(4848),i=n(5680);const r={sidebar_position:3},s="Other Customisations",a={id:"Advanced Configuration/Other Customisations",title:"Other Customisations",description:"Stirling PDF offers various other customisation options, such as:",source:"@site/docs/Advanced Configuration/Other Customisations.md",sourceDirName:"Advanced Configuration",slug:"/Advanced Configuration/Other Customisations",permalink:"/docs/Advanced Configuration/Other Customisations",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/Advanced Configuration/Other Customisations.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Endpoints Customisation",permalink:"/docs/Advanced Configuration/Endpoint or Feature Customisation"},next:{title:"Code",permalink:"/docs/Contribute/Code"}},c={},l=[{value:"Defaulting Language",id:"defaulting-language",level:3},{value:"Google Search Visability (robots.txt)",id:"google-search-visability-robotstxt",level:3},{value:"Custom Root path",id:"custom-root-path",level:3}];function u(e){const t={code:"code",h1:"h1",h3:"h3",p:"p",...(0,i.RP)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.h1,{id:"other-customisations",children:"Other Customisations"}),"\n",(0,o.jsx)(t.p,{children:"Stirling PDF offers various other customisation options, such as:"}),"\n",(0,o.jsx)(t.h3,{id:"defaulting-language",children:"Defaulting Language"}),"\n",(0,o.jsxs)(t.p,{children:["Default language selection via the ",(0,o.jsx)(t.code,{children:"APP_LOCALE"})," environment variable. Accepted values include ",(0,o.jsx)(t.code,{children:"de-DE"}),", ",(0,o.jsx)(t.code,{children:"fr-FR"}),", ",(0,o.jsx)(t.code,{children:"ar-AR"})," and all other languages codes that are within Stirling-PDFs current list."]}),"\n",(0,o.jsx)(t.h3,{id:"google-search-visability-robotstxt",children:"Google Search Visability (robots.txt)"}),"\n",(0,o.jsxs)(t.p,{children:["Enable or disable search engine visibility with the ",(0,o.jsx)(t.code,{children:"ALLOW_GOOGLE_VISIBILITY"})," variable."]}),"\n",(0,o.jsx)(t.h3,{id:"custom-root-path",children:"Custom Root path"}),"\n",(0,o.jsxs)(t.p,{children:["Redirect the root path of the application using ",(0,o.jsx)(t.code,{children:"APP_ROOT_PATH"}),".\nThis is for changing websites like stirlingtools.com to instead host the interface at stirlingtools.com/",(0,o.jsx)(t.code,{children:"APP_ROOT_PATH"})," like stirlingtools.com/demo"]})]})}function d(e={}){const{wrapper:t}={...(0,i.RP)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(u,{...e})}):u(e)}},5680:(e,t,n)=>{n.d(t,{RP:()=>l});var o=n(6540);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function s(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var c=o.createContext({}),l=function(e){var t=o.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},u={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},d=o.forwardRef((function(e,t){var n=e.components,i=e.mdxType,r=e.originalType,c=e.parentName,d=a(e,["components","mdxType","originalType","parentName"]),h=l(n),p=i,f=h["".concat(c,".").concat(p)]||h[p]||u[p]||r;return n?o.createElement(f,s(s({ref:t},d),{},{components:n})):o.createElement(f,s({ref:t},d))}));d.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/4b9e34a4.5160f766.js b/assets/js/4b9e34a4.5160f766.js new file mode 100644 index 0000000..fb78a63 --- /dev/null +++ b/assets/js/4b9e34a4.5160f766.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[681],{424:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>s,default:()=>d,frontMatter:()=>r,metadata:()=>a,toc:()=>l});var i=n(4848),o=n(5680);const r={sidebar_position:3},s="Other Customisations",a={id:"Advanced Configuration/Other Customisations",title:"Other Customisations",description:"Stirling PDF offers various other customisation options, such as:",source:"@site/docs/Advanced Configuration/Other Customisations.md",sourceDirName:"Advanced Configuration",slug:"/Advanced Configuration/Other Customisations",permalink:"/Advanced Configuration/Other Customisations",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/Advanced Configuration/Other Customisations.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Endpoints Customisation",permalink:"/Advanced Configuration/Endpoint or Feature Customisation"},next:{title:"Code",permalink:"/Contribute/Code"}},c={},l=[{value:"Defaulting Language",id:"defaulting-language",level:3},{value:"Google Search Visability (robots.txt)",id:"google-search-visability-robotstxt",level:3},{value:"Custom Root path",id:"custom-root-path",level:3}];function u(e){const t={code:"code",h1:"h1",h3:"h3",p:"p",...(0,o.RP)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.h1,{id:"other-customisations",children:"Other Customisations"}),"\n",(0,i.jsx)(t.p,{children:"Stirling PDF offers various other customisation options, such as:"}),"\n",(0,i.jsx)(t.h3,{id:"defaulting-language",children:"Defaulting Language"}),"\n",(0,i.jsxs)(t.p,{children:["Default language selection via the ",(0,i.jsx)(t.code,{children:"APP_LOCALE"})," environment variable. Accepted values include ",(0,i.jsx)(t.code,{children:"de-DE"}),", ",(0,i.jsx)(t.code,{children:"fr-FR"}),", ",(0,i.jsx)(t.code,{children:"ar-AR"})," and all other languages codes that are within Stirling-PDFs current list."]}),"\n",(0,i.jsx)(t.h3,{id:"google-search-visability-robotstxt",children:"Google Search Visability (robots.txt)"}),"\n",(0,i.jsxs)(t.p,{children:["Enable or disable search engine visibility with the ",(0,i.jsx)(t.code,{children:"ALLOW_GOOGLE_VISIBILITY"})," variable."]}),"\n",(0,i.jsx)(t.h3,{id:"custom-root-path",children:"Custom Root path"}),"\n",(0,i.jsxs)(t.p,{children:["Redirect the root path of the application using ",(0,i.jsx)(t.code,{children:"APP_ROOT_PATH"}),".\nThis is for changing websites like stirlingtools.com to instead host the interface at stirlingtools.com/",(0,i.jsx)(t.code,{children:"APP_ROOT_PATH"})," like stirlingtools.com/demo"]})]})}function d(e={}){const{wrapper:t}={...(0,o.RP)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},5680:(e,t,n)=>{n.d(t,{RP:()=>l});var i=n(6540);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function s(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=i.createContext({}),l=function(e){var t=i.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},u={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},d=i.forwardRef((function(e,t){var n=e.components,o=e.mdxType,r=e.originalType,c=e.parentName,d=a(e,["components","mdxType","originalType","parentName"]),h=l(n),p=o,f=h["".concat(c,".").concat(p)]||h[p]||u[p]||r;return n?i.createElement(f,s(s({ref:t},d),{},{components:n})):i.createElement(f,s({ref:t},d))}));d.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/54ff00bd.577d412d.js b/assets/js/54ff00bd.577d412d.js deleted file mode 100644 index 84880f6..0000000 --- a/assets/js/54ff00bd.577d412d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[746],{1661:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>d,frontMatter:()=>o,metadata:()=>c,toc:()=>a});var r=n(4848),i=n(5680);const o={sidebar_position:2},s="The Technologies Behind Stirling PDF",c={id:"Overview/The Technologies",title:"The Technologies Behind Stirling PDF",description:"Stirling PDF harnesses several technologies throughout.",source:"@site/docs/Overview/The Technologies.md",sourceDirName:"Overview",slug:"/Overview/The Technologies",permalink:"/docs/Overview/The Technologies",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/Overview/The Technologies.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"What is Stirling-PDF",permalink:"/docs/Overview/What is Stirling-PDF"},next:{title:"Functionality",permalink:"/docs/category/functionality"}},l={},a=[];function h(e){const t={a:"a",h1:"h1",li:"li",p:"p",ul:"ul",...(0,i.RP)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.h1,{id:"the-technologies-behind-stirling-pdf",children:"The Technologies Behind Stirling PDF"}),"\n",(0,r.jsx)(t.p,{children:"Stirling PDF harnesses several technologies throughout."}),"\n",(0,r.jsx)(t.h1,{id:"java",children:"Java"}),"\n",(0,r.jsxs)(t.p,{children:["As part of the JAVA framework to host the WebUI itself we use\nSpring Boot, Thymeleaf and PDFBox.\nApache PDFBox is the core of the PDF functionality within Stirling-PDF.\nThey offer a variety of methods to edit PDFs which we have then build Stirling-PDF on.\nWe also show all licenses used within our Java application ",(0,r.jsx)(t.a,{href:"https://stirlingpdf.io/licenses",children:"here"})]}),"\n",(0,r.jsx)(t.h1,{id:"javascript",children:"JavaScript"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.a,{href:"https://github.com/mozilla/pdf.js",children:"PDF.js"})}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.a,{href:"https://github.com/Hopding/pdf-lib",children:"PDF-LIB.js"})}),"\n"]}),"\n",(0,r.jsx)(t.h1,{id:"others",children:"Others"}),"\n",(0,r.jsx)(t.p,{children:"We also use other open source applications along side ours to offer additional functionality."}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.a,{href:"https://www.libreoffice.org/discover/libreoffice/",children:"LibreOffice"})," for advanced conversions"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.a,{href:"https://github.com/ocrmypdf/OCRmyPDF",children:"OCRmyPDF"})," is used for OCR (Optical CHaracter recognition) to change PDF images into text."]}),"\n",(0,r.jsx)(t.li,{children:"GhostScript, Bundled with OCRmyPDF, this is used to compress PDF documents."}),"\n"]})]})}function d(e={}){const{wrapper:t}={...(0,i.RP)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},5680:(e,t,n)=>{n.d(t,{RP:()=>a});var r=n(6540);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var l=r.createContext({}),a=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,l=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),p=a(n),u=i,f=p["".concat(l,".").concat(u)]||p[u]||h[u]||o;return n?r.createElement(f,s(s({ref:t},d),{},{components:n})):r.createElement(f,s({ref:t},d))}));d.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/54ff00bd.5f88c31d.js b/assets/js/54ff00bd.5f88c31d.js new file mode 100644 index 0000000..fe5f672 --- /dev/null +++ b/assets/js/54ff00bd.5f88c31d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[746],{1661:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>d,frontMatter:()=>o,metadata:()=>c,toc:()=>a});var r=n(4848),i=n(5680);const o={sidebar_position:2},s="The Technologies Behind Stirling PDF",c={id:"Overview/The Technologies",title:"The Technologies Behind Stirling PDF",description:"Stirling PDF harnesses several technologies throughout.",source:"@site/docs/Overview/The Technologies.md",sourceDirName:"Overview",slug:"/Overview/The Technologies",permalink:"/Overview/The Technologies",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/Overview/The Technologies.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"What is Stirling-PDF",permalink:"/"},next:{title:"Functionality",permalink:"/category/functionality"}},l={},a=[];function h(e){const t={a:"a",h1:"h1",li:"li",p:"p",ul:"ul",...(0,i.RP)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.h1,{id:"the-technologies-behind-stirling-pdf",children:"The Technologies Behind Stirling PDF"}),"\n",(0,r.jsx)(t.p,{children:"Stirling PDF harnesses several technologies throughout."}),"\n",(0,r.jsx)(t.h1,{id:"java",children:"Java"}),"\n",(0,r.jsxs)(t.p,{children:["As part of the JAVA framework to host the WebUI itself we use\nSpring Boot, Thymeleaf and PDFBox.\nApache PDFBox is the core of the PDF functionality within Stirling-PDF.\nThey offer a variety of methods to edit PDFs which we have then build Stirling-PDF on.\nWe also show all licenses used within our Java application ",(0,r.jsx)(t.a,{href:"https://stirlingpdf.io/licenses",children:"here"})]}),"\n",(0,r.jsx)(t.h1,{id:"javascript",children:"JavaScript"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.a,{href:"https://github.com/mozilla/pdf.js",children:"PDF.js"})}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.a,{href:"https://github.com/Hopding/pdf-lib",children:"PDF-LIB.js"})}),"\n"]}),"\n",(0,r.jsx)(t.h1,{id:"others",children:"Others"}),"\n",(0,r.jsx)(t.p,{children:"We also use other open source applications along side ours to offer additional functionality."}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.a,{href:"https://www.libreoffice.org/discover/libreoffice/",children:"LibreOffice"})," for advanced conversions"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.a,{href:"https://github.com/ocrmypdf/OCRmyPDF",children:"OCRmyPDF"})," is used for OCR (Optical CHaracter recognition) to change PDF images into text."]}),"\n",(0,r.jsx)(t.li,{children:"GhostScript, Bundled with OCRmyPDF, this is used to compress PDF documents."}),"\n"]})]})}function d(e={}){const{wrapper:t}={...(0,i.RP)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},5680:(e,t,n)=>{n.d(t,{RP:()=>a});var r=n(6540);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var l=r.createContext({}),a=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,l=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),p=a(n),u=i,f=p["".concat(l,".").concat(u)]||p[u]||h[u]||o;return n?r.createElement(f,s(s({ref:t},d),{},{components:n})):r.createElement(f,s({ref:t},d))}));d.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/58585d64.03e5fbb4.js b/assets/js/58585d64.03e5fbb4.js deleted file mode 100644 index f00298c..0000000 --- a/assets/js/58585d64.03e5fbb4.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[506],{9777:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>p,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var r=t(4848),i=t(5680);const o={sidebar_position:1},a="UI Customisation",s={id:"Advanced Configuration/UI Customisation",title:"UI Customisation",description:"Stirling PDF allows straightforward customization of the application name to make Stirling-PDF your own",source:"@site/docs/Advanced Configuration/UI Customisation.md",sourceDirName:"Advanced Configuration",slug:"/Advanced Configuration/UI Customisation",permalink:"/docs/Advanced Configuration/UI Customisation",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/Advanced Configuration/UI Customisation.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"System and Security",permalink:"/docs/Advanced Configuration/System and Security"},next:{title:"Endpoints Customisation",permalink:"/docs/Advanced Configuration/Endpoint or Feature Customisation"}},l={},c=[{value:"Settings file",id:"settings-file",level:2},{value:"Local",id:"local",level:2},{value:"Docker",id:"docker",level:2},{value:"Docker run",id:"docker-run",level:3},{value:"Docker Compose",id:"docker-compose",level:3}];function d(e){const n={code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.RP)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"ui-customisation",children:"UI Customisation"}),"\n",(0,r.jsx)(n.p,{children:"Stirling PDF allows straightforward customization of the application name to make Stirling-PDF your own\nThese are"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"appName"})," This defines the visible application name showed in the window name and navbar if navbar is not defined separately"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"homeDescription"})," The description to be displayed on the homepage under the navbar that first greets the user"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"appNameNavbar"})," The app name to be shown within to navbar for all pages"]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"settings-file",children:"Settings file"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"ui:\n appName: exampleAppName # Application's visible name\n homeDescription: I am a description # Short description or tagline shown on homepage.\n appNameNavbar: navbarName # Name displayed on the navigation bar\n"})}),"\n",(0,r.jsx)(n.h2,{id:"local",children:"Local"}),"\n",(0,r.jsxs)(n.p,{children:["If running Java directly, you can also pass these as properties using ",(0,r.jsx)(n.code,{children:"-D"})," arguments such as:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:'java -jar Stirling-PDF.jar -DAPP_HOME_NAME="New Application Name"\n'})}),"\n",(0,r.jsx)(n.p,{children:"Alternatively you can set these via environment variables by running before starting the application"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:'export UI_APP_NAME="Stirling PDF"\nexport UI_HOME_DESCRIPTION="Your locally hosted one-stop-shop for all your PDF needs."\nexport UI_APP_NAVBAR_NAME="Stirling PDF"\n'})}),"\n",(0,r.jsx)(n.h2,{id:"docker",children:"Docker"}),"\n",(0,r.jsx)(n.h3,{id:"docker-run",children:"Docker run"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"-e UI_APP_NAME=Stirling PDF \\\n-e UI_HOME_DESCRIPTION=Your locally hosted one-stop-shop for all your PDF needs. \\\n-e UI_APP_NAVBAR_NAME=Stirling PDF \\\n"})}),"\n",(0,r.jsx)(n.h3,{id:"docker-compose",children:"Docker Compose"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"environment:\n UI_APP_NAME: Stirling PDF\n UI_HOME_DESCRIPTION: Your locally hosted one-stop-shop for all your PDF needs.\n UI_APP_NAVBAR_NAME: Stirling PDF\n"})})]})}function p(e={}){const{wrapper:n}={...(0,i.RP)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},5680:(e,n,t)=>{t.d(n,{RP:()=>c});var r=t(6540);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function a(e){for(var n=1;n=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var l=r.createContext({}),c=function(e){var n=r.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):a(a({},n),e)),t},d={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},p=r.forwardRef((function(e,n){var t=e.components,i=e.mdxType,o=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=c(t),h=i,m=u["".concat(l,".").concat(h)]||u[h]||d[h]||o;return t?r.createElement(m,a(a({ref:n},p),{},{components:t})):r.createElement(m,a({ref:n},p))}));p.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/58585d64.3b02dbfa.js b/assets/js/58585d64.3b02dbfa.js new file mode 100644 index 0000000..72be735 --- /dev/null +++ b/assets/js/58585d64.3b02dbfa.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[506],{9777:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>p,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var r=t(4848),i=t(5680);const o={sidebar_position:1},a="UI Customisation",s={id:"Advanced Configuration/UI Customisation",title:"UI Customisation",description:"Stirling PDF allows straightforward customization of the application name to make Stirling-PDF your own",source:"@site/docs/Advanced Configuration/UI Customisation.md",sourceDirName:"Advanced Configuration",slug:"/Advanced Configuration/UI Customisation",permalink:"/Advanced Configuration/UI Customisation",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/Advanced Configuration/UI Customisation.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"System and Security",permalink:"/Advanced Configuration/System and Security"},next:{title:"Endpoints Customisation",permalink:"/Advanced Configuration/Endpoint or Feature Customisation"}},l={},c=[{value:"Settings file",id:"settings-file",level:2},{value:"Local",id:"local",level:2},{value:"Docker",id:"docker",level:2},{value:"Docker run",id:"docker-run",level:3},{value:"Docker Compose",id:"docker-compose",level:3}];function d(e){const n={code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.RP)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"ui-customisation",children:"UI Customisation"}),"\n",(0,r.jsx)(n.p,{children:"Stirling PDF allows straightforward customization of the application name to make Stirling-PDF your own\nThese are"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"appName"})," This defines the visible application name showed in the window name and navbar if navbar is not defined separately"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"homeDescription"})," The description to be displayed on the homepage under the navbar that first greets the user"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"appNameNavbar"})," The app name to be shown within to navbar for all pages"]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"settings-file",children:"Settings file"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"ui:\n appName: exampleAppName # Application's visible name\n homeDescription: I am a description # Short description or tagline shown on homepage.\n appNameNavbar: navbarName # Name displayed on the navigation bar\n"})}),"\n",(0,r.jsx)(n.h2,{id:"local",children:"Local"}),"\n",(0,r.jsxs)(n.p,{children:["If running Java directly, you can also pass these as properties using ",(0,r.jsx)(n.code,{children:"-D"})," arguments such as:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:'java -jar Stirling-PDF.jar -DAPP_HOME_NAME="New Application Name"\n'})}),"\n",(0,r.jsx)(n.p,{children:"Alternatively you can set these via environment variables by running before starting the application"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:'export UI_APP_NAME="Stirling PDF"\nexport UI_HOME_DESCRIPTION="Your locally hosted one-stop-shop for all your PDF needs."\nexport UI_APP_NAVBAR_NAME="Stirling PDF"\n'})}),"\n",(0,r.jsx)(n.h2,{id:"docker",children:"Docker"}),"\n",(0,r.jsx)(n.h3,{id:"docker-run",children:"Docker run"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"-e UI_APP_NAME=Stirling PDF \\\n-e UI_HOME_DESCRIPTION=Your locally hosted one-stop-shop for all your PDF needs. \\\n-e UI_APP_NAVBAR_NAME=Stirling PDF \\\n"})}),"\n",(0,r.jsx)(n.h3,{id:"docker-compose",children:"Docker Compose"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"environment:\n UI_APP_NAME: Stirling PDF\n UI_HOME_DESCRIPTION: Your locally hosted one-stop-shop for all your PDF needs.\n UI_APP_NAVBAR_NAME: Stirling PDF\n"})})]})}function p(e={}){const{wrapper:n}={...(0,i.RP)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},5680:(e,n,t)=>{t.d(n,{RP:()=>c});var r=t(6540);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function a(e){for(var n=1;n=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var l=r.createContext({}),c=function(e){var n=r.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):a(a({},n),e)),t},d={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},p=r.forwardRef((function(e,n){var t=e.components,i=e.mdxType,o=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=c(t),h=i,m=u["".concat(l,".").concat(h)]||u[h]||d[h]||o;return t?r.createElement(m,a(a({ref:n},p),{},{components:t})):r.createElement(m,a({ref:n},p))}));p.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/5b87d6e1.7b8b662e.js b/assets/js/5b87d6e1.7b8b662e.js deleted file mode 100644 index 41dbeae..0000000 --- a/assets/js/5b87d6e1.7b8b662e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[697],{9835:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var r=t(4848),i=t(5680);const o={sidebar_position:2},s="Features - Convert",c={id:"Functionality/Convert/Overview",title:"Features - Convert",description:"To PDF",source:"@site/docs/Functionality/Convert/Overview.md",sourceDirName:"Functionality/Convert",slug:"/Functionality/Convert/Overview",permalink:"/docs/Functionality/Convert/Overview",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/Functionality/Convert/Overview.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Features - Page Operations",permalink:"/docs/Functionality/Page operations/Overview"},next:{title:"Features - Security",permalink:"/docs/Functionality/Security/Overview"}},l={},d=[{value:"To PDF",id:"to-pdf",level:2},{value:"From PDF",id:"from-pdf",level:2}];function a(e){const n={code:"code",h1:"h1",h2:"h2",li:"li",p:"p",ul:"ul",...(0,i.RP)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"features---convert",children:"Features - Convert"}),"\n",(0,r.jsx)(n.h2,{id:"to-pdf",children:"To PDF"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"img-to-pdf"}),": This functionality allows users to convert images into PDF documents."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"file-to-pdf"}),": This feature converts various file formats (like DOCX, XLSX, etc.) into PDF."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"html-to-pdf"}),": Converts HTML files (And their includes css and images if provided via zip) into a PDF file"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"url-to-pdf"}),": Renders a URL and converts it to PDF"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"markdown-to-pdf"}),": Converts a markdown (.md) file to PDF"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"from-pdf",children:"From PDF"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"pdf-to-img"}),": This feature converts PDF documents into image files."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"pdf-to-word"}),": This feature allows users to convert PDF documents into Word files."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"pdf-to-presentation"}),": With this feature, users can convert PDFs into presentation formats like PPT."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"pdf-to-text"}),": This feature enables users to extract text from a PDF by converting it to a text file."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"pdf-to-html"}),": This functionality allows users to convert PDFs into HTML format."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"pdf-to-xml"}),": This feature enables users to convert PDFs into XML files."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"pdf-to-pdfa"}),": This feature transforms PDF files into PDF/A format for long-term archiving."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"pdf-to-csv"}),": This feature Tries to detect tables within a PDF which can be exported, This only works with digital PDFs not scanned and is a Work in progress feature due to its complexity"]}),"\n"]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,i.RP)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},5680:(e,n,t)=>{t.d(n,{RP:()=>d});var r=t(6540);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function s(e){for(var n=1;n=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var l=r.createContext({}),d=function(e){var n=r.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):s(s({},n),e)),t},a={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},u=r.forwardRef((function(e,n){var t=e.components,i=e.mdxType,o=e.originalType,l=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),p=d(t),f=i,h=p["".concat(l,".").concat(f)]||p[f]||a[f]||o;return t?r.createElement(h,s(s({ref:n},u),{},{components:t})):r.createElement(h,s({ref:n},u))}));u.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/5b87d6e1.cac3344a.js b/assets/js/5b87d6e1.cac3344a.js new file mode 100644 index 0000000..5a5f9d3 --- /dev/null +++ b/assets/js/5b87d6e1.cac3344a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[697],{9835:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var r=t(4848),i=t(5680);const o={sidebar_position:2},s="Features - Convert",c={id:"Functionality/Convert/Overview",title:"Features - Convert",description:"To PDF",source:"@site/docs/Functionality/Convert/Overview.md",sourceDirName:"Functionality/Convert",slug:"/Functionality/Convert/Overview",permalink:"/Functionality/Convert/Overview",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/Functionality/Convert/Overview.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Features - Page Operations",permalink:"/Functionality/Page operations/Overview"},next:{title:"Features - Security",permalink:"/Functionality/Security/Overview"}},l={},d=[{value:"To PDF",id:"to-pdf",level:2},{value:"From PDF",id:"from-pdf",level:2}];function a(e){const n={code:"code",h1:"h1",h2:"h2",li:"li",p:"p",ul:"ul",...(0,i.RP)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"features---convert",children:"Features - Convert"}),"\n",(0,r.jsx)(n.h2,{id:"to-pdf",children:"To PDF"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"img-to-pdf"}),": This functionality allows users to convert images into PDF documents."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"file-to-pdf"}),": This feature converts various file formats (like DOCX, XLSX, etc.) into PDF."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"html-to-pdf"}),": Converts HTML files (And their includes css and images if provided via zip) into a PDF file"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"url-to-pdf"}),": Renders a URL and converts it to PDF"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"markdown-to-pdf"}),": Converts a markdown (.md) file to PDF"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"from-pdf",children:"From PDF"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"pdf-to-img"}),": This feature converts PDF documents into image files."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"pdf-to-word"}),": This feature allows users to convert PDF documents into Word files."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"pdf-to-presentation"}),": With this feature, users can convert PDFs into presentation formats like PPT."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"pdf-to-text"}),": This feature enables users to extract text from a PDF by converting it to a text file."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"pdf-to-html"}),": This functionality allows users to convert PDFs into HTML format."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"pdf-to-xml"}),": This feature enables users to convert PDFs into XML files."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"pdf-to-pdfa"}),": This feature transforms PDF files into PDF/A format for long-term archiving."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"pdf-to-csv"}),": This feature Tries to detect tables within a PDF which can be exported, This only works with digital PDFs not scanned and is a Work in progress feature due to its complexity"]}),"\n"]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,i.RP)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},5680:(e,n,t)=>{t.d(n,{RP:()=>d});var r=t(6540);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function s(e){for(var n=1;n=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var l=r.createContext({}),d=function(e){var n=r.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):s(s({},n),e)),t},a={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},u=r.forwardRef((function(e,n){var t=e.components,i=e.mdxType,o=e.originalType,l=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),p=d(t),f=i,h=p["".concat(l,".").concat(f)]||p[f]||a[f]||o;return t?r.createElement(h,s(s({ref:n},u),{},{components:t})):r.createElement(h,s({ref:n},u))}));u.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/5bfee675.f06816a3.js b/assets/js/5bfee675.f06816a3.js deleted file mode 100644 index 06274ea..0000000 --- a/assets/js/5bfee675.f06816a3.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[704],{1157:e=>{e.exports=JSON.parse('{"tags":[{"label":"API","permalink":"/docs/tags/api","count":1},{"label":"Code","permalink":"/docs/tags/code","count":1},{"label":"Language","permalink":"/docs/tags/language","count":1}]}')}}]); \ No newline at end of file diff --git a/assets/js/6629c45f.66f4cfb5.js b/assets/js/6629c45f.66f4cfb5.js new file mode 100644 index 0000000..81f954c --- /dev/null +++ b/assets/js/6629c45f.66f4cfb5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[820],{7691:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"tutorialSidebar":[{"type":"category","label":"Overview","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"What is Stirling-PDF","href":"/","docId":"Overview/What is Stirling-PDF","unlisted":false},{"type":"link","label":"The Technologies Behind Stirling PDF","href":"/Overview/The Technologies","docId":"Overview/The Technologies","unlisted":false}]},{"type":"category","label":"Functionality","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Page operations","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Features - Page Operations","href":"/Functionality/Page operations/Overview","docId":"Functionality/Page operations/Overview","unlisted":false}]},{"type":"category","label":"Convert","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Features - Convert","href":"/Functionality/Convert/Overview","docId":"Functionality/Convert/Overview","unlisted":false}]},{"type":"category","label":"Security","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Features - Security","href":"/Functionality/Security/Overview","docId":"Functionality/Security/Overview","unlisted":false}]},{"type":"category","label":"Miscellaneous","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Features - Miscellaneous","href":"/Functionality/Miscellaneous/Overview","docId":"Functionality/Miscellaneous/Overview","unlisted":false}]}],"href":"/category/functionality"},{"type":"category","label":"Getting started","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Installation","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Docker","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Docker Versions","href":"/Getting started/Installation/Docker/Docker Versions","docId":"Getting started/Installation/Docker/Docker Versions","unlisted":false},{"type":"link","label":"Installation Guide","href":"/Getting started/Installation/Docker/Docker Install","docId":"Getting started/Installation/Docker/Docker Install","unlisted":false}]},{"type":"category","label":"Local","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Unix installation Guide","href":"/Getting started/Installation/Local/Unix Installation","docId":"Getting started/Installation/Local/Unix Installation","unlisted":false},{"type":"link","label":"Windows installation Guide","href":"/Getting started/Installation/Local/Windows Installation","docId":"Getting started/Installation/Local/Windows Installation","unlisted":false}]}]}]},{"type":"link","label":"API","href":"/API","docId":"API","unlisted":false},{"type":"link","label":"Frequently Asked Questions","href":"/FAQ","docId":"FAQ","unlisted":false},{"type":"category","label":"Advanced Configuration","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"How to add Configurations","href":"/Advanced Configuration/How to add configurations","docId":"Advanced Configuration/How to add configurations","unlisted":false},{"type":"link","label":"OCR (Optical Character Recognition)","href":"/Advanced Configuration/OCR","docId":"Advanced Configuration/OCR","unlisted":false},{"type":"link","label":"Single Sign-On (SSO) Configuration","href":"/Advanced Configuration/Single Sign-On Configuration","docId":"Advanced Configuration/Single Sign-On Configuration","unlisted":false},{"type":"link","label":"System and Security","href":"/Advanced Configuration/System and Security","docId":"Advanced Configuration/System and Security","unlisted":false},{"type":"link","label":"UI Customisation","href":"/Advanced Configuration/UI Customisation","docId":"Advanced Configuration/UI Customisation","unlisted":false},{"type":"link","label":"Endpoints Customisation","href":"/Advanced Configuration/Endpoint or Feature Customisation","docId":"Advanced Configuration/Endpoint or Feature Customisation","unlisted":false},{"type":"link","label":"Other Customisations","href":"/Advanced Configuration/Other Customisations","docId":"Advanced Configuration/Other Customisations","unlisted":false}]},{"type":"category","label":"Contribute","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Code","href":"/Contribute/Code","docId":"Contribute/Code","unlisted":false},{"type":"link","label":"Add a New Language","href":"/Contribute/Language","docId":"Contribute/Language","unlisted":false}]}]},"docs":{"Advanced Configuration/Endpoint or Feature Customisation":{"id":"Advanced Configuration/Endpoint or Feature Customisation","title":"Endpoints Customisation","description":"You can selectively disable and remove endpoints and functionalities from Stirling PDF as per your requirements.","sidebar":"tutorialSidebar"},"Advanced Configuration/How to add configurations":{"id":"Advanced Configuration/How to add configurations","title":"How to add Configurations","description":"Stirling PDF allows easy customization of the app.","sidebar":"tutorialSidebar"},"Advanced Configuration/OCR":{"id":"Advanced Configuration/OCR","title":"OCR (Optical Character Recognition)","description":"This document provides instructions on how to add additional language packs for the OCR tab in Stirling-PDF, both inside and outside of Docker.","sidebar":"tutorialSidebar"},"Advanced Configuration/Other Customisations":{"id":"Advanced Configuration/Other Customisations","title":"Other Customisations","description":"Stirling PDF offers various other customisation options, such as:","sidebar":"tutorialSidebar"},"Advanced Configuration/Single Sign-On Configuration":{"id":"Advanced Configuration/Single Sign-On Configuration","title":"Single Sign-On (SSO) Configuration","description":"Stirling PDF allows login via Single Sign-On (SSO) using OAUTH2 OpenID Connect (OIDC)","sidebar":"tutorialSidebar"},"Advanced Configuration/System and Security":{"id":"Advanced Configuration/System and Security","title":"System and Security","description":"Stirling PDF allows custommization of system and security settings","sidebar":"tutorialSidebar"},"Advanced Configuration/UI Customisation":{"id":"Advanced Configuration/UI Customisation","title":"UI Customisation","description":"Stirling PDF allows straightforward customization of the application name to make Stirling-PDF your own","sidebar":"tutorialSidebar"},"API":{"id":"API","title":"API","description":"Overview of API offering in S-PDF","sidebar":"tutorialSidebar"},"Contribute/Code":{"id":"Contribute/Code","title":"Code","description":"Create a doc page with rich content.","sidebar":"tutorialSidebar"},"Contribute/Language":{"id":"Contribute/Language","title":"Add a New Language","description":"Create a doc page with rich content.","sidebar":"tutorialSidebar"},"FAQ":{"id":"FAQ","title":"Frequently Asked Questions","description":"Q1: Why are .htm files being downloaded when I use the application?","sidebar":"tutorialSidebar"},"Functionality/Convert/Overview":{"id":"Functionality/Convert/Overview","title":"Features - Convert","description":"To PDF","sidebar":"tutorialSidebar"},"Functionality/Miscellaneous/Overview":{"id":"Functionality/Miscellaneous/Overview","title":"Features - Miscellaneous","description":"- ocr-pdf: This feature allows users to perform optical character recognition (OCR) on PDFs, making them searchable and editable.","sidebar":"tutorialSidebar"},"Functionality/Page operations/Overview":{"id":"Functionality/Page operations/Overview","title":"Features - Page Operations","description":"- merge-pdfs: With this feature, users can merge multiple PDF documents into a single PDF.","sidebar":"tutorialSidebar"},"Functionality/Security/Overview":{"id":"Functionality/Security/Overview","title":"Features - Security","description":"- add-password: This feature allows users to secure their PDFs by adding a password.","sidebar":"tutorialSidebar"},"Getting started/Installation/Docker/Docker Install":{"id":"Getting started/Installation/Docker/Docker Install","title":"Installation Guide","description":"The docker image for Stirling-PDF is available on Docker Hub at frooodle/s-pdf or on Github at s-pdf.","sidebar":"tutorialSidebar"},"Getting started/Installation/Docker/Docker Versions":{"id":"Getting started/Installation/Docker/Docker Versions","title":"Docker Versions","description":"Stirling PDF is avaiable in two distinct docker images:","sidebar":"tutorialSidebar"},"Getting started/Installation/Local/Unix Installation":{"id":"Getting started/Installation/Local/Unix Installation","title":"Unix installation Guide","description":"To run the application without Docker/Podman, you will need to manually install all dependencies and build the necessary components.","sidebar":"tutorialSidebar"},"Getting started/Installation/Local/Windows Installation":{"id":"Getting started/Installation/Local/Windows Installation","title":"Windows installation Guide","description":"Stirling PDF provides Windows compatibility through a downloadable .exe file, which can be obtained from here.","sidebar":"tutorialSidebar"},"Overview/The Technologies":{"id":"Overview/The Technologies","title":"The Technologies Behind Stirling PDF","description":"Stirling PDF harnesses several technologies throughout.","sidebar":"tutorialSidebar"},"Overview/What is Stirling-PDF":{"id":"Overview/What is Stirling-PDF","title":"What is Stirling-PDF","description":"Stirling PDF is a robust, locally hosted, web-based PDF manipulation platform powered by Docker. Our application offers an extensive range of functionalities, from simple operations like merging and splitting PDFs, to advanced features such as compressing, OCR and Conversions.","sidebar":"tutorialSidebar"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/69c64e15.4107c0e8.js b/assets/js/69c64e15.4107c0e8.js new file mode 100644 index 0000000..9514ecb --- /dev/null +++ b/assets/js/69c64e15.4107c0e8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[740],{9375:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>j,frontMatter:()=>d,metadata:()=>l,toc:()=>h});var s=r(4848),n=r(5680);const d={sidebar_position:1,id:"Docker Versions",title:"Docker Versions"},i="Docker Versions of Stirling PDF",l={id:"Getting started/Installation/Docker/Docker Versions",title:"Docker Versions",description:"Stirling PDF is avaiable in two distinct docker images:",source:"@site/docs/Getting started/Installation/Docker/Docker Versions.md",sourceDirName:"Getting started/Installation/Docker",slug:"/Getting started/Installation/Docker/Docker Versions",permalink:"/Getting started/Installation/Docker/Docker Versions",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/Getting started/Installation/Docker/Docker Versions.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1,id:"Docker Versions",title:"Docker Versions"},sidebar:"tutorialSidebar",previous:{title:"Features - Miscellaneous",permalink:"/Functionality/Miscellaneous/Overview"},next:{title:"Installation Guide",permalink:"/Getting started/Installation/Docker/Docker Install"}},c={},h=[];function x(e){const t={h1:"h1",img:"img",li:"li",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,n.RP)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id:"docker-versions-of-stirling-pdf",children:"Docker Versions of Stirling PDF"}),"\n",(0,s.jsx)(t.p,{children:"Stirling PDF is avaiable in two distinct docker images:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.img,{src:"https://img.shields.io/docker/image-size/frooodle/s-pdf/latest?label=Stirling-PDF%20Full",alt:"Docker Image Size (tag)"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.img,{src:"https://img.shields.io/docker/image-size/frooodle/s-pdf/latest-ultra-lite?label=Stirling-PDF%20Ultra-Lite",alt:"Docker Image Size (tag)"})}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:"Each version caters to different needs based on the specific features required and the storage space available."}),"\n",(0,s.jsx)(t.p,{children:"For an in-depth comparison of what each version offers, please refer to the graph below.\nIf storage optimization is not a concern, we recommend using the latest tag for the most complete set of features."}),"\n",(0,s.jsx)(t.p,{children:"Here are the different technologies each version uses."}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Technology"}),(0,s.jsx)(t.th,{style:{textAlign:"center"},children:"Ultra-Lite"}),(0,s.jsx)(t.th,{style:{textAlign:"center"},children:"Full"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"Java"}),(0,s.jsx)(t.td,{style:{textAlign:"center"},children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{style:{textAlign:"center"},children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"JavaScript"}),(0,s.jsx)(t.td,{style:{textAlign:"center"},children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{style:{textAlign:"center"},children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"Libre"}),(0,s.jsx)(t.td,{style:{textAlign:"center"}}),(0,s.jsx)(t.td,{style:{textAlign:"center"},children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"Python"}),(0,s.jsx)(t.td,{style:{textAlign:"center"}}),(0,s.jsx)(t.td,{style:{textAlign:"center"},children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"OpenCV"}),(0,s.jsx)(t.td,{style:{textAlign:"center"}}),(0,s.jsx)(t.td,{style:{textAlign:"center"},children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"OCRmyPDF"}),(0,s.jsx)(t.td,{style:{textAlign:"center"}}),(0,s.jsx)(t.td,{style:{textAlign:"center"},children:"\u2714\ufe0f"})]})]})]}),"\n",(0,s.jsx)(t.p,{children:"And here you see what functions are offered as part of each."}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Operation"}),(0,s.jsx)(t.th,{children:"Ultra-Lite"}),(0,s.jsx)(t.th,{children:"Full"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"add-page-numbers"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"add-password"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"add-image"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"add-watermark"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"adjust-contrast"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"auto-split-pdf"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"auto-redact"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"auto-rename"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"cert-sign"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"crop"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"change-metadata"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"change-permissions"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"compare"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"extract-page"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"extract-images"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"flatten"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"get-info-on-pdf"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"img-to-pdf"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"markdown-to-pdf"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"merge-pdfs"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"multi-page-layout"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"overlay-pdf"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"pdf-organizer"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"pdf-to-csv"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"pdf-to-img"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"pdf-to-single-page"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"remove-blanks"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"remove-pages"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"remove-password"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"rotate-pdf"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"sanitize-pdf"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"scale-pages"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"sign"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"show-javascript"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"split-by-size-or-count"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"split-pdf-by-sections"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"split-pdfs"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"compress-pdf"}),(0,s.jsx)(t.td,{}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"extract-image-scans"}),(0,s.jsx)(t.td,{}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"ocr-pdf"}),(0,s.jsx)(t.td,{}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"pdf-to-pdfa"}),(0,s.jsx)(t.td,{}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]})]})]})]})}function j(e={}){const{wrapper:t}={...(0,n.RP)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(x,{...e})}):x(e)}},5680:(e,t,r)=>{r.d(t,{RP:()=>h});var s=r(6540);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function d(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,s)}return r}function i(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(e);for(s=0;s=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var c=s.createContext({}),h=function(e){var t=s.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},x={inlineCode:"code",wrapper:function(e){var t=e.children;return s.createElement(s.Fragment,{},t)}},j=s.forwardRef((function(e,t){var r=e.components,n=e.mdxType,d=e.originalType,c=e.parentName,j=l(e,["components","mdxType","originalType","parentName"]),o=h(r),a=n,p=o["".concat(c,".").concat(a)]||o[a]||x[a]||d;return r?s.createElement(p,i(i({ref:t},j),{},{components:r})):s.createElement(p,i({ref:t},j))}));j.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/69c64e15.b0c1d1d8.js b/assets/js/69c64e15.b0c1d1d8.js deleted file mode 100644 index 1a378fd..0000000 --- a/assets/js/69c64e15.b0c1d1d8.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[740],{9375:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>j,frontMatter:()=>n,metadata:()=>l,toc:()=>h});var s=r(4848),d=r(5680);const n={sidebar_position:1,id:"Docker Versions",title:"Docker Versions"},i="Docker Versions of Stirling PDF",l={id:"Getting started/Installation/Docker/Docker Versions",title:"Docker Versions",description:"Stirling PDF is avaiable in two distinct docker images:",source:"@site/docs/Getting started/Installation/Docker/Docker Versions.md",sourceDirName:"Getting started/Installation/Docker",slug:"/Getting started/Installation/Docker/Docker Versions",permalink:"/docs/Getting started/Installation/Docker/Docker Versions",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/Getting started/Installation/Docker/Docker Versions.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1,id:"Docker Versions",title:"Docker Versions"},sidebar:"tutorialSidebar",previous:{title:"Features - Miscellaneous",permalink:"/docs/Functionality/Miscellaneous/Overview"},next:{title:"Installation Guide",permalink:"/docs/Getting started/Installation/Docker/Docker Install"}},c={},h=[];function x(e){const t={h1:"h1",img:"img",li:"li",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,d.RP)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id:"docker-versions-of-stirling-pdf",children:"Docker Versions of Stirling PDF"}),"\n",(0,s.jsx)(t.p,{children:"Stirling PDF is avaiable in two distinct docker images:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.img,{src:"https://img.shields.io/docker/image-size/frooodle/s-pdf/latest?label=Stirling-PDF%20Full",alt:"Docker Image Size (tag)"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.img,{src:"https://img.shields.io/docker/image-size/frooodle/s-pdf/latest-ultra-lite?label=Stirling-PDF%20Ultra-Lite",alt:"Docker Image Size (tag)"})}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:"Each version caters to different needs based on the specific features required and the storage space available."}),"\n",(0,s.jsx)(t.p,{children:"For an in-depth comparison of what each version offers, please refer to the graph below.\nIf storage optimization is not a concern, we recommend using the latest tag for the most complete set of features."}),"\n",(0,s.jsx)(t.p,{children:"Here are the different technologies each version uses."}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Technology"}),(0,s.jsx)(t.th,{style:{textAlign:"center"},children:"Ultra-Lite"}),(0,s.jsx)(t.th,{style:{textAlign:"center"},children:"Full"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"Java"}),(0,s.jsx)(t.td,{style:{textAlign:"center"},children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{style:{textAlign:"center"},children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"JavaScript"}),(0,s.jsx)(t.td,{style:{textAlign:"center"},children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{style:{textAlign:"center"},children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"Libre"}),(0,s.jsx)(t.td,{style:{textAlign:"center"}}),(0,s.jsx)(t.td,{style:{textAlign:"center"},children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"Python"}),(0,s.jsx)(t.td,{style:{textAlign:"center"}}),(0,s.jsx)(t.td,{style:{textAlign:"center"},children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"OpenCV"}),(0,s.jsx)(t.td,{style:{textAlign:"center"}}),(0,s.jsx)(t.td,{style:{textAlign:"center"},children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"OCRmyPDF"}),(0,s.jsx)(t.td,{style:{textAlign:"center"}}),(0,s.jsx)(t.td,{style:{textAlign:"center"},children:"\u2714\ufe0f"})]})]})]}),"\n",(0,s.jsx)(t.p,{children:"And here you see what functions are offered as part of each."}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Operation"}),(0,s.jsx)(t.th,{children:"Ultra-Lite"}),(0,s.jsx)(t.th,{children:"Full"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"add-page-numbers"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"add-password"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"add-image"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"add-watermark"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"adjust-contrast"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"auto-split-pdf"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"auto-redact"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"auto-rename"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"cert-sign"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"crop"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"change-metadata"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"change-permissions"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"compare"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"extract-page"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"extract-images"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"flatten"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"get-info-on-pdf"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"img-to-pdf"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"markdown-to-pdf"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"merge-pdfs"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"multi-page-layout"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"overlay-pdf"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"pdf-organizer"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"pdf-to-csv"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"pdf-to-img"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"pdf-to-single-page"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"remove-blanks"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"remove-pages"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"remove-password"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"rotate-pdf"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"sanitize-pdf"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"scale-pages"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"sign"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"show-javascript"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"split-by-size-or-count"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"split-pdf-by-sections"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"split-pdfs"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"compress-pdf"}),(0,s.jsx)(t.td,{}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"extract-image-scans"}),(0,s.jsx)(t.td,{}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"ocr-pdf"}),(0,s.jsx)(t.td,{}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"pdf-to-pdfa"}),(0,s.jsx)(t.td,{}),(0,s.jsx)(t.td,{children:"\u2714\ufe0f"})]})]})]})]})}function j(e={}){const{wrapper:t}={...(0,d.RP)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(x,{...e})}):x(e)}},5680:(e,t,r)=>{r.d(t,{RP:()=>h});var s=r(6540);function d(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,s)}return r}function i(e){for(var t=1;t=0||(d[r]=e[r]);return d}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(s=0;s=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(d[r]=e[r])}return d}var c=s.createContext({}),h=function(e){var t=s.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},x={inlineCode:"code",wrapper:function(e){var t=e.children;return s.createElement(s.Fragment,{},t)}},j=s.forwardRef((function(e,t){var r=e.components,d=e.mdxType,n=e.originalType,c=e.parentName,j=l(e,["components","mdxType","originalType","parentName"]),o=h(r),a=d,p=o["".concat(c,".").concat(a)]||o[a]||x[a]||n;return r?s.createElement(p,i(i({ref:t},j),{},{components:r})):s.createElement(p,i({ref:t},j))}));j.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/763c3bf2.7d877d20.js b/assets/js/763c3bf2.7d877d20.js deleted file mode 100644 index 3562f7e..0000000 --- a/assets/js/763c3bf2.7d877d20.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[297],{6413:e=>{e.exports=JSON.parse('{"categoryGeneratedIndex":{"title":"Functionality","description":"All functionality and their categories within Stirling-PDF.","slug":"/category/functionality","permalink":"/docs/category/functionality","sidebar":"tutorialSidebar","navigation":{"previous":{"title":"The Technologies Behind Stirling PDF","permalink":"/docs/Overview/The Technologies"},"next":{"title":"Features - Page Operations","permalink":"/docs/Functionality/Page operations/Overview"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/7c110bd0.f2ac5844.js b/assets/js/7c110bd0.f2ac5844.js deleted file mode 100644 index 85a5b8e..0000000 --- a/assets/js/7c110bd0.f2ac5844.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[877],{2614:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"tutorialSidebar":[{"type":"category","label":"Overview","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"What is Stirling-PDF","href":"/docs/Overview/What is Stirling-PDF","docId":"Overview/What is Stirling-PDF","unlisted":false},{"type":"link","label":"The Technologies Behind Stirling PDF","href":"/docs/Overview/The Technologies","docId":"Overview/The Technologies","unlisted":false}]},{"type":"category","label":"Functionality","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Page operations","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Features - Page Operations","href":"/docs/Functionality/Page operations/Overview","docId":"Functionality/Page operations/Overview","unlisted":false}]},{"type":"category","label":"Convert","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Features - Convert","href":"/docs/Functionality/Convert/Overview","docId":"Functionality/Convert/Overview","unlisted":false}]},{"type":"category","label":"Security","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Features - Security","href":"/docs/Functionality/Security/Overview","docId":"Functionality/Security/Overview","unlisted":false}]},{"type":"category","label":"Miscellaneous","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Features - Miscellaneous","href":"/docs/Functionality/Miscellaneous/Overview","docId":"Functionality/Miscellaneous/Overview","unlisted":false}]}],"href":"/docs/category/functionality"},{"type":"category","label":"Getting started","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Installation","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Docker","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Docker Versions","href":"/docs/Getting started/Installation/Docker/Docker Versions","docId":"Getting started/Installation/Docker/Docker Versions","unlisted":false},{"type":"link","label":"Installation Guide","href":"/docs/Getting started/Installation/Docker/Docker Install","docId":"Getting started/Installation/Docker/Docker Install","unlisted":false}]},{"type":"category","label":"Local","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Unix installation Guide","href":"/docs/Getting started/Installation/Local/Unix Installation","docId":"Getting started/Installation/Local/Unix Installation","unlisted":false},{"type":"link","label":"Windows installation Guide","href":"/docs/Getting started/Installation/Local/Windows Installation","docId":"Getting started/Installation/Local/Windows Installation","unlisted":false}]}]}]},{"type":"link","label":"API","href":"/docs/API","docId":"API","unlisted":false},{"type":"link","label":"Frequently Asked Questions","href":"/docs/FAQ","docId":"FAQ","unlisted":false},{"type":"category","label":"Advanced Configuration","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"How to add Configurations","href":"/docs/Advanced Configuration/How to add configurations","docId":"Advanced Configuration/How to add configurations","unlisted":false},{"type":"link","label":"OCR (Optical Character Recognition)","href":"/docs/Advanced Configuration/OCR","docId":"Advanced Configuration/OCR","unlisted":false},{"type":"link","label":"Single Sign-On (SSO) Configuration","href":"/docs/Advanced Configuration/Single Sign-On Configuration","docId":"Advanced Configuration/Single Sign-On Configuration","unlisted":false},{"type":"link","label":"System and Security","href":"/docs/Advanced Configuration/System and Security","docId":"Advanced Configuration/System and Security","unlisted":false},{"type":"link","label":"UI Customisation","href":"/docs/Advanced Configuration/UI Customisation","docId":"Advanced Configuration/UI Customisation","unlisted":false},{"type":"link","label":"Endpoints Customisation","href":"/docs/Advanced Configuration/Endpoint or Feature Customisation","docId":"Advanced Configuration/Endpoint or Feature Customisation","unlisted":false},{"type":"link","label":"Other Customisations","href":"/docs/Advanced Configuration/Other Customisations","docId":"Advanced Configuration/Other Customisations","unlisted":false}]},{"type":"category","label":"Contribute","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Code","href":"/docs/Contribute/Code","docId":"Contribute/Code","unlisted":false},{"type":"link","label":"Add a New Language","href":"/docs/Contribute/Language","docId":"Contribute/Language","unlisted":false}]}]},"docs":{"Advanced Configuration/Endpoint or Feature Customisation":{"id":"Advanced Configuration/Endpoint or Feature Customisation","title":"Endpoints Customisation","description":"You can selectively disable and remove endpoints and functionalities from Stirling PDF as per your requirements.","sidebar":"tutorialSidebar"},"Advanced Configuration/How to add configurations":{"id":"Advanced Configuration/How to add configurations","title":"How to add Configurations","description":"Stirling PDF allows easy customization of the app.","sidebar":"tutorialSidebar"},"Advanced Configuration/OCR":{"id":"Advanced Configuration/OCR","title":"OCR (Optical Character Recognition)","description":"This document provides instructions on how to add additional language packs for the OCR tab in Stirling-PDF, both inside and outside of Docker.","sidebar":"tutorialSidebar"},"Advanced Configuration/Other Customisations":{"id":"Advanced Configuration/Other Customisations","title":"Other Customisations","description":"Stirling PDF offers various other customisation options, such as:","sidebar":"tutorialSidebar"},"Advanced Configuration/Single Sign-On Configuration":{"id":"Advanced Configuration/Single Sign-On Configuration","title":"Single Sign-On (SSO) Configuration","description":"Stirling PDF allows login via Single Sign-On (SSO) using OAUTH2 OpenID Connect (OIDC)","sidebar":"tutorialSidebar"},"Advanced Configuration/System and Security":{"id":"Advanced Configuration/System and Security","title":"System and Security","description":"Stirling PDF allows custommization of system and security settings","sidebar":"tutorialSidebar"},"Advanced Configuration/UI Customisation":{"id":"Advanced Configuration/UI Customisation","title":"UI Customisation","description":"Stirling PDF allows straightforward customization of the application name to make Stirling-PDF your own","sidebar":"tutorialSidebar"},"API":{"id":"API","title":"API","description":"Overview of API offering in S-PDF","sidebar":"tutorialSidebar"},"Contribute/Code":{"id":"Contribute/Code","title":"Code","description":"Create a doc page with rich content.","sidebar":"tutorialSidebar"},"Contribute/Language":{"id":"Contribute/Language","title":"Add a New Language","description":"Create a doc page with rich content.","sidebar":"tutorialSidebar"},"FAQ":{"id":"FAQ","title":"Frequently Asked Questions","description":"Q1: Why are .htm files being downloaded when I use the application?","sidebar":"tutorialSidebar"},"Functionality/Convert/Overview":{"id":"Functionality/Convert/Overview","title":"Features - Convert","description":"To PDF","sidebar":"tutorialSidebar"},"Functionality/Miscellaneous/Overview":{"id":"Functionality/Miscellaneous/Overview","title":"Features - Miscellaneous","description":"- ocr-pdf: This feature allows users to perform optical character recognition (OCR) on PDFs, making them searchable and editable.","sidebar":"tutorialSidebar"},"Functionality/Page operations/Overview":{"id":"Functionality/Page operations/Overview","title":"Features - Page Operations","description":"- merge-pdfs: With this feature, users can merge multiple PDF documents into a single PDF.","sidebar":"tutorialSidebar"},"Functionality/Security/Overview":{"id":"Functionality/Security/Overview","title":"Features - Security","description":"- add-password: This feature allows users to secure their PDFs by adding a password.","sidebar":"tutorialSidebar"},"Getting started/Installation/Docker/Docker Install":{"id":"Getting started/Installation/Docker/Docker Install","title":"Installation Guide","description":"The docker image for Stirling-PDF is available on Docker Hub at frooodle/s-pdf or on Github at s-pdf.","sidebar":"tutorialSidebar"},"Getting started/Installation/Docker/Docker Versions":{"id":"Getting started/Installation/Docker/Docker Versions","title":"Docker Versions","description":"Stirling PDF is avaiable in two distinct docker images:","sidebar":"tutorialSidebar"},"Getting started/Installation/Local/Unix Installation":{"id":"Getting started/Installation/Local/Unix Installation","title":"Unix installation Guide","description":"To run the application without Docker/Podman, you will need to manually install all dependencies and build the necessary components.","sidebar":"tutorialSidebar"},"Getting started/Installation/Local/Windows Installation":{"id":"Getting started/Installation/Local/Windows Installation","title":"Windows installation Guide","description":"Stirling PDF provides Windows compatibility through a downloadable .exe file, which can be obtained from here.","sidebar":"tutorialSidebar"},"Overview/The Technologies":{"id":"Overview/The Technologies","title":"The Technologies Behind Stirling PDF","description":"Stirling PDF harnesses several technologies throughout.","sidebar":"tutorialSidebar"},"Overview/What is Stirling-PDF":{"id":"Overview/What is Stirling-PDF","title":"What is Stirling-PDF","description":"Stirling PDF is a robust, locally hosted, web-based PDF manipulation platform powered by Docker. Our application offers an extensive range of functionalities, from simple operations like merging and splitting PDFs, to advanced features such as compressing, OCR and Conversions.","sidebar":"tutorialSidebar"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/94fbe072.184fa5e3.js b/assets/js/94fbe072.184fa5e3.js deleted file mode 100644 index c5575d0..0000000 --- a/assets/js/94fbe072.184fa5e3.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[4],{1484:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>s,contentTitle:()=>a,default:()=>p,frontMatter:()=>r,metadata:()=>l,toc:()=>c});var i=n(4848),o=n(5680);const r={sidebar_position:2,id:"Windows Installation",title:"Windows installation Guide"},a="Windows Installation Guide for Stirling PDF",l={id:"Getting started/Installation/Local/Windows Installation",title:"Windows installation Guide",description:"Stirling PDF provides Windows compatibility through a downloadable .exe file, which can be obtained from here.",source:"@site/docs/Getting started/Installation/Local/Windows.md",sourceDirName:"Getting started/Installation/Local",slug:"/Getting started/Installation/Local/Windows Installation",permalink:"/docs/Getting started/Installation/Local/Windows Installation",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/Getting started/Installation/Local/Windows.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2,id:"Windows Installation",title:"Windows installation Guide"},sidebar:"tutorialSidebar",previous:{title:"Unix installation Guide",permalink:"/docs/Getting started/Installation/Local/Unix Installation"},next:{title:"API",permalink:"/docs/API"}},s={},c=[];function d(t){const e={a:"a",h1:"h1",p:"p",...(0,o.RP)(),...t.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(e.h1,{id:"windows-installation-guide-for-stirling-pdf",children:"Windows Installation Guide for Stirling PDF"}),"\n",(0,i.jsxs)(e.p,{children:["Stirling PDF provides Windows compatibility through a downloadable .exe file, which can be obtained from ",(0,i.jsx)(e.a,{href:"https://github.com/Stirling-Tools/Stirling-PDF/releases/latest",children:"here"}),".\nThis is a streamlined version of the application, offering the same capabilities as the Stirling-PDF-Ultra-lite found in Docker, but in a compact 80MB executable!"]}),"\n",(0,i.jsx)(e.p,{children:"Simply download and launch the .exe file to access the Stirling-PDF Web-UI. It is important to note that this application requires JAVA 17 or 21. If the application identifies that this version of JAVA isn't installed on your system, it will prompt a link to download the appropriate version."}),"\n",(0,i.jsx)(e.p,{children:"Once launched, the application hosts a web server that is accessible and usable by anyone on your network."})]})}function p(t={}){const{wrapper:e}={...(0,o.RP)(),...t.components};return e?(0,i.jsx)(e,{...t,children:(0,i.jsx)(d,{...t})}):d(t)}},5680:(t,e,n)=>{n.d(e,{RP:()=>c});var i=n(6540);function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function r(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,i)}return n}function a(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}var s=i.createContext({}),c=function(t){var e=i.useContext(s),n=e;return t&&(n="function"==typeof t?t(e):a(a({},e),t)),n},d={inlineCode:"code",wrapper:function(t){var e=t.children;return i.createElement(i.Fragment,{},e)}},p=i.forwardRef((function(t,e){var n=t.components,o=t.mdxType,r=t.originalType,s=t.parentName,p=l(t,["components","mdxType","originalType","parentName"]),u=c(n),f=o,b=u["".concat(s,".").concat(f)]||u[f]||d[f]||r;return n?i.createElement(b,a(a({ref:e},p),{},{components:n})):i.createElement(b,a({ref:e},p))}));p.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/94fbe072.c6c340d9.js b/assets/js/94fbe072.c6c340d9.js new file mode 100644 index 0000000..0521fbf --- /dev/null +++ b/assets/js/94fbe072.c6c340d9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[4],{1484:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>s,contentTitle:()=>a,default:()=>p,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var i=n(4848),r=n(5680);const o={sidebar_position:2,id:"Windows Installation",title:"Windows installation Guide"},a="Windows Installation Guide for Stirling PDF",l={id:"Getting started/Installation/Local/Windows Installation",title:"Windows installation Guide",description:"Stirling PDF provides Windows compatibility through a downloadable .exe file, which can be obtained from here.",source:"@site/docs/Getting started/Installation/Local/Windows.md",sourceDirName:"Getting started/Installation/Local",slug:"/Getting started/Installation/Local/Windows Installation",permalink:"/Getting started/Installation/Local/Windows Installation",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/Getting started/Installation/Local/Windows.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2,id:"Windows Installation",title:"Windows installation Guide"},sidebar:"tutorialSidebar",previous:{title:"Unix installation Guide",permalink:"/Getting started/Installation/Local/Unix Installation"},next:{title:"API",permalink:"/API"}},s={},c=[];function d(t){const e={a:"a",h1:"h1",p:"p",...(0,r.RP)(),...t.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(e.h1,{id:"windows-installation-guide-for-stirling-pdf",children:"Windows Installation Guide for Stirling PDF"}),"\n",(0,i.jsxs)(e.p,{children:["Stirling PDF provides Windows compatibility through a downloadable .exe file, which can be obtained from ",(0,i.jsx)(e.a,{href:"https://github.com/Stirling-Tools/Stirling-PDF/releases/latest",children:"here"}),".\nThis is a streamlined version of the application, offering the same capabilities as the Stirling-PDF-Ultra-lite found in Docker, but in a compact 80MB executable!"]}),"\n",(0,i.jsx)(e.p,{children:"Simply download and launch the .exe file to access the Stirling-PDF Web-UI. It is important to note that this application requires JAVA 17 or 21. If the application identifies that this version of JAVA isn't installed on your system, it will prompt a link to download the appropriate version."}),"\n",(0,i.jsx)(e.p,{children:"Once launched, the application hosts a web server that is accessible and usable by anyone on your network."})]})}function p(t={}){const{wrapper:e}={...(0,r.RP)(),...t.components};return e?(0,i.jsx)(e,{...t,children:(0,i.jsx)(d,{...t})}):d(t)}},5680:(t,e,n)=>{n.d(e,{RP:()=>c});var i=n(6540);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function o(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,i)}return n}function a(t){for(var e=1;e=0||(r[n]=t[n]);return r}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(r[n]=t[n])}return r}var s=i.createContext({}),c=function(t){var e=i.useContext(s),n=e;return t&&(n="function"==typeof t?t(e):a(a({},e),t)),n},d={inlineCode:"code",wrapper:function(t){var e=t.children;return i.createElement(i.Fragment,{},e)}},p=i.forwardRef((function(t,e){var n=t.components,r=t.mdxType,o=t.originalType,s=t.parentName,p=l(t,["components","mdxType","originalType","parentName"]),u=c(n),f=r,b=u["".concat(s,".").concat(f)]||u[f]||d[f]||o;return n?i.createElement(b,a(a({ref:e},p),{},{components:n})):i.createElement(b,a({ref:e},p))}));p.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/9fb582a2.af7ffcb2.js b/assets/js/9fb582a2.af7ffcb2.js new file mode 100644 index 0000000..fd35877 --- /dev/null +++ b/assets/js/9fb582a2.af7ffcb2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[794],{6273:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var r=t(4848),i=t(5680);const o={sidebar_position:1},s="System and Security",l={id:"Advanced Configuration/System and Security",title:"System and Security",description:"Stirling PDF allows custommization of system and security settings",source:"@site/docs/Advanced Configuration/System and Security.md",sourceDirName:"Advanced Configuration",slug:"/Advanced Configuration/System and Security",permalink:"/Advanced Configuration/System and Security",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/Advanced Configuration/System and Security.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Single Sign-On (SSO) Configuration",permalink:"/Advanced Configuration/Single Sign-On Configuration"},next:{title:"UI Customisation",permalink:"/Advanced Configuration/UI Customisation"}},a={},c=[{value:"Settings file",id:"settings-file",level:2},{value:"Local",id:"local",level:2},{value:"Docker",id:"docker",level:2},{value:"Docker run",id:"docker-run",level:3},{value:"Docker Compose",id:"docker-compose",level:3}];function d(e){const n={code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.RP)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"system-and-security",children:"System and Security"}),"\n",(0,r.jsxs)(n.p,{children:["Stirling PDF allows custommization of system and security settings\nFor security please note this section is only enabled if you are using the security jar, for docker that means setting ",(0,r.jsx)(n.code,{children:"DOCKER_ENABLE_SECURITY"})," to ",(0,r.jsx)(n.code,{children:"true"})," via a environment variable"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"enableLogin"})," This enables or disables the login functionality with"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"csrfDisabled"})," The description to be displayed on the homepage under the navbar that first greets the user\nand"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"defaultLocale"})," The app name to be shown within to navbar for all pages"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"googlevisibility"})," The app name to be shown within to navbar for all pages"]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"settings-file",children:"Settings file"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"security:\n enableLogin: false # set to 'true' to enable login\n csrfDisabled: true\n\nsystem:\n defaultLocale: 'en-US' # Set the default language (e.g. 'de-DE', 'fr-FR', etc)\n googlevisibility: false # 'true' to allow Google visibility (via robots.txt), 'false' to disallow\n"})}),"\n",(0,r.jsx)(n.h2,{id:"local",children:"Local"}),"\n",(0,r.jsxs)(n.p,{children:["If running Java directly, you can also pass these as properties using ",(0,r.jsx)(n.code,{children:"-D"})," arguments such as:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:'java -jar Stirling-PDF.jar -DAPP_HOME_NAME="New Application Name"\n'})}),"\n",(0,r.jsx)(n.p,{children:"Alternatively you can set these via environment variables by running before starting the application"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:'export UI_APP_NAME="Stirling PDF"\nexport UI_HOME_DESCRIPTION="Your locally hosted one-stop-shop for all your PDF needs."\nexport UI_APP_NAVBAR_NAME="Stirling PDF"\n'})}),"\n",(0,r.jsx)(n.h2,{id:"docker",children:"Docker"}),"\n",(0,r.jsx)(n.h3,{id:"docker-run",children:"Docker run"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"-e UI_APP_NAME=Stirling PDF \\\n-e UI_HOME_DESCRIPTION=Your locally hosted one-stop-shop for all your PDF needs. \\\n-e UI_APP_NAVBAR_NAME=Stirling PDF \\\n"})}),"\n",(0,r.jsx)(n.h3,{id:"docker-compose",children:"Docker Compose"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"environment:\n UI_APP_NAME: Stirling PDF\n UI_HOME_DESCRIPTION: Your locally hosted one-stop-shop for all your PDF needs.\n UI_APP_NAVBAR_NAME: Stirling PDF\n"})})]})}function u(e={}){const{wrapper:n}={...(0,i.RP)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},5680:(e,n,t)=>{t.d(n,{RP:()=>c});var r=t(6540);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function s(e){for(var n=1;n=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var a=r.createContext({}),c=function(e){var n=r.useContext(a),t=n;return e&&(t="function"==typeof e?e(n):s(s({},n),e)),t},d={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},u=r.forwardRef((function(e,n){var t=e.components,i=e.mdxType,o=e.originalType,a=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=c(t),h=i,f=p["".concat(a,".").concat(h)]||p[h]||d[h]||o;return t?r.createElement(f,s(s({ref:n},u),{},{components:t})):r.createElement(f,s({ref:n},u))}));u.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/9fb582a2.ecb91973.js b/assets/js/9fb582a2.ecb91973.js deleted file mode 100644 index fe81fba..0000000 --- a/assets/js/9fb582a2.ecb91973.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[794],{6273:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var r=t(4848),i=t(5680);const o={sidebar_position:1},s="System and Security",l={id:"Advanced Configuration/System and Security",title:"System and Security",description:"Stirling PDF allows custommization of system and security settings",source:"@site/docs/Advanced Configuration/System and Security.md",sourceDirName:"Advanced Configuration",slug:"/Advanced Configuration/System and Security",permalink:"/docs/Advanced Configuration/System and Security",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/Advanced Configuration/System and Security.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Single Sign-On (SSO) Configuration",permalink:"/docs/Advanced Configuration/Single Sign-On Configuration"},next:{title:"UI Customisation",permalink:"/docs/Advanced Configuration/UI Customisation"}},a={},c=[{value:"Settings file",id:"settings-file",level:2},{value:"Local",id:"local",level:2},{value:"Docker",id:"docker",level:2},{value:"Docker run",id:"docker-run",level:3},{value:"Docker Compose",id:"docker-compose",level:3}];function d(e){const n={code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.RP)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"system-and-security",children:"System and Security"}),"\n",(0,r.jsxs)(n.p,{children:["Stirling PDF allows custommization of system and security settings\nFor security please note this section is only enabled if you are using the security jar, for docker that means setting ",(0,r.jsx)(n.code,{children:"DOCKER_ENABLE_SECURITY"})," to ",(0,r.jsx)(n.code,{children:"true"})," via a environment variable"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"enableLogin"})," This enables or disables the login functionality with"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"csrfDisabled"})," The description to be displayed on the homepage under the navbar that first greets the user\nand"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"defaultLocale"})," The app name to be shown within to navbar for all pages"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"googlevisibility"})," The app name to be shown within to navbar for all pages"]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"settings-file",children:"Settings file"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"security:\n enableLogin: false # set to 'true' to enable login\n csrfDisabled: true\n\nsystem:\n defaultLocale: 'en-US' # Set the default language (e.g. 'de-DE', 'fr-FR', etc)\n googlevisibility: false # 'true' to allow Google visibility (via robots.txt), 'false' to disallow\n"})}),"\n",(0,r.jsx)(n.h2,{id:"local",children:"Local"}),"\n",(0,r.jsxs)(n.p,{children:["If running Java directly, you can also pass these as properties using ",(0,r.jsx)(n.code,{children:"-D"})," arguments such as:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:'java -jar Stirling-PDF.jar -DAPP_HOME_NAME="New Application Name"\n'})}),"\n",(0,r.jsx)(n.p,{children:"Alternatively you can set these via environment variables by running before starting the application"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:'export UI_APP_NAME="Stirling PDF"\nexport UI_HOME_DESCRIPTION="Your locally hosted one-stop-shop for all your PDF needs."\nexport UI_APP_NAVBAR_NAME="Stirling PDF"\n'})}),"\n",(0,r.jsx)(n.h2,{id:"docker",children:"Docker"}),"\n",(0,r.jsx)(n.h3,{id:"docker-run",children:"Docker run"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"-e UI_APP_NAME=Stirling PDF \\\n-e UI_HOME_DESCRIPTION=Your locally hosted one-stop-shop for all your PDF needs. \\\n-e UI_APP_NAVBAR_NAME=Stirling PDF \\\n"})}),"\n",(0,r.jsx)(n.h3,{id:"docker-compose",children:"Docker Compose"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"environment:\n UI_APP_NAME: Stirling PDF\n UI_HOME_DESCRIPTION: Your locally hosted one-stop-shop for all your PDF needs.\n UI_APP_NAVBAR_NAME: Stirling PDF\n"})})]})}function u(e={}){const{wrapper:n}={...(0,i.RP)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},5680:(e,n,t)=>{t.d(n,{RP:()=>c});var r=t(6540);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function s(e){for(var n=1;n=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var a=r.createContext({}),c=function(e){var n=r.useContext(a),t=n;return e&&(t="function"==typeof e?e(n):s(s({},n),e)),t},d={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},u=r.forwardRef((function(e,n){var t=e.components,i=e.mdxType,o=e.originalType,a=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=c(t),h=i,f=p["".concat(a,".").concat(h)]||p[h]||d[h]||o;return t?r.createElement(f,s(s({ref:n},u),{},{components:t})):r.createElement(f,s({ref:n},u))}));u.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/ad895e75.920867b7.js b/assets/js/ad895e75.920867b7.js deleted file mode 100644 index 3bfbc16..0000000 --- a/assets/js/ad895e75.920867b7.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[315],{6614:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>d,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var i=n(4848),a=n(5680);const o={sidebar_position:8},r="Frequently Asked Questions",s={id:"FAQ",title:"Frequently Asked Questions",description:"Q1: Why are .htm files being downloaded when I use the application?",source:"@site/docs/FAQ.md",sourceDirName:".",slug:"/FAQ",permalink:"/docs/FAQ",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/FAQ.md",tags:[],version:"current",sidebarPosition:8,frontMatter:{sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"API",permalink:"/docs/API"},next:{title:"How to add Configurations",permalink:"/docs/Advanced Configuration/How to add configurations"}},l={},c=[{value:"Q1: Why are .htm files being downloaded when I use the application?",id:"q1-why-are-htm-files-being-downloaded-when-i-use-the-application",level:3},{value:"Q2: Can I customize the appearance and language of the Stirling PDF application?",id:"q2-can-i-customize-the-appearance-and-language-of-the-stirling-pdf-application",level:3},{value:"Q3: I want to add a new feature to Stirling PDF. How can I contribute?",id:"q3-i-want-to-add-a-new-feature-to-stirling-pdf-how-can-i-contribute",level:3},{value:"Q4: I have a cool idea can you add it?",id:"q4-i-have-a-cool-idea-can-you-add-it",level:3},{value:"Q5: I found a bug in Stirling PDF. Where can I report it?",id:"q5-i-found-a-bug-in-stirling-pdf-where-can-i-report-it",level:3}];function u(e){const t={h1:"h1",h3:"h3",p:"p",...(0,a.RP)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.h1,{id:"frequently-asked-questions",children:"Frequently Asked Questions"}),"\n",(0,i.jsx)(t.h3,{id:"q1-why-are-htm-files-being-downloaded-when-i-use-the-application",children:"Q1: Why are .htm files being downloaded when I use the application?"}),"\n",(0,i.jsx)(t.p,{children:"This is often caused by your NGINX configuration. NGINX's default file upload size is 1MB, and any file larger than this will cause an .htm file to be downloaded instead. To fix this issue, you should modify your NGINX configuration to increase the maximum file upload size."}),"\n",(0,i.jsx)(t.h3,{id:"q2-can-i-customize-the-appearance-and-language-of-the-stirling-pdf-application",children:"Q2: Can I customize the appearance and language of the Stirling PDF application?"}),"\n",(0,i.jsx)(t.p,{children:'Yes, Stirling PDF provides several environment variables to allow customization of the application, including the name, description, default language, and visibility to search engines. Please refer to the "Customization" section for more details.'}),"\n",(0,i.jsx)(t.h3,{id:"q3-i-want-to-add-a-new-feature-to-stirling-pdf-how-can-i-contribute",children:"Q3: I want to add a new feature to Stirling PDF. How can I contribute?"}),"\n",(0,i.jsx)(t.p,{children:"We welcome contributions from the community! Please open an issue on our GitHub page to discuss any large features before making any changes. Any small changes are fully welcome without discussion! After the feature has been discussed and approved, you can make the changes and submit a pull request."}),"\n",(0,i.jsx)(t.h3,{id:"q4-i-have-a-cool-idea-can-you-add-it",children:"Q4: I have a cool idea can you add it?"}),"\n",(0,i.jsx)(t.p,{children:"All feedback and suggestions are appreciated. It is best to submit these via a Github issue ticket with [Feature Request] in the title.\nYou can also reach out in discord but without a ticket to track it the request can often get lost!"}),"\n",(0,i.jsx)(t.h3,{id:"q5-i-found-a-bug-in-stirling-pdf-where-can-i-report-it",children:"Q5: I found a bug in Stirling PDF. Where can I report it?"}),"\n",(0,i.jsx)(t.p,{children:"Please report any bugs or issues you encounter through our GitHub Issues page. Be sure to include as much detail as possible so we can diagnose and resolve the issue quickly."})]})}function d(e={}){const{wrapper:t}={...(0,a.RP)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},5680:(e,t,n)=>{n.d(t,{RP:()=>c});var i=n(6540);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function r(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=i.createContext({}),c=function(e){var t=i.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},u={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},d=i.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),p=c(n),h=a,f=p["".concat(l,".").concat(h)]||p[h]||u[h]||o;return n?i.createElement(f,r(r({ref:t},d),{},{components:n})):i.createElement(f,r({ref:t},d))}));d.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/ad895e75.ca2c8c9d.js b/assets/js/ad895e75.ca2c8c9d.js new file mode 100644 index 0000000..338df3f --- /dev/null +++ b/assets/js/ad895e75.ca2c8c9d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[315],{6614:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>d,frontMatter:()=>r,metadata:()=>s,toc:()=>c});var i=n(4848),a=n(5680);const r={sidebar_position:8},o="Frequently Asked Questions",s={id:"FAQ",title:"Frequently Asked Questions",description:"Q1: Why are .htm files being downloaded when I use the application?",source:"@site/docs/FAQ.md",sourceDirName:".",slug:"/FAQ",permalink:"/FAQ",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/FAQ.md",tags:[],version:"current",sidebarPosition:8,frontMatter:{sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"API",permalink:"/API"},next:{title:"How to add Configurations",permalink:"/Advanced Configuration/How to add configurations"}},l={},c=[{value:"Q1: Why are .htm files being downloaded when I use the application?",id:"q1-why-are-htm-files-being-downloaded-when-i-use-the-application",level:3},{value:"Q2: Can I customize the appearance and language of the Stirling PDF application?",id:"q2-can-i-customize-the-appearance-and-language-of-the-stirling-pdf-application",level:3},{value:"Q3: I want to add a new feature to Stirling PDF. How can I contribute?",id:"q3-i-want-to-add-a-new-feature-to-stirling-pdf-how-can-i-contribute",level:3},{value:"Q4: I have a cool idea can you add it?",id:"q4-i-have-a-cool-idea-can-you-add-it",level:3},{value:"Q5: I found a bug in Stirling PDF. Where can I report it?",id:"q5-i-found-a-bug-in-stirling-pdf-where-can-i-report-it",level:3}];function u(e){const t={h1:"h1",h3:"h3",p:"p",...(0,a.RP)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.h1,{id:"frequently-asked-questions",children:"Frequently Asked Questions"}),"\n",(0,i.jsx)(t.h3,{id:"q1-why-are-htm-files-being-downloaded-when-i-use-the-application",children:"Q1: Why are .htm files being downloaded when I use the application?"}),"\n",(0,i.jsx)(t.p,{children:"This is often caused by your NGINX configuration. NGINX's default file upload size is 1MB, and any file larger than this will cause an .htm file to be downloaded instead. To fix this issue, you should modify your NGINX configuration to increase the maximum file upload size."}),"\n",(0,i.jsx)(t.h3,{id:"q2-can-i-customize-the-appearance-and-language-of-the-stirling-pdf-application",children:"Q2: Can I customize the appearance and language of the Stirling PDF application?"}),"\n",(0,i.jsx)(t.p,{children:'Yes, Stirling PDF provides several environment variables to allow customization of the application, including the name, description, default language, and visibility to search engines. Please refer to the "Customization" section for more details.'}),"\n",(0,i.jsx)(t.h3,{id:"q3-i-want-to-add-a-new-feature-to-stirling-pdf-how-can-i-contribute",children:"Q3: I want to add a new feature to Stirling PDF. How can I contribute?"}),"\n",(0,i.jsx)(t.p,{children:"We welcome contributions from the community! Please open an issue on our GitHub page to discuss any large features before making any changes. Any small changes are fully welcome without discussion! After the feature has been discussed and approved, you can make the changes and submit a pull request."}),"\n",(0,i.jsx)(t.h3,{id:"q4-i-have-a-cool-idea-can-you-add-it",children:"Q4: I have a cool idea can you add it?"}),"\n",(0,i.jsx)(t.p,{children:"All feedback and suggestions are appreciated. It is best to submit these via a Github issue ticket with [Feature Request] in the title.\nYou can also reach out in discord but without a ticket to track it the request can often get lost!"}),"\n",(0,i.jsx)(t.h3,{id:"q5-i-found-a-bug-in-stirling-pdf-where-can-i-report-it",children:"Q5: I found a bug in Stirling PDF. Where can I report it?"}),"\n",(0,i.jsx)(t.p,{children:"Please report any bugs or issues you encounter through our GitHub Issues page. Be sure to include as much detail as possible so we can diagnose and resolve the issue quickly."})]})}function d(e={}){const{wrapper:t}={...(0,a.RP)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},5680:(e,t,n)=>{n.d(t,{RP:()=>c});var i=n(6540);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=i.createContext({}),c=function(e){var t=i.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},d=i.forwardRef((function(e,t){var n=e.components,a=e.mdxType,r=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),p=c(n),h=a,f=p["".concat(l,".").concat(h)]||p[h]||u[h]||r;return n?i.createElement(f,o(o({ref:t},d),{},{components:n})):i.createElement(f,o({ref:t},d))}));d.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/b9fed88d.0edb26c7.js b/assets/js/b9fed88d.0edb26c7.js new file mode 100644 index 0000000..81c0dcd --- /dev/null +++ b/assets/js/b9fed88d.0edb26c7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[691],{2458:e=>{e.exports=JSON.parse('{"categoryGeneratedIndex":{"title":"Functionality","description":"All functionality and their categories within Stirling-PDF.","slug":"/category/functionality","permalink":"/category/functionality","sidebar":"tutorialSidebar","navigation":{"previous":{"title":"The Technologies Behind Stirling PDF","permalink":"/Overview/The Technologies"},"next":{"title":"Features - Page Operations","permalink":"/Functionality/Page operations/Overview"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/bdc0070e.9303014e.js b/assets/js/bdc0070e.9303014e.js new file mode 100644 index 0000000..85f6a00 --- /dev/null +++ b/assets/js/bdc0070e.9303014e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[386],{8198:e=>{e.exports=JSON.parse('{"tag":{"label":"Code","permalink":"/tags/code","allTagsPath":"/tags","count":1,"items":[{"id":"Contribute/Code","title":"Code","description":"Create a doc page with rich content.","permalink":"/Contribute/Code"}],"unlisted":false}}')}}]); \ No newline at end of file diff --git a/assets/js/c4f5d8e4.6cfd69e7.js b/assets/js/c4f5d8e4.6cfd69e7.js deleted file mode 100644 index 25cb477..0000000 --- a/assets/js/c4f5d8e4.6cfd69e7.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[634],{1753:(e,t,r)=>{r.d(t,{A:()=>a});var n,i=r(6540);function l(){return l=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:r,...a}=e;return i.createElement("svg",l({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"currentColor",className:"bi bi-lock",viewBox:"0 0 16 16","aria-labelledby":r},a),t?i.createElement("title",{id:r},t):null,n||(n=i.createElement("path",{d:"M8 1a2 2 0 0 1 2 2v4H6V3a2 2 0 0 1 2-2m3 6V3a3 3 0 0 0-6 0v4a2 2 0 0 0-2 2v5a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2M5 8h6a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V9a1 1 0 0 1 1-1"})))}},459:(e,t,r)=>{r.d(t,{A:()=>a});var n,i=r(6540);function l(){return l=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:r,...a}=e;return i.createElement("svg",l({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"currentColor",className:"bi bi-person",viewBox:"0 0 16 16","aria-labelledby":r},a),t?i.createElement("title",{id:r},t):null,n||(n=i.createElement("path",{d:"M8 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6m2-3a2 2 0 1 1-4 0 2 2 0 0 1 4 0m4 8c0 1-1 1-1 1H3s-1 0-1-1 1-4 6-4 6 3 6 4m-1-.004c-.001-.246-.154-.986-.832-1.664C11.516 10.68 10.289 10 8 10s-3.516.68-4.168 1.332c-.678.678-.83 1.418-.832 1.664z"})))}},2037:(e,t,r)=>{r.d(t,{A:()=>a});var n,i=r(6540);function l(){return l=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:r,...a}=e;return i.createElement("svg",l({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"currentColor",className:"bi bi-tools",viewBox:"0 0 16 16","aria-labelledby":r},a),t?i.createElement("title",{id:r},t):null,n||(n=i.createElement("path",{d:"M1 0 0 1l2.2 3.081a1 1 0 0 0 .815.419h.07a1 1 0 0 1 .708.293l2.675 2.675-2.617 2.654A3.003 3.003 0 0 0 0 13a3 3 0 1 0 5.878-.851l2.654-2.617.968.968-.305.914a1 1 0 0 0 .242 1.023l3.27 3.27a.997.997 0 0 0 1.414 0l1.586-1.586a.997.997 0 0 0 0-1.414l-3.27-3.27a1 1 0 0 0-1.023-.242L10.5 9.5l-.96-.96 2.68-2.643A3.005 3.005 0 0 0 16 3q0-.405-.102-.777l-2.14 2.141L12 4l-.364-1.757L13.777.102a3 3 0 0 0-3.675 3.68L7.462 6.46 4.793 3.793a1 1 0 0 1-.293-.707v-.071a1 1 0 0 0-.419-.814zm9.646 10.646a.5.5 0 0 1 .708 0l2.914 2.915a.5.5 0 0 1-.707.707l-2.915-2.914a.5.5 0 0 1 0-.708M3 11l.471.242.529.026.287.445.445.287.026.529L5 13l-.242.471-.026.529-.445.287-.287.445-.529.026L3 15l-.471-.242L2 14.732l-.287-.445L1.268 14l-.026-.529L1 13l.242-.471.026-.529.445-.287.287-.445.529-.026z"})))}},2083:(e,t,r)=>{r.r(t),r.d(t,{default:()=>m});r(6540);function n(e){var t,r,i="";if("string"==typeof e||"number"==typeof e)i+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t(0,c.jsx)(u,{...e},t)))})})})}const g={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"};function f(){const{siteConfig:e}=(0,a.A)();return(0,c.jsx)("header",{className:i("hero hero--primary",g.heroBanner),children:(0,c.jsxs)("div",{className:"container",children:[(0,c.jsx)("h1",{className:"hero__title",children:e.title}),(0,c.jsx)("p",{className:"hero__subtitle",children:e.tagline}),(0,c.jsx)("div",{className:g.buttons,children:(0,c.jsx)(l.A,{className:"button button--secondary button--lg",to:"/docs/Overview/What%20is%20Stirling-PDF",children:"Get Started!"})})]})})}function m(){const{siteConfig:e}=(0,a.A)();return(0,c.jsxs)(s.A,{title:`Hello from ${e.title}`,description:"Description will go into a meta tag in ",children:[(0,c.jsx)(f,{}),(0,c.jsx)("main",{children:(0,c.jsx)(h,{})})]})}}}]); \ No newline at end of file diff --git a/assets/js/c8229a80.1803b3fe.js b/assets/js/c8229a80.1803b3fe.js deleted file mode 100644 index 67244e3..0000000 --- a/assets/js/c8229a80.1803b3fe.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[512],{882:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>d,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var r=n(4848),i=n(5680);const o={sidebar_position:7,id:"API",title:"API",description:"Overview of API offering in S-PDF",tags:["API"]},a="Stirling PDF API",s={id:"API",title:"API",description:"Overview of API offering in S-PDF",source:"@site/docs/API.md",sourceDirName:".",slug:"/API",permalink:"/docs/API",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/API.md",tags:[{label:"API",permalink:"/docs/tags/api"}],version:"current",sidebarPosition:7,frontMatter:{sidebar_position:7,id:"API",title:"API",description:"Overview of API offering in S-PDF",tags:["API"]},sidebar:"tutorialSidebar",previous:{title:"Windows installation Guide",permalink:"/docs/Getting started/Installation/Local/Windows Installation"},next:{title:"Frequently Asked Questions",permalink:"/docs/FAQ"}},l={},c=[{value:"Unix",id:"unix",level:2},{value:"Windows CMD (Not powershell)",id:"windows-cmd-not-powershell",level:2}];function p(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",p:"p",pre:"pre",...(0,i.RP)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.h1,{id:"stirling-pdf-api",children:"Stirling PDF API"}),"\n",(0,r.jsxs)(t.p,{children:["Stirling PDF exposes a simple API for easy integration with external scripts. For an exhaustive list of all available API endpoints and their functions, please refer to the ",(0,r.jsx)(t.a,{href:"https://app.swaggerhub.com/apis-docs/Frooodle/Stirling-PDF/",children:"Swagger Documentation"}),"."]}),"\n",(0,r.jsx)(t.p,{children:'Stirling-PDF\'s feature set is not entirely confined to the backend, hence not all functionalities are accessible via the API. Certain operations, such as the "view-pdf" or "visually sign", are executed exclusively on the front-end, and as such, they are only available through the Web-UI. If you encounter a situation where some API endpoints appear to be absent, it is likely attributable to these front-end exclusive features.'}),"\n",(0,r.jsxs)(t.p,{children:["Stirling-PDF also has statistic and health endpoints to integrate with monitoring/dashboard applications\n",(0,r.jsx)(t.a,{href:"https://app.swaggerhub.com/apis-docs/Frooodle/Stirling-PDF/0.24.6#/Info",children:"Stats API docs"})]}),"\n",(0,r.jsx)(t.h1,{id:"example-curl-commands",children:"Example CURL Commands"}),"\n",(0,r.jsx)(t.h2,{id:"unix",children:"Unix"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{children:'curl -X POST "http://localhost:8080/add-watermark" \\\n -H "Content-Type: multipart/form-data" \\\n -F "fileInput=@/Users/username/Downloads/sample-1_cropped.pdf" \\\n -F "watermarkType=text" \\\n -F "watermarkText=YOUR_WATERMARK_TEXT" \\\n -F "alphabet=roman" \\\n -F "fontSize=30" \\\n -F "rotation=0" \\\n -F "opacity=0.5" \\\n -F "widthSpacer=50" \\\n -F "heightSpacer=50" \\\n > "/Users/username/Downloads/output.pdf"\n'})}),"\n",(0,r.jsx)(t.h2,{id:"windows-cmd-not-powershell",children:"Windows CMD (Not powershell)"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{children:'curl -X POST "http://localhost:8080/add-watermark" ^\n -H "Content-Type: multipart/form-data" ^\n -F "fileInput=@C:\\Users\\systo\\Downloads\\sample-1_cropped.pdf" ^\n -F "watermarkType=text" ^\n -F "watermarkText=YOUR_WATERMARK_TEXT" ^\n -F "alphabet=roman" ^\n -F "fontSize=30" ^\n -F "rotation=0" ^\n -F "opacity=0.5" ^\n -F "widthSpacer=50" ^\n -F "heightSpacer=50" ^\n > "C:\\Users\\systo\\Downloads\\output.pdf"\n'})})]})}function d(e={}){const{wrapper:t}={...(0,i.RP)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},5680:(e,t,n)=>{n.d(t,{RP:()=>c});var r=n(6540);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var l=r.createContext({}),c=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),u=c(n),h=i,f=u["".concat(l,".").concat(h)]||u[h]||p[h]||o;return n?r.createElement(f,a(a({ref:t},d),{},{components:n})):r.createElement(f,a({ref:t},d))}));d.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/c8229a80.66db55a8.js b/assets/js/c8229a80.66db55a8.js new file mode 100644 index 0000000..0ff77fb --- /dev/null +++ b/assets/js/c8229a80.66db55a8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[512],{882:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>d,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var r=n(4848),i=n(5680);const o={sidebar_position:7,id:"API",title:"API",description:"Overview of API offering in S-PDF",tags:["API"]},a="Stirling PDF API",s={id:"API",title:"API",description:"Overview of API offering in S-PDF",source:"@site/docs/API.md",sourceDirName:".",slug:"/API",permalink:"/API",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/API.md",tags:[{label:"API",permalink:"/tags/api"}],version:"current",sidebarPosition:7,frontMatter:{sidebar_position:7,id:"API",title:"API",description:"Overview of API offering in S-PDF",tags:["API"]},sidebar:"tutorialSidebar",previous:{title:"Windows installation Guide",permalink:"/Getting started/Installation/Local/Windows Installation"},next:{title:"Frequently Asked Questions",permalink:"/FAQ"}},l={},c=[{value:"Unix",id:"unix",level:2},{value:"Windows CMD (Not powershell)",id:"windows-cmd-not-powershell",level:2}];function p(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",p:"p",pre:"pre",...(0,i.RP)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.h1,{id:"stirling-pdf-api",children:"Stirling PDF API"}),"\n",(0,r.jsxs)(t.p,{children:["Stirling PDF exposes a simple API for easy integration with external scripts. For an exhaustive list of all available API endpoints and their functions, please refer to the ",(0,r.jsx)(t.a,{href:"https://app.swaggerhub.com/apis-docs/Frooodle/Stirling-PDF/",children:"Swagger Documentation"}),"."]}),"\n",(0,r.jsx)(t.p,{children:'Stirling-PDF\'s feature set is not entirely confined to the backend, hence not all functionalities are accessible via the API. Certain operations, such as the "view-pdf" or "visually sign", are executed exclusively on the front-end, and as such, they are only available through the Web-UI. If you encounter a situation where some API endpoints appear to be absent, it is likely attributable to these front-end exclusive features.'}),"\n",(0,r.jsxs)(t.p,{children:["Stirling-PDF also has statistic and health endpoints to integrate with monitoring/dashboard applications\n",(0,r.jsx)(t.a,{href:"https://app.swaggerhub.com/apis-docs/Frooodle/Stirling-PDF/0.24.6#/Info",children:"Stats API docs"})]}),"\n",(0,r.jsx)(t.h1,{id:"example-curl-commands",children:"Example CURL Commands"}),"\n",(0,r.jsx)(t.h2,{id:"unix",children:"Unix"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{children:'curl -X POST "http://localhost:8080/add-watermark" \\\n -H "Content-Type: multipart/form-data" \\\n -F "fileInput=@/Users/username/Downloads/sample-1_cropped.pdf" \\\n -F "watermarkType=text" \\\n -F "watermarkText=YOUR_WATERMARK_TEXT" \\\n -F "alphabet=roman" \\\n -F "fontSize=30" \\\n -F "rotation=0" \\\n -F "opacity=0.5" \\\n -F "widthSpacer=50" \\\n -F "heightSpacer=50" \\\n > "/Users/username/Downloads/output.pdf"\n'})}),"\n",(0,r.jsx)(t.h2,{id:"windows-cmd-not-powershell",children:"Windows CMD (Not powershell)"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{children:'curl -X POST "http://localhost:8080/add-watermark" ^\n -H "Content-Type: multipart/form-data" ^\n -F "fileInput=@C:\\Users\\systo\\Downloads\\sample-1_cropped.pdf" ^\n -F "watermarkType=text" ^\n -F "watermarkText=YOUR_WATERMARK_TEXT" ^\n -F "alphabet=roman" ^\n -F "fontSize=30" ^\n -F "rotation=0" ^\n -F "opacity=0.5" ^\n -F "widthSpacer=50" ^\n -F "heightSpacer=50" ^\n > "C:\\Users\\systo\\Downloads\\output.pdf"\n'})})]})}function d(e={}){const{wrapper:t}={...(0,i.RP)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},5680:(e,t,n)=>{n.d(t,{RP:()=>c});var r=n(6540);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var l=r.createContext({}),c=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),u=c(n),h=i,f=u["".concat(l,".").concat(h)]||u[h]||p[h]||o;return n?r.createElement(f,a(a({ref:t},d),{},{components:n})):r.createElement(f,a({ref:t},d))}));d.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/c94c5787.2b3f8aa0.js b/assets/js/c94c5787.2b3f8aa0.js deleted file mode 100644 index 01a4767..0000000 --- a/assets/js/c94c5787.2b3f8aa0.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[75],{6290:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>a,contentTitle:()=>o,default:()=>u,frontMatter:()=>s,metadata:()=>c,toc:()=>l});var n=r(4848),i=r(5680);const s={sidebar_position:3},o="Features - Security",c={id:"Functionality/Security/Overview",title:"Features - Security",description:"- add-password: This feature allows users to secure their PDFs by adding a password.",source:"@site/docs/Functionality/Security/Overview.md",sourceDirName:"Functionality/Security",slug:"/Functionality/Security/Overview",permalink:"/docs/Functionality/Security/Overview",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/Functionality/Security/Overview.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Features - Convert",permalink:"/docs/Functionality/Convert/Overview"},next:{title:"Features - Miscellaneous",permalink:"/docs/Functionality/Miscellaneous/Overview"}},a={},l=[];function d(e){const t={code:"code",h1:"h1",li:"li",p:"p",ul:"ul",...(0,i.RP)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"features---security",children:"Features - Security"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.code,{children:"add-password"}),": This feature allows users to secure their PDFs by adding a password."]}),"\n"]}),"\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.code,{children:"remove-password"}),": With this feature, users can remove the password from a secured PDF."]}),"\n"]}),"\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.code,{children:"change-permissions"}),": This functionality allows users to change the permissions of a PDF, controlling how others can view and edit it."]}),"\n"]}),"\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.code,{children:"add-watermark"}),": This feature enables users to add custom watermarks to their PDFs."]}),"\n"]}),"\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.code,{children:"cert-sign"}),": This feature enables users to digitally sign their PDFs using a certificate. For (hand-)written signatures see Features - Additional Utilities --\x3e ",(0,n.jsx)(t.code,{children:"sign"})]}),"\n"]}),"\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.code,{children:"sanitize-pdf"}),": This allows the user to remove various things within the PDF which may cause security concern such as javascript, files, links, fonts and metadata."]}),"\n"]}),"\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.code,{children:"auto-redact"}),": This features lets the user input text (or regex) to be redacted/blacked out from the pdf document."]}),"\n"]}),"\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.code,{children:"get-info-on-pdf"}),": This grabs all info on a PDF such as version, font types, width height and any and all information it can find and puts it within a formatted JSON doc (or visual tables within UI)"]}),"\n"]}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,i.RP)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},5680:(e,t,r)=>{r.d(t,{RP:()=>l});var n=r(6540);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var a=n.createContext({}),l=function(e){var t=n.useContext(a),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var r=e.components,i=e.mdxType,s=e.originalType,a=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),h=l(r),p=i,f=h["".concat(a,".").concat(p)]||h[p]||d[p]||s;return r?n.createElement(f,o(o({ref:t},u),{},{components:r})):n.createElement(f,o({ref:t},u))}));u.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/c94c5787.e5c1d76e.js b/assets/js/c94c5787.e5c1d76e.js new file mode 100644 index 0000000..39c23b9 --- /dev/null +++ b/assets/js/c94c5787.e5c1d76e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[75],{6290:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>u,frontMatter:()=>s,metadata:()=>a,toc:()=>l});var n=r(4848),i=r(5680);const s={sidebar_position:3},o="Features - Security",a={id:"Functionality/Security/Overview",title:"Features - Security",description:"- add-password: This feature allows users to secure their PDFs by adding a password.",source:"@site/docs/Functionality/Security/Overview.md",sourceDirName:"Functionality/Security",slug:"/Functionality/Security/Overview",permalink:"/Functionality/Security/Overview",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/Functionality/Security/Overview.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Features - Convert",permalink:"/Functionality/Convert/Overview"},next:{title:"Features - Miscellaneous",permalink:"/Functionality/Miscellaneous/Overview"}},c={},l=[];function d(e){const t={code:"code",h1:"h1",li:"li",p:"p",ul:"ul",...(0,i.RP)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"features---security",children:"Features - Security"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.code,{children:"add-password"}),": This feature allows users to secure their PDFs by adding a password."]}),"\n"]}),"\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.code,{children:"remove-password"}),": With this feature, users can remove the password from a secured PDF."]}),"\n"]}),"\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.code,{children:"change-permissions"}),": This functionality allows users to change the permissions of a PDF, controlling how others can view and edit it."]}),"\n"]}),"\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.code,{children:"add-watermark"}),": This feature enables users to add custom watermarks to their PDFs."]}),"\n"]}),"\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.code,{children:"cert-sign"}),": This feature enables users to digitally sign their PDFs using a certificate. For (hand-)written signatures see Features - Additional Utilities --\x3e ",(0,n.jsx)(t.code,{children:"sign"})]}),"\n"]}),"\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.code,{children:"sanitize-pdf"}),": This allows the user to remove various things within the PDF which may cause security concern such as javascript, files, links, fonts and metadata."]}),"\n"]}),"\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.code,{children:"auto-redact"}),": This features lets the user input text (or regex) to be redacted/blacked out from the pdf document."]}),"\n"]}),"\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.code,{children:"get-info-on-pdf"}),": This grabs all info on a PDF such as version, font types, width height and any and all information it can find and puts it within a formatted JSON doc (or visual tables within UI)"]}),"\n"]}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,i.RP)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},5680:(e,t,r)=>{r.d(t,{RP:()=>l});var n=r(6540);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var c=n.createContext({}),l=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var r=e.components,i=e.mdxType,s=e.originalType,c=e.parentName,u=a(e,["components","mdxType","originalType","parentName"]),h=l(r),p=i,f=h["".concat(c,".").concat(p)]||h[p]||d[p]||s;return r?n.createElement(f,o(o({ref:t},u),{},{components:r})):n.createElement(f,o({ref:t},u))}));u.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/d6ba1c29.ea5dc692.js b/assets/js/d6ba1c29.ea5dc692.js new file mode 100644 index 0000000..1066dd5 --- /dev/null +++ b/assets/js/d6ba1c29.ea5dc692.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[813],{2999:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>i,toc:()=>d});var r=t(4848),a=t(5680);const o={sidebar_position:1,id:"OCR",title:"OCR (Optical Character Recognition)"},s="OCR Language Packs and Setup",i={id:"Advanced Configuration/OCR",title:"OCR (Optical Character Recognition)",description:"This document provides instructions on how to add additional language packs for the OCR tab in Stirling-PDF, both inside and outside of Docker.",source:"@site/docs/Advanced Configuration/OCR.md",sourceDirName:"Advanced Configuration",slug:"/Advanced Configuration/OCR",permalink:"/Advanced Configuration/OCR",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/Advanced Configuration/OCR.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1,id:"OCR",title:"OCR (Optical Character Recognition)"},sidebar:"tutorialSidebar",previous:{title:"How to add Configurations",permalink:"/Advanced Configuration/How to add configurations"},next:{title:"Single Sign-On (SSO) Configuration",permalink:"/Advanced Configuration/Single Sign-On Configuration"}},c={},d=[{value:"My OCR used to work and now doesn't!",id:"my-ocr-used-to-work-and-now-doesnt",level:2},{value:"How does the OCR Work",id:"how-does-the-ocr-work",level:2},{value:"Language Packs",id:"language-packs",level:2},{value:"Installing Language Packs",id:"installing-language-packs",level:3},{value:"Docker",id:"docker",level:4},{value:"Docker Compose",id:"docker-compose",level:4},{value:"Docker run",id:"docker-run",level:4},{value:"Non-Docker",id:"non-docker",level:4}];function l(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,a.RP)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"ocr-language-packs-and-setup",children:"OCR Language Packs and Setup"}),"\n",(0,r.jsx)(n.p,{children:"This document provides instructions on how to add additional language packs for the OCR tab in Stirling-PDF, both inside and outside of Docker."}),"\n",(0,r.jsx)(n.h2,{id:"my-ocr-used-to-work-and-now-doesnt",children:"My OCR used to work and now doesn't!"}),"\n",(0,r.jsxs)(n.p,{children:["The paths have changed for the tessadata locations on new docker images, please use ",(0,r.jsx)(n.code,{children:"/usr/share/tessdata"})," (Others should still work for backwards compatibility but might not)"]}),"\n",(0,r.jsx)(n.h2,{id:"how-does-the-ocr-work",children:"How does the OCR Work"}),"\n",(0,r.jsxs)(n.p,{children:["Stirling-PDF uses ",(0,r.jsx)(n.a,{href:"https://github.com/ocrmypdf/OCRmyPDF",children:"OCRmyPDF"})," which in turn uses tesseract for its text recognition.\nAll credit goes to them for this awesome work!"]}),"\n",(0,r.jsx)(n.h2,{id:"language-packs",children:"Language Packs"}),"\n",(0,r.jsx)(n.p,{children:"Tesseract OCR supports a variety of languages. You can find additional language packs in the Tesseract GitHub repositories:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"https://github.com/tesseract-ocr/tessdata_fast",children:"tessdata_fast"}),": These language packs are smaller and faster to load, but may provide lower recognition accuracy."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"https://github.com/tesseract-ocr/tessdata",children:"tessdata"}),": These language packs are larger and provide better recognition accuracy, but may take longer to load."]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"Depending on your requirements, you can choose the appropriate language pack for your use case. By default Stirling-PDF uses the tessdata_fast eng but this can be replaced."}),"\n",(0,r.jsx)(n.h3,{id:"installing-language-packs",children:"Installing Language Packs"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["Download the desired language pack(s) by selecting the ",(0,r.jsx)(n.code,{children:".traineddata"})," file(s) for the language(s) you need."]}),"\n",(0,r.jsxs)(n.li,{children:["Place the ",(0,r.jsx)(n.code,{children:".traineddata"})," files in the Tesseract tessdata directory: ",(0,r.jsx)(n.code,{children:"/usr/share/tessdata"})]}),"\n"]}),"\n",(0,r.jsx)(n.h1,{id:"do-not-remove-existing-engtraineddata-its-required",children:"DO NOT REMOVE EXISTING ENG.TRAINEDDATA, IT'S REQUIRED."}),"\n",(0,r.jsx)(n.h4,{id:"docker",children:"Docker"}),"\n",(0,r.jsx)(n.p,{children:"If you are using Docker, you need to expose the Tesseract tessdata directory as a volume in order to use the additional language packs."}),"\n",(0,r.jsx)(n.h4,{id:"docker-compose",children:"Docker Compose"}),"\n",(0,r.jsxs)(n.p,{children:["Modify your ",(0,r.jsx)(n.code,{children:"docker-compose.yml"})," file to include the following volume configuration:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"services:\n your_service_name:\n image: your_docker_image_name\n volumes:\n - /location/of/trainingData:/usr/share/tessdata\n"})}),"\n",(0,r.jsx)(n.h4,{id:"docker-run",children:"Docker run"}),"\n",(0,r.jsx)(n.p,{children:"Add the following to your existing docker run command"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"-v /location/of/trainingData:/usr/share/tessdata\n"})}),"\n",(0,r.jsx)(n.h4,{id:"non-docker",children:"Non-Docker"}),"\n",(0,r.jsxs)(n.p,{children:["If you are not using Docker, you need to install the OCR components, including the ocrmypdf app.\nYou can see ",(0,r.jsx)(n.a,{href:"https://ocrmypdf.readthedocs.io/en/latest/installation.html",children:"OCRmyPDF install guide"})]}),"\n",(0,r.jsx)(n.p,{children:"Debian based systems, install languages with this command:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"sudo apt update &&\\\n# All languages\n# sudo apt install -y 'tesseract-ocr-*'\n\n# Find languages:\napt search tesseract-ocr-\n\n# View installed languages:\ndpkg-query -W tesseract-ocr- | sed 's/tesseract-ocr-//g'\n"})}),"\n",(0,r.jsx)(n.p,{children:"Fedora:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"# All languages\n# sudo dnf install -y tesseract-langpack-*\n\n# Find languages:\ndnf search -C tesseract-langpack-\n\n# View installed languages:\nrpm -qa | grep tesseract-langpack | sed 's/tesseract-langpack-//g'\n"})})]})}function u(e={}){const{wrapper:n}={...(0,a.RP)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},5680:(e,n,t)=>{t.d(n,{RP:()=>d});var r=t(6540);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function s(e){for(var n=1;n=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var c=r.createContext({}),d=function(e){var n=r.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):s(s({},n),e)),t},l={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},u=r.forwardRef((function(e,n){var t=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),h=d(t),g=a,p=h["".concat(c,".").concat(g)]||h[g]||l[g]||o;return t?r.createElement(p,s(s({ref:n},u),{},{components:t})):r.createElement(p,s({ref:n},u))}));u.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/d6ba1c29.ffb15315.js b/assets/js/d6ba1c29.ffb15315.js deleted file mode 100644 index daa02ea..0000000 --- a/assets/js/d6ba1c29.ffb15315.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[813],{2999:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>i,toc:()=>d});var r=t(4848),a=t(5680);const o={sidebar_position:1,id:"OCR",title:"OCR (Optical Character Recognition)"},s="OCR Language Packs and Setup",i={id:"Advanced Configuration/OCR",title:"OCR (Optical Character Recognition)",description:"This document provides instructions on how to add additional language packs for the OCR tab in Stirling-PDF, both inside and outside of Docker.",source:"@site/docs/Advanced Configuration/OCR.md",sourceDirName:"Advanced Configuration",slug:"/Advanced Configuration/OCR",permalink:"/docs/Advanced Configuration/OCR",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/Advanced Configuration/OCR.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1,id:"OCR",title:"OCR (Optical Character Recognition)"},sidebar:"tutorialSidebar",previous:{title:"How to add Configurations",permalink:"/docs/Advanced Configuration/How to add configurations"},next:{title:"Single Sign-On (SSO) Configuration",permalink:"/docs/Advanced Configuration/Single Sign-On Configuration"}},c={},d=[{value:"My OCR used to work and now doesn't!",id:"my-ocr-used-to-work-and-now-doesnt",level:2},{value:"How does the OCR Work",id:"how-does-the-ocr-work",level:2},{value:"Language Packs",id:"language-packs",level:2},{value:"Installing Language Packs",id:"installing-language-packs",level:3},{value:"Docker",id:"docker",level:4},{value:"Docker Compose",id:"docker-compose",level:4},{value:"Docker run",id:"docker-run",level:4},{value:"Non-Docker",id:"non-docker",level:4}];function l(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,a.RP)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"ocr-language-packs-and-setup",children:"OCR Language Packs and Setup"}),"\n",(0,r.jsx)(n.p,{children:"This document provides instructions on how to add additional language packs for the OCR tab in Stirling-PDF, both inside and outside of Docker."}),"\n",(0,r.jsx)(n.h2,{id:"my-ocr-used-to-work-and-now-doesnt",children:"My OCR used to work and now doesn't!"}),"\n",(0,r.jsxs)(n.p,{children:["The paths have changed for the tessadata locations on new docker images, please use ",(0,r.jsx)(n.code,{children:"/usr/share/tessdata"})," (Others should still work for backwards compatibility but might not)"]}),"\n",(0,r.jsx)(n.h2,{id:"how-does-the-ocr-work",children:"How does the OCR Work"}),"\n",(0,r.jsxs)(n.p,{children:["Stirling-PDF uses ",(0,r.jsx)(n.a,{href:"https://github.com/ocrmypdf/OCRmyPDF",children:"OCRmyPDF"})," which in turn uses tesseract for its text recognition.\nAll credit goes to them for this awesome work!"]}),"\n",(0,r.jsx)(n.h2,{id:"language-packs",children:"Language Packs"}),"\n",(0,r.jsx)(n.p,{children:"Tesseract OCR supports a variety of languages. You can find additional language packs in the Tesseract GitHub repositories:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"https://github.com/tesseract-ocr/tessdata_fast",children:"tessdata_fast"}),": These language packs are smaller and faster to load, but may provide lower recognition accuracy."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"https://github.com/tesseract-ocr/tessdata",children:"tessdata"}),": These language packs are larger and provide better recognition accuracy, but may take longer to load."]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"Depending on your requirements, you can choose the appropriate language pack for your use case. By default Stirling-PDF uses the tessdata_fast eng but this can be replaced."}),"\n",(0,r.jsx)(n.h3,{id:"installing-language-packs",children:"Installing Language Packs"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["Download the desired language pack(s) by selecting the ",(0,r.jsx)(n.code,{children:".traineddata"})," file(s) for the language(s) you need."]}),"\n",(0,r.jsxs)(n.li,{children:["Place the ",(0,r.jsx)(n.code,{children:".traineddata"})," files in the Tesseract tessdata directory: ",(0,r.jsx)(n.code,{children:"/usr/share/tessdata"})]}),"\n"]}),"\n",(0,r.jsx)(n.h1,{id:"do-not-remove-existing-engtraineddata-its-required",children:"DO NOT REMOVE EXISTING ENG.TRAINEDDATA, IT'S REQUIRED."}),"\n",(0,r.jsx)(n.h4,{id:"docker",children:"Docker"}),"\n",(0,r.jsx)(n.p,{children:"If you are using Docker, you need to expose the Tesseract tessdata directory as a volume in order to use the additional language packs."}),"\n",(0,r.jsx)(n.h4,{id:"docker-compose",children:"Docker Compose"}),"\n",(0,r.jsxs)(n.p,{children:["Modify your ",(0,r.jsx)(n.code,{children:"docker-compose.yml"})," file to include the following volume configuration:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"services:\n your_service_name:\n image: your_docker_image_name\n volumes:\n - /location/of/trainingData:/usr/share/tessdata\n"})}),"\n",(0,r.jsx)(n.h4,{id:"docker-run",children:"Docker run"}),"\n",(0,r.jsx)(n.p,{children:"Add the following to your existing docker run command"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"-v /location/of/trainingData:/usr/share/tessdata\n"})}),"\n",(0,r.jsx)(n.h4,{id:"non-docker",children:"Non-Docker"}),"\n",(0,r.jsxs)(n.p,{children:["If you are not using Docker, you need to install the OCR components, including the ocrmypdf app.\nYou can see ",(0,r.jsx)(n.a,{href:"https://ocrmypdf.readthedocs.io/en/latest/installation.html",children:"OCRmyPDF install guide"})]}),"\n",(0,r.jsx)(n.p,{children:"Debian based systems, install languages with this command:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"sudo apt update &&\\\n# All languages\n# sudo apt install -y 'tesseract-ocr-*'\n\n# Find languages:\napt search tesseract-ocr-\n\n# View installed languages:\ndpkg-query -W tesseract-ocr- | sed 's/tesseract-ocr-//g'\n"})}),"\n",(0,r.jsx)(n.p,{children:"Fedora:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"# All languages\n# sudo dnf install -y tesseract-langpack-*\n\n# Find languages:\ndnf search -C tesseract-langpack-\n\n# View installed languages:\nrpm -qa | grep tesseract-langpack | sed 's/tesseract-langpack-//g'\n"})})]})}function u(e={}){const{wrapper:n}={...(0,a.RP)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},5680:(e,n,t)=>{t.d(n,{RP:()=>d});var r=t(6540);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function s(e){for(var n=1;n=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var c=r.createContext({}),d=function(e){var n=r.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):s(s({},n),e)),t},l={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},u=r.forwardRef((function(e,n){var t=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),h=d(t),g=a,p=h["".concat(c,".").concat(g)]||h[g]||l[g]||o;return t?r.createElement(p,s(s({ref:n},u),{},{components:t})):r.createElement(p,s({ref:n},u))}));u.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/d734b0a9.8e68f166.js b/assets/js/d734b0a9.8e68f166.js new file mode 100644 index 0000000..0ba46bd --- /dev/null +++ b/assets/js/d734b0a9.8e68f166.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[841],{8832:e=>{e.exports=JSON.parse('{"tag":{"label":"API","permalink":"/tags/api","allTagsPath":"/tags","count":1,"items":[{"id":"API","title":"API","description":"Overview of API offering in S-PDF","permalink":"/API"}],"unlisted":false}}')}}]); \ No newline at end of file diff --git a/assets/js/e1540868.d5a45ba4.js b/assets/js/e1540868.d5a45ba4.js deleted file mode 100644 index 5ad2c97..0000000 --- a/assets/js/e1540868.d5a45ba4.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[700],{1175:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>d,frontMatter:()=>o,metadata:()=>a,toc:()=>c});var r=i(4848),n=i(5680);const o={sidebar_position:1},s="Introduction to Stirling PDF",a={id:"Overview/What is Stirling-PDF",title:"What is Stirling-PDF",description:"Stirling PDF is a robust, locally hosted, web-based PDF manipulation platform powered by Docker. Our application offers an extensive range of functionalities, from simple operations like merging and splitting PDFs, to advanced features such as compressing, OCR and Conversions.",source:"@site/docs/Overview/What is Stirling-PDF.md",sourceDirName:"Overview",slug:"/Overview/What is Stirling-PDF",permalink:"/docs/Overview/What is Stirling-PDF",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/Overview/What is Stirling-PDF.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"tutorialSidebar",next:{title:"The Technologies Behind Stirling PDF",permalink:"/docs/Overview/The Technologies"}},l={},c=[{value:"Privacy comes first",id:"privacy-comes-first",level:2},{value:"Always improving",id:"always-improving",level:2},{value:"Options",id:"options",level:2}];function p(e){const t={a:"a",h1:"h1",h2:"h2",img:"img",p:"p",...(0,n.RP)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{src:"https://raw.githubusercontent.com/Stirling-Tools/Stirling-PDF/main/docs/stirling.png",alt:""})}),"\n",(0,r.jsx)(t.h1,{id:"introduction-to-stirling-pdf",children:"Introduction to Stirling PDF"}),"\n",(0,r.jsx)(t.p,{children:"Stirling PDF is a robust, locally hosted, web-based PDF manipulation platform powered by Docker. Our application offers an extensive range of functionalities, from simple operations like merging and splitting PDFs, to advanced features such as compressing, OCR and Conversions."}),"\n",(0,r.jsx)(t.p,{children:"Although the application is OpenSource the majority of work is done by a single developer in their spare time. Please consider donating to keep this work active!"}),"\n",(0,r.jsx)(t.h1,{id:"benefits",children:"Benefits"}),"\n",(0,r.jsx)(t.h2,{id:"privacy-comes-first",children:"Privacy comes first"}),"\n",(0,r.jsx)(t.p,{children:"Originally developed as a purely ChatGPT-powered application, Stirling PDF has evolved to accommodate a plethora of PDF-related needs. Most importantly, the platform guarantees utmost privacy and security as it doesn't make outbound calls for tracking or record keeping. All files and PDFs remain either on the client side, stored temporarily on the server during the execution of tasks, or within a transient file created specifically for task execution. Once the user downloads a file, it is immediately purged from the server."}),"\n",(0,r.jsx)(t.h2,{id:"always-improving",children:"Always improving"}),"\n",(0,r.jsx)(t.p,{children:"Stirling-PDF has a active community of users giving new ideas and helping as part of its open source nature. New features are added throughout the year continuously involving Stirling-PDF as an application."}),"\n",(0,r.jsx)(t.h2,{id:"options",children:"Options"}),"\n",(0,r.jsxs)(t.p,{children:["Stirling-PDF is yours.\nYou are free to do with it what you like and customize it however you wish. We offer various ",(0,r.jsx)(t.a,{href:"http://TODO",children:"customization features"})," for you or your business."]}),"\n",(0,r.jsxs)(t.p,{children:["Please feel free to request new features or report bugs through our GitHub issues or ",(0,r.jsx)(t.a,{href:"https://discord.gg/Cn8pWhQRxZ",children:"Discord"}),"."]})]})}function d(e={}){const{wrapper:t}={...(0,n.RP)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},5680:(e,t,i)=>{i.d(t,{RP:()=>c});var r=i(6540);function n(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function o(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,r)}return i}function s(e){for(var t=1;t=0||(n[i]=e[i]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(n[i]=e[i])}return n}var l=r.createContext({}),c=function(e){var t=r.useContext(l),i=t;return e&&(i="function"==typeof e?e(t):s(s({},t),e)),i},p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var i=e.components,n=e.mdxType,o=e.originalType,l=e.parentName,d=a(e,["components","mdxType","originalType","parentName"]),u=c(i),h=n,f=u["".concat(l,".").concat(h)]||u[h]||p[h]||o;return i?r.createElement(f,s(s({ref:t},d),{},{components:i})):r.createElement(f,s({ref:t},d))}));d.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/e1540868.eec12989.js b/assets/js/e1540868.eec12989.js new file mode 100644 index 0000000..23986d7 --- /dev/null +++ b/assets/js/e1540868.eec12989.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[700],{1175:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>a,toc:()=>c});var i=r(4848),n=r(5680);const o={sidebar_position:1,slug:"/"},s="Introduction to Stirling PDF",a={id:"Overview/What is Stirling-PDF",title:"What is Stirling-PDF",description:"Stirling PDF is a robust, locally hosted, web-based PDF manipulation platform powered by Docker. Our application offers an extensive range of functionalities, from simple operations like merging and splitting PDFs, to advanced features such as compressing, OCR and Conversions.",source:"@site/docs/Overview/What is Stirling-PDF.md",sourceDirName:"Overview",slug:"/",permalink:"/",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/Overview/What is Stirling-PDF.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1,slug:"/"},sidebar:"tutorialSidebar",next:{title:"The Technologies Behind Stirling PDF",permalink:"/Overview/The Technologies"}},l={},c=[{value:"Privacy comes first",id:"privacy-comes-first",level:2},{value:"Always improving",id:"always-improving",level:2},{value:"Options",id:"options",level:2}];function p(e){const t={a:"a",h1:"h1",h2:"h2",p:"p",...(0,n.RP)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("img",{src:"https://raw.githubusercontent.com/Stirling-Tools/Stirling-PDF/main/docs/stirling.png",alt:"Name",height:"200"}),"\n",(0,i.jsx)(t.h1,{id:"introduction-to-stirling-pdf",children:"Introduction to Stirling PDF"}),"\n",(0,i.jsx)(t.p,{children:"Stirling PDF is a robust, locally hosted, web-based PDF manipulation platform powered by Docker. Our application offers an extensive range of functionalities, from simple operations like merging and splitting PDFs, to advanced features such as compressing, OCR and Conversions."}),"\n",(0,i.jsx)(t.p,{children:"Although the application is OpenSource the majority of work is done by a single developer in their spare time. Please consider donating to keep this work active!"}),"\n",(0,i.jsx)(t.h1,{id:"benefits",children:"Benefits"}),"\n",(0,i.jsx)(t.h2,{id:"privacy-comes-first",children:"Privacy comes first"}),"\n",(0,i.jsx)(t.p,{children:"Originally developed as a purely ChatGPT-powered application, Stirling PDF has evolved to accommodate a plethora of PDF-related needs. Most importantly, the platform guarantees utmost privacy and security as it doesn't make outbound calls for tracking or record keeping. All files and PDFs remain either on the client side, stored temporarily on the server during the execution of tasks, or within a transient file created specifically for task execution. Once the user downloads a file, it is immediately purged from the server."}),"\n",(0,i.jsx)(t.h2,{id:"always-improving",children:"Always improving"}),"\n",(0,i.jsx)(t.p,{children:"Stirling-PDF has a active community of users giving new ideas and helping as part of its open source nature. New features are added throughout the year continuously involving Stirling-PDF as an application."}),"\n",(0,i.jsx)(t.h2,{id:"options",children:"Options"}),"\n",(0,i.jsxs)(t.p,{children:["Stirling-PDF is yours.\nYou are free to do with it what you like and customize it however you wish. We offer various ",(0,i.jsx)(t.a,{href:"http://TODO",children:"customization features"})," for you or your business."]}),"\n",(0,i.jsxs)(t.p,{children:["Please feel free to request new features or report bugs through our GitHub issues or ",(0,i.jsx)(t.a,{href:"https://discord.gg/Cn8pWhQRxZ",children:"Discord"}),"."]})]})}function u(e={}){const{wrapper:t}={...(0,n.RP)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(p,{...e})}):p(e)}},5680:(e,t,r)=>{r.d(t,{RP:()=>c});var i=r(6540);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function s(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var l=i.createContext({}),c=function(e){var t=i.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):s(s({},t),e)),r},p={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},u=i.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,l=e.parentName,u=a(e,["components","mdxType","originalType","parentName"]),d=c(r),h=n,f=d["".concat(l,".").concat(h)]||d[h]||p[h]||o;return r?i.createElement(f,s(s({ref:t},u),{},{components:r})):i.createElement(f,s({ref:t},u))}));u.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/e8a32332.a363a355.js b/assets/js/e8a32332.a363a355.js deleted file mode 100644 index 92e0ac2..0000000 --- a/assets/js/e8a32332.a363a355.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[486],{858:e=>{e.exports=JSON.parse('{"tag":{"label":"Language","permalink":"/docs/tags/language","allTagsPath":"/docs/tags","count":1,"items":[{"id":"Contribute/Language","title":"Add a New Language","description":"Create a doc page with rich content.","permalink":"/docs/Contribute/Language"}],"unlisted":false}}')}}]); \ No newline at end of file diff --git a/assets/js/f08caec6.3ef36ba2.js b/assets/js/f08caec6.3ef36ba2.js deleted file mode 100644 index 1abe9b1..0000000 --- a/assets/js/f08caec6.3ef36ba2.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[28],{5665:e=>{e.exports=JSON.parse('{"tag":{"label":"Code","permalink":"/docs/tags/code","allTagsPath":"/docs/tags","count":1,"items":[{"id":"Contribute/Code","title":"Code","description":"Create a doc page with rich content.","permalink":"/docs/Contribute/Code"}],"unlisted":false}}')}}]); \ No newline at end of file diff --git a/assets/js/f3c74015.afc439b0.js b/assets/js/f3c74015.afc439b0.js deleted file mode 100644 index 05123c5..0000000 --- a/assets/js/f3c74015.afc439b0.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[338],{6776:e=>{e.exports=JSON.parse('{"tag":{"label":"API","permalink":"/docs/tags/api","allTagsPath":"/docs/tags","count":1,"items":[{"id":"API","title":"API","description":"Overview of API offering in S-PDF","permalink":"/docs/API"}],"unlisted":false}}')}}]); \ No newline at end of file diff --git a/assets/js/f6b04b6b.a21451ab.js b/assets/js/f6b04b6b.a21451ab.js new file mode 100644 index 0000000..bffdad0 --- /dev/null +++ b/assets/js/f6b04b6b.a21451ab.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[471],{7607:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>p,frontMatter:()=>s,metadata:()=>a,toc:()=>c});var i=t(4848),r=t(5680);const s={sidebar_position:1},o="Features - Page Operations",a={id:"Functionality/Page operations/Overview",title:"Features - Page Operations",description:"- merge-pdfs: With this feature, users can merge multiple PDF documents into a single PDF.",source:"@site/docs/Functionality/Page operations/Overview.md",sourceDirName:"Functionality/Page operations",slug:"/Functionality/Page operations/Overview",permalink:"/Functionality/Page operations/Overview",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/Functionality/Page operations/Overview.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Functionality",permalink:"/category/functionality"},next:{title:"Features - Convert",permalink:"/Functionality/Convert/Overview"}},l={},c=[];function d(e){const n={code:"code",h1:"h1",li:"li",p:"p",ul:"ul",...(0,r.RP)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h1,{id:"features---page-operations",children:"Features - Page Operations"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"merge-pdfs"}),": With this feature, users can merge multiple PDF documents into a single PDF."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"split-pdfs"}),": This functionality enables users to split a single PDF document into multiple separate PDFs."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"pdf-organizer"}),": This feature gives users the ability to rearrange, add, or delete pages within a PDF document."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"rotate-pdf"}),": With this feature, users can rotate pages within a PDF document to their desired orientation."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"remove-pages"}),": This feature allows users to remove specified pages from a PDF document."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"multi-page-layout"}),": This functionality allows users to create a layout involving multiple pages of a PDF."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"scale-pages"}),": This feature enables users to adjust the scale of pages in a PDF document."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"auto-split-pdfs"}),": This allows a user to insert physical divider pages between their documents in their scanner to allow S-PDF to auto separate them"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"adjust-contrast"}),": Lets the user adjust the contrast, brightness and saturation"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"crop"}),": Allows user to crop the pages to set size"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"extract pages"}),": Extracts the defined pages from the PDF into a new PDF document"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"pdf-to-single-page"}),": Converts multi pages PDF files into a single long pdf page."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"split-by-size-or-count"}),": Splits one or multiple PDF files into parts consisting of a maximum file size or page count definde by the user."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"overlay-pdf"}),": Can merge multiple PDFs into one another (ontop/behind etc) in various ways"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"split-pdf-by-sections"}),": Splits a page in multiple section vertically, horizontally or both. Can be used to split a page in half etc."]}),"\n"]}),"\n"]})]})}function p(e={}){const{wrapper:n}={...(0,r.RP)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},5680:(e,n,t)=>{t.d(n,{RP:()=>c});var i=t(6540);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function s(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function o(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var l=i.createContext({}),c=function(e){var n=i.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},d={inlineCode:"code",wrapper:function(e){var n=e.children;return i.createElement(i.Fragment,{},n)}},p=i.forwardRef((function(e,n){var t=e.components,r=e.mdxType,s=e.originalType,l=e.parentName,p=a(e,["components","mdxType","originalType","parentName"]),u=c(t),h=r,f=u["".concat(l,".").concat(h)]||u[h]||d[h]||s;return t?i.createElement(f,o(o({ref:n},p),{},{components:t})):i.createElement(f,o({ref:n},p))}));p.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/f6b04b6b.b7445dc4.js b/assets/js/f6b04b6b.b7445dc4.js deleted file mode 100644 index d849582..0000000 --- a/assets/js/f6b04b6b.b7445dc4.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[471],{7607:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>p,frontMatter:()=>s,metadata:()=>a,toc:()=>c});var i=t(4848),r=t(5680);const s={sidebar_position:1},o="Features - Page Operations",a={id:"Functionality/Page operations/Overview",title:"Features - Page Operations",description:"- merge-pdfs: With this feature, users can merge multiple PDF documents into a single PDF.",source:"@site/docs/Functionality/Page operations/Overview.md",sourceDirName:"Functionality/Page operations",slug:"/Functionality/Page operations/Overview",permalink:"/docs/Functionality/Page operations/Overview",draft:!1,unlisted:!1,editUrl:"https://github.com/Stirling-Tools/Stirling-Tools.github.io/tree/main/docs/Functionality/Page operations/Overview.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Functionality",permalink:"/docs/category/functionality"},next:{title:"Features - Convert",permalink:"/docs/Functionality/Convert/Overview"}},l={},c=[];function d(e){const n={code:"code",h1:"h1",li:"li",p:"p",ul:"ul",...(0,r.RP)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h1,{id:"features---page-operations",children:"Features - Page Operations"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"merge-pdfs"}),": With this feature, users can merge multiple PDF documents into a single PDF."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"split-pdfs"}),": This functionality enables users to split a single PDF document into multiple separate PDFs."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"pdf-organizer"}),": This feature gives users the ability to rearrange, add, or delete pages within a PDF document."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"rotate-pdf"}),": With this feature, users can rotate pages within a PDF document to their desired orientation."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"remove-pages"}),": This feature allows users to remove specified pages from a PDF document."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"multi-page-layout"}),": This functionality allows users to create a layout involving multiple pages of a PDF."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"scale-pages"}),": This feature enables users to adjust the scale of pages in a PDF document."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"auto-split-pdfs"}),": This allows a user to insert physical divider pages between their documents in their scanner to allow S-PDF to auto separate them"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"adjust-contrast"}),": Lets the user adjust the contrast, brightness and saturation"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"crop"}),": Allows user to crop the pages to set size"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"extract pages"}),": Extracts the defined pages from the PDF into a new PDF document"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"pdf-to-single-page"}),": Converts multi pages PDF files into a single long pdf page."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"split-by-size-or-count"}),": Splits one or multiple PDF files into parts consisting of a maximum file size or page count definde by the user."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"overlay-pdf"}),": Can merge multiple PDFs into one another (ontop/behind etc) in various ways"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"split-pdf-by-sections"}),": Splits a page in multiple section vertically, horizontally or both. Can be used to split a page in half etc."]}),"\n"]}),"\n"]})]})}function p(e={}){const{wrapper:n}={...(0,r.RP)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},5680:(e,n,t)=>{t.d(n,{RP:()=>c});var i=t(6540);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function s(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function o(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var l=i.createContext({}),c=function(e){var n=i.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},d={inlineCode:"code",wrapper:function(e){var n=e.children;return i.createElement(i.Fragment,{},n)}},p=i.forwardRef((function(e,n){var t=e.components,r=e.mdxType,s=e.originalType,l=e.parentName,p=a(e,["components","mdxType","originalType","parentName"]),u=c(t),h=r,f=u["".concat(l,".").concat(h)]||u[h]||d[h]||s;return t?i.createElement(f,o(o({ref:n},p),{},{components:t})):i.createElement(f,o({ref:n},p))}));p.displayName="MDXCreateElement"}}]); \ No newline at end of file diff --git a/assets/js/main.38ec2b89.js b/assets/js/main.38ec2b89.js deleted file mode 100644 index 6a48370..0000000 --- a/assets/js/main.38ec2b89.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see main.38ec2b89.js.LICENSE.txt */ -(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[792],{8328:(e,t,n)=>{"use strict";n.d(t,{A:()=>p});n(6540);var r=n(3259),o=n.n(r),a=n(4054);const i={"05406345":[()=>n.e(422).then(n.bind(n,9384)),"@site/docs/Contribute/Language.md",9384],"0656e72b":[()=>n.e(864).then(n.bind(n,8816)),"@site/docs/Advanced Configuration/How to add configurations.md",8816],"0ccda0bc":[()=>n.e(587).then(n.bind(n,6091)),"@site/docs/Getting started/Installation/Local/Unix.md",6091],"14eb3368":[()=>Promise.all([n.e(869),n.e(969)]).then(n.bind(n,4136)),"@theme/DocCategoryGeneratedIndexPage",4136],17896441:[()=>Promise.all([n.e(869),n.e(204),n.e(401)]).then(n.bind(n,3641)),"@theme/DocItem",3641],"186bd3b4":[()=>n.e(149).then(n.bind(n,8691)),"@site/docs/Advanced Configuration/Endpoint or Feature Customisation.md",8691],"195f1085":[()=>n.e(774).then(n.bind(n,192)),"@site/docs/Advanced Configuration/Single Sign-On Configuration.md",192],"1f391b9e":[()=>Promise.all([n.e(869),n.e(204),n.e(61)]).then(n.bind(n,7973)),"@theme/MDXPage",7973],"2158bb33":[()=>n.e(405).then(n.bind(n,4055)),"@site/docs/Getting started/Installation/Docker/Docker Install.md",4055],"3720c009":[()=>Promise.all([n.e(869),n.e(787)]).then(n.bind(n,876)),"@theme/DocTagsListPage",876],"393be207":[()=>n.e(134).then(n.bind(n,6602)),"@site/src/pages/markdown-page.md",6602],"3c339e32":[()=>n.e(334).then(n.bind(n,3687)),"@site/docs/Contribute/Code.md",3687],"3eca61f5":[()=>n.e(363).then(n.bind(n,3958)),"@site/docs/Functionality/Miscellaneous/Overview.md",3958],"4b9e34a4":[()=>n.e(681).then(n.bind(n,424)),"@site/docs/Advanced Configuration/Other Customisations.md",424],"54ff00bd":[()=>n.e(746).then(n.bind(n,1661)),"@site/docs/Overview/The Technologies.md",1661],"58585d64":[()=>n.e(506).then(n.bind(n,9777)),"@site/docs/Advanced Configuration/UI Customisation.md",9777],"5b87d6e1":[()=>n.e(697).then(n.bind(n,9835)),"@site/docs/Functionality/Convert/Overview.md",9835],"5bfee675":[()=>n.e(704).then(n.t.bind(n,1157,19)),"@generated/docusaurus-plugin-content-docs/default/p/docs-tags-aab.json",1157],"5e95c892":[()=>n.e(647).then(n.bind(n,7121)),"@theme/DocsRoot",7121],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,4784)),"@generated/docusaurus.config",4784],"69c64e15":[()=>n.e(740).then(n.bind(n,9375)),"@site/docs/Getting started/Installation/Docker/Docker Versions.md",9375],"763c3bf2":[()=>n.e(297).then(n.t.bind(n,6413,19)),"@generated/docusaurus-plugin-content-docs/default/p/docs-category-functionality-874.json",6413],"7792a21f":[()=>n.e(220).then(n.bind(n,6905)),"@site/src/pages/about.js",6905],"7c110bd0":[()=>n.e(877).then(n.t.bind(n,2614,19)),"@generated/docusaurus-plugin-content-docs/default/p/docs-b5f.json",2614],"83e9e333":[()=>n.e(620).then(n.bind(n,3616)),"@site/src/pages/contact.js",3616],"94fbe072":[()=>n.e(4).then(n.bind(n,1484)),"@site/docs/Getting started/Installation/Local/Windows.md",1484],"9fb582a2":[()=>n.e(794).then(n.bind(n,6273)),"@site/docs/Advanced Configuration/System and Security.md",6273],a7456010:[()=>n.e(235).then(n.t.bind(n,8552,19)),"@generated/docusaurus-plugin-content-pages/default/__plugin.json",8552],a7bd4aaa:[()=>n.e(98).then(n.bind(n,4532)),"@theme/DocVersionRoot",4532],a94703ab:[()=>Promise.all([n.e(869),n.e(48)]).then(n.bind(n,2559)),"@theme/DocRoot",2559],aba21aa0:[()=>n.e(742).then(n.t.bind(n,7093,19)),"@generated/docusaurus-plugin-content-docs/default/__plugin.json",7093],ad895e75:[()=>n.e(315).then(n.bind(n,6614)),"@site/docs/FAQ.md",6614],b35e9eda:[()=>n.e(883).then(n.bind(n,8564)),"@site/src/pages/demos.js",8564],c4f5d8e4:[()=>Promise.all([n.e(869),n.e(634)]).then(n.bind(n,2083)),"@site/src/pages/index.js",2083],c8229a80:[()=>n.e(512).then(n.bind(n,882)),"@site/docs/API.md",882],c94c5787:[()=>n.e(75).then(n.bind(n,6290)),"@site/docs/Functionality/Security/Overview.md",6290],d6ba1c29:[()=>n.e(813).then(n.bind(n,2999)),"@site/docs/Advanced Configuration/OCR.md",2999],df203c0f:[()=>Promise.all([n.e(869),n.e(279)]).then(n.bind(n,5921)),"@theme/DocTagDocListPage",5921],e1540868:[()=>n.e(700).then(n.bind(n,1175)),"@site/docs/Overview/What is Stirling-PDF.md",1175],e8a32332:[()=>n.e(486).then(n.t.bind(n,858,19)),"@generated/docusaurus-plugin-content-docs/default/p/docs-tags-language-bbb.json",858],f08caec6:[()=>n.e(28).then(n.t.bind(n,5665,19)),"@generated/docusaurus-plugin-content-docs/default/p/docs-tags-code-1b9.json",5665],f3c74015:[()=>n.e(338).then(n.t.bind(n,6776,19)),"@generated/docusaurus-plugin-content-docs/default/p/docs-tags-api-123.json",6776],f6b04b6b:[()=>n.e(471).then(n.bind(n,7607)),"@site/docs/Functionality/Page operations/Overview.md",7607]};var l=n(4848);function s(e){let{error:t,retry:n,pastDelay:r}=e;return t?(0,l.jsxs)("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"},children:[(0,l.jsx)("p",{children:String(t)}),(0,l.jsx)("div",{children:(0,l.jsx)("button",{type:"button",onClick:n,children:"Retry"})})]}):r?(0,l.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:(0,l.jsx)("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb",children:(0,l.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsx)("circle",{cx:"22",cy:"22",r:"8",children:(0,l.jsx)("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"})})]})})}):null}var u=n(6921),c=n(3102);function d(e,t){if("*"===e)return o()({loading:s,loader:()=>n.e(237).then(n.bind(n,2237)),modules:["@theme/NotFound"],webpack:()=>[2237],render(e,t){const n=e.default;return(0,l.jsx)(c.W,{value:{plugin:{name:"native",id:"default"}},children:(0,l.jsx)(n,{...t})})}});const r=a[`${e}-${t}`],d={},p=[],f=[],m=(0,u.A)(r);return Object.entries(m).forEach((e=>{let[t,n]=e;const r=i[n];r&&(d[t]=r[0],p.push(r[1]),f.push(r[2]))})),o().Map({loading:s,loader:d,modules:p,webpack:()=>f,render(t,n){const o=JSON.parse(JSON.stringify(r));Object.entries(t).forEach((t=>{let[n,r]=t;const a=r.default;if(!a)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof a&&"function"!=typeof a||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{a[e]=r[e]}));let i=o;const l=n.split(".");l.slice(0,-1).forEach((e=>{i=i[e]})),i[l[l.length-1]]=a}));const a=o.__comp;delete o.__comp;const i=o.__context;delete o.__context;const s=o.__props;return delete o.__props,(0,l.jsx)(c.W,{value:i,children:(0,l.jsx)(a,{...o,...s,...n})})}})}const p=[{path:"/about",component:d("/about","c49"),exact:!0},{path:"/contact",component:d("/contact","abe"),exact:!0},{path:"/demos",component:d("/demos","dbf"),exact:!0},{path:"/markdown-page",component:d("/markdown-page","3d7"),exact:!0},{path:"/docs",component:d("/docs","780"),routes:[{path:"/docs",component:d("/docs","cb1"),routes:[{path:"/docs/tags",component:d("/docs/tags","fde"),exact:!0},{path:"/docs/tags/api",component:d("/docs/tags/api","a44"),exact:!0},{path:"/docs/tags/code",component:d("/docs/tags/code","749"),exact:!0},{path:"/docs/tags/language",component:d("/docs/tags/language","b41"),exact:!0},{path:"/docs",component:d("/docs","781"),routes:[{path:"/docs/Advanced Configuration/Endpoint or Feature Customisation",component:d("/docs/Advanced Configuration/Endpoint or Feature Customisation","c01"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Advanced Configuration/How to add configurations",component:d("/docs/Advanced Configuration/How to add configurations","a4b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Advanced Configuration/OCR",component:d("/docs/Advanced Configuration/OCR","738"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Advanced Configuration/Other Customisations",component:d("/docs/Advanced Configuration/Other Customisations","14b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Advanced Configuration/Single Sign-On Configuration",component:d("/docs/Advanced Configuration/Single Sign-On Configuration","a52"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Advanced Configuration/System and Security",component:d("/docs/Advanced Configuration/System and Security","9df"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Advanced Configuration/UI Customisation",component:d("/docs/Advanced Configuration/UI Customisation","6c5"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/API",component:d("/docs/API","2b0"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/category/functionality",component:d("/docs/category/functionality","b93"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Contribute/Code",component:d("/docs/Contribute/Code","57f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Contribute/Language",component:d("/docs/Contribute/Language","3bc"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/FAQ",component:d("/docs/FAQ","953"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Functionality/Convert/Overview",component:d("/docs/Functionality/Convert/Overview","3f4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Functionality/Miscellaneous/Overview",component:d("/docs/Functionality/Miscellaneous/Overview","b04"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Functionality/Page operations/Overview",component:d("/docs/Functionality/Page operations/Overview","23b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Functionality/Security/Overview",component:d("/docs/Functionality/Security/Overview","467"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Getting started/Installation/Docker/Docker Install",component:d("/docs/Getting started/Installation/Docker/Docker Install","bd7"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Getting started/Installation/Docker/Docker Versions",component:d("/docs/Getting started/Installation/Docker/Docker Versions","410"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Getting started/Installation/Local/Unix Installation",component:d("/docs/Getting started/Installation/Local/Unix Installation","74d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Getting started/Installation/Local/Windows Installation",component:d("/docs/Getting started/Installation/Local/Windows Installation","b74"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Overview/The Technologies",component:d("/docs/Overview/The Technologies","143"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Overview/What is Stirling-PDF",component:d("/docs/Overview/What is Stirling-PDF","40e"),exact:!0,sidebar:"tutorialSidebar"}]}]}]},{path:"/",component:d("/","2e1"),exact:!0},{path:"*",component:d("*")}]},6125:(e,t,n)=>{"use strict";n.d(t,{o:()=>a,x:()=>i});var r=n(6540),o=n(4848);const a=r.createContext(!1);function i(e){let{children:t}=e;const[n,i]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{i(!0)}),[]),(0,o.jsx)(a.Provider,{value:n,children:t})}},8536:(e,t,n)=>{"use strict";var r=n(6540),o=n(5338),a=n(4625),i=n(545),l=n(8193);const s=[n(119),n(6134),n(6294),n(1043)];var u=n(8328),c=n(6347),d=n(2831),p=n(4848);function f(e){let{children:t}=e;return(0,p.jsx)(p.Fragment,{children:t})}var m=n(5260),g=n(4586),h=n(6025),y=n(6342),b=n(1003),v=n(2131),w=n(4090),k=n(2967),x=n(440),S=n(1463);function C(){const{i18n:{currentLocale:e,defaultLocale:t,localeConfigs:n}}=(0,g.A)(),r=(0,v.o)(),o=n[e].htmlLang,a=e=>e.replace("-","_");return(0,p.jsxs)(m.A,{children:[Object.entries(n).map((e=>{let[t,{htmlLang:n}]=e;return(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:n},t)})),(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}),(0,p.jsx)("meta",{property:"og:locale",content:a(o)}),Object.values(n).filter((e=>o!==e.htmlLang)).map((e=>(0,p.jsx)("meta",{property:"og:locale:alternate",content:a(e.htmlLang)},`meta-og-${e.htmlLang}`)))]})}function E(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,g.A)(),r=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,g.A)(),{pathname:r}=(0,c.zy)();return e+(0,x.applyTrailingSlash)((0,h.A)(r),{trailingSlash:n,baseUrl:t})}(),o=t?`${n}${t}`:r;return(0,p.jsxs)(m.A,{children:[(0,p.jsx)("meta",{property:"og:url",content:o}),(0,p.jsx)("link",{rel:"canonical",href:o})]})}function _(){const{i18n:{currentLocale:e}}=(0,g.A)(),{metadata:t,image:n}=(0,y.p)();return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)(m.A,{children:[(0,p.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,p.jsx)("body",{className:w.w})]}),n&&(0,p.jsx)(b.be,{image:n}),(0,p.jsx)(E,{}),(0,p.jsx)(C,{}),(0,p.jsx)(S.A,{tag:k.Cy,locale:e}),(0,p.jsx)(m.A,{children:t.map(((e,t)=>(0,p.jsx)("meta",{...e},t)))})]})}const A=new Map;var T=n(6125),j=n(6988),L=n(205);function P(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>o.forEach((e=>e?.()))}const N=function(e){let{children:t,location:n,previousLocation:r}=e;return(0,L.A)((()=>{r!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,o=t.hash===n.hash,a=t.search===n.search;if(r&&o&&!a)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:r}),P("onRouteDidUpdate",{previousLocation:r,location:n}))}),[r,n]),t};function O(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.u)(u.A,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class R extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=l.A.canUseDOM?P("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=P("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),O(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return(0,p.jsx)(N,{previousLocation:this.previousLocation,location:t,children:(0,p.jsx)(c.qh,{location:t,render:()=>e})})}}const D=R,I="__docusaurus-base-url-issue-banner-container",F="__docusaurus-base-url-issue-banner",M="__docusaurus-base-url-issue-banner-suggestion-container";function z(e){return`\ndocument.addEventListener('DOMContentLoaded', function maybeInsertBanner() {\n var shouldInsert = typeof window['docusaurus'] === 'undefined';\n shouldInsert && insertBanner();\n});\n\nfunction insertBanner() {\n var bannerContainer = document.createElement('div');\n bannerContainer.id = '${I}';\n var bannerHtml = ${JSON.stringify(function(e){return`\n
\n

Your Docusaurus site did not load properly.

\n

A very common reason is a wrong site baseUrl configuration.

\n

Current configured baseUrl = ${e} ${"/"===e?" (default value)":""}

\n

We suggest trying baseUrl =

\n
\n`}(e)).replace(/{let{route:t}=e;return!0===t.exact})))return A.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return A.set(e.pathname,t),{...e,pathname:t}}((0,c.zy)());return(0,p.jsx)(D,{location:e,children:W})}function Q(){return(0,p.jsx)(q.A,{children:(0,p.jsx)(j.l,{children:(0,p.jsxs)(T.x,{children:[(0,p.jsxs)(f,{children:[(0,p.jsx)(U,{}),(0,p.jsx)(_,{}),(0,p.jsx)($,{}),(0,p.jsx)(V,{})]}),(0,p.jsx)(H,{})]})})})}var K=n(4054);const Y=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const o=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;o?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var Z=n(6921);const X=new Set,J=new Set,ee=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,te={prefetch:e=>{if(!(e=>!ee()&&!J.has(e)&&!X.has(e))(e))return!1;X.add(e);const t=(0,d.u)(u.A,e).flatMap((e=>{return t=e.route.path,Object.entries(K).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,Z.A)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?Y(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!ee()&&!J.has(e))(e)&&(J.add(e),O(e))},ne=Object.freeze(te),re=Boolean(!0);if(l.A.canUseDOM){window.docusaurus=ne;const e=document.getElementById("__docusaurus"),t=(0,p.jsx)(i.vd,{children:(0,p.jsx)(a.Kd,{children:(0,p.jsx)(Q,{})})}),n=(e,t)=>{console.error("Docusaurus React Root onRecoverableError:",e,t)},l=()=>{if(window.docusaurusRoot)window.docusaurusRoot.render(t);else if(re)window.docusaurusRoot=o.hydrateRoot(e,t,{onRecoverableError:n});else{const r=o.createRoot(e,{onRecoverableError:n});r.render(t),window.docusaurusRoot=r}};O(window.location.pathname).then((()=>{(0,r.startTransition)(l)}))}},6988:(e,t,n)=>{"use strict";n.d(t,{o:()=>d,l:()=>p});var r=n(6540),o=n(4784);const a=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs","mainDocId":"Overview/What is Stirling-PDF","docs":[{"id":"Advanced Configuration/Endpoint or Feature Customisation","path":"/docs/Advanced Configuration/Endpoint or Feature Customisation","sidebar":"tutorialSidebar"},{"id":"Advanced Configuration/How to add configurations","path":"/docs/Advanced Configuration/How to add configurations","sidebar":"tutorialSidebar"},{"id":"Advanced Configuration/OCR","path":"/docs/Advanced Configuration/OCR","sidebar":"tutorialSidebar"},{"id":"Advanced Configuration/Other Customisations","path":"/docs/Advanced Configuration/Other Customisations","sidebar":"tutorialSidebar"},{"id":"Advanced Configuration/Single Sign-On Configuration","path":"/docs/Advanced Configuration/Single Sign-On Configuration","sidebar":"tutorialSidebar"},{"id":"Advanced Configuration/System and Security","path":"/docs/Advanced Configuration/System and Security","sidebar":"tutorialSidebar"},{"id":"Advanced Configuration/UI Customisation","path":"/docs/Advanced Configuration/UI Customisation","sidebar":"tutorialSidebar"},{"id":"API","path":"/docs/API","sidebar":"tutorialSidebar"},{"id":"Contribute/Code","path":"/docs/Contribute/Code","sidebar":"tutorialSidebar"},{"id":"Contribute/Language","path":"/docs/Contribute/Language","sidebar":"tutorialSidebar"},{"id":"FAQ","path":"/docs/FAQ","sidebar":"tutorialSidebar"},{"id":"Functionality/Convert/Overview","path":"/docs/Functionality/Convert/Overview","sidebar":"tutorialSidebar"},{"id":"Functionality/Miscellaneous/Overview","path":"/docs/Functionality/Miscellaneous/Overview","sidebar":"tutorialSidebar"},{"id":"Functionality/Page operations/Overview","path":"/docs/Functionality/Page operations/Overview","sidebar":"tutorialSidebar"},{"id":"Functionality/Security/Overview","path":"/docs/Functionality/Security/Overview","sidebar":"tutorialSidebar"},{"id":"Getting started/Installation/Docker/Docker Install","path":"/docs/Getting started/Installation/Docker/Docker Install","sidebar":"tutorialSidebar"},{"id":"Getting started/Installation/Docker/Docker Versions","path":"/docs/Getting started/Installation/Docker/Docker Versions","sidebar":"tutorialSidebar"},{"id":"Getting started/Installation/Local/Unix Installation","path":"/docs/Getting started/Installation/Local/Unix Installation","sidebar":"tutorialSidebar"},{"id":"Getting started/Installation/Local/Windows Installation","path":"/docs/Getting started/Installation/Local/Windows Installation","sidebar":"tutorialSidebar"},{"id":"Overview/The Technologies","path":"/docs/Overview/The Technologies","sidebar":"tutorialSidebar"},{"id":"Overview/What is Stirling-PDF","path":"/docs/Overview/What is Stirling-PDF","sidebar":"tutorialSidebar"},{"id":"/category/functionality","path":"/docs/category/functionality","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/docs/Overview/What is Stirling-PDF","label":"Overview/What is Stirling-PDF"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var l=n(2654);const s=JSON.parse('{"docusaurusVersion":"3.3.2","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.3.2"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"3.3.2"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.3.2"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.3.2"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.3.2"}}}');var u=n(4848);const c={siteConfig:o.default,siteMetadata:s,globalData:a,i18n:i,codeTranslations:l},d=r.createContext(c);function p(e){let{children:t}=e;return(0,u.jsx)(d.Provider,{value:c,children:t})}},7489:(e,t,n)=>{"use strict";n.d(t,{A:()=>g});var r=n(6540),o=n(8193),a=n(5260),i=n(440),l=n(781),s=n(3102),u=n(4848);function c(e){let{error:t,tryAgain:n}=e;return(0,u.jsxs)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"},children:[(0,u.jsx)("h1",{style:{fontSize:"3rem"},children:"This page crashed"}),(0,u.jsx)("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"},children:"Try again"}),(0,u.jsx)(d,{error:t})]})}function d(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,u.jsx)("p",{style:{whiteSpace:"pre-wrap"},children:n})}function p(e){let{children:t}=e;return(0,u.jsx)(s.W,{value:{plugin:{name:"docusaurus-core-error-boundary",id:"default"}},children:t})}function f(e){let{error:t,tryAgain:n}=e;return(0,u.jsx)(p,{children:(0,u.jsxs)(g,{fallback:()=>(0,u.jsx)(c,{error:t,tryAgain:n}),children:[(0,u.jsx)(a.A,{children:(0,u.jsx)("title",{children:"Page Error"})}),(0,u.jsx)(l.A,{children:(0,u.jsx)(c,{error:t,tryAgain:n})})]})})}const m=e=>(0,u.jsx)(f,{...e});class g extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){o.A.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??m)(e)}return e??null}}},8193:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,o={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},5260:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});n(6540);var r=n(545),o=n(4848);function a(e){return(0,o.jsx)(r.mg,{...e})}},8774:(e,t,n)=>{"use strict";n.d(t,{A:()=>f});var r=n(6540),o=n(4625),a=n(440),i=n(4586),l=n(6654),s=n(8193),u=n(3427),c=n(6025),d=n(4848);function p(e,t){let{isNavLink:n,to:p,href:f,activeClassName:m,isActive:g,"data-noBrokenLinkCheck":h,autoAddBaseUrl:y=!0,...b}=e;const{siteConfig:{trailingSlash:v,baseUrl:w}}=(0,i.A)(),{withBaseUrl:k}=(0,c.h)(),x=(0,u.A)(),S=(0,r.useRef)(null);(0,r.useImperativeHandle)(t,(()=>S.current));const C=p||f;const E=(0,l.A)(C),_=C?.replace("pathname://","");let A=void 0!==_?(T=_,y&&(e=>e.startsWith("/"))(T)?k(T):T):void 0;var T;A&&E&&(A=(0,a.applyTrailingSlash)(A,{trailingSlash:v,baseUrl:w}));const j=(0,r.useRef)(!1),L=n?o.k2:o.N_,P=s.A.canUseIntersectionObserver,N=(0,r.useRef)(),O=()=>{j.current||null==A||(window.docusaurus.preload(A),j.current=!0)};(0,r.useEffect)((()=>(!P&&E&&null!=A&&window.docusaurus.prefetch(A),()=>{P&&N.current&&N.current.disconnect()})),[N,A,P,E]);const R=A?.startsWith("#")??!1,D=!b.target||"_self"===b.target,I=!A||!E||!D||R;return h||!R&&I||x.collectLink(A),b.id&&x.collectAnchor(b.id),I?(0,d.jsx)("a",{ref:S,href:A,...C&&!E&&{target:"_blank",rel:"noopener noreferrer"},...b}):(0,d.jsx)(L,{...b,onMouseEnter:O,onTouchStart:O,innerRef:e=>{S.current=e,P&&e&&E&&(N.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(N.current.unobserve(e),N.current.disconnect(),null!=A&&window.docusaurus.prefetch(A))}))})),N.current.observe(e))},to:A,...n&&{isActive:g,activeClassName:m}})}const f=r.forwardRef(p)},418:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});const r=()=>null},1312:(e,t,n)=>{"use strict";n.d(t,{A:()=>u,T:()=>s});var r=n(6540),o=n(4848);function a(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var i=n(2654);function l(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return i[t??n]??n??t}function s(e,t){let{message:n,id:r}=e;return a(l({message:n,id:r}),t)}function u(e){let{children:t,id:n,values:r}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");const i=l({message:t,id:n});return(0,o.jsx)(o.Fragment,{children:a(i,r)})}},7065:(e,t,n)=>{"use strict";n.d(t,{W:()=>r});const r="default"},6654:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function o(e){return void 0!==e&&!r(e)}n.d(t,{A:()=>o,z:()=>r})},6025:(e,t,n)=>{"use strict";n.d(t,{A:()=>l,h:()=>i});var r=n(6540),o=n(4586),a=n(6654);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,o.A)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:o=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,a.z)(n))return n;if(o)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const l=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+l:l}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function l(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},3427:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var r=n(6540);n(4848);const o=r.createContext({collectAnchor:()=>{},collectLink:()=>{}}),a=()=>(0,r.useContext)(o);function i(){return a()}},4586:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=n(6540),o=n(6988);function a(){return(0,r.useContext)(o.o)}},2303:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=n(6540),o=n(6125);function a(){return(0,r.useContext)(o.o)}},205:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(6540);const o=n(8193).A.canUseDOM?r.useLayoutEffect:r.useEffect},6921:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function o(e){const t={};return function e(n,o){Object.entries(n).forEach((n=>{let[a,i]=n;const l=o?`${o}.${a}`:a;r(i)?e(i,l):t[l]=i}))}(e),t}},3102:(e,t,n)=>{"use strict";n.d(t,{W:()=>i,o:()=>a});var r=n(6540),o=n(4848);const a=r.createContext(null);function i(e){let{children:t,value:n}=e;const i=r.useContext(a),l=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:i,value:n})),[i,n]);return(0,o.jsx)(a.Provider,{value:l,children:t})}},4070:(e,t,n)=>{"use strict";n.d(t,{zK:()=>g,vT:()=>p,Gy:()=>c,HW:()=>h,ht:()=>d,r7:()=>m,jh:()=>f});var r=n(6347),o=n(4586),a=n(7065);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,o.A)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const l=e=>e.versions.find((e=>e.isLast));function s(e,t){const n=function(e,t){const n=l(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.B6)(t,{path:e.path,exact:!1,strict:!1})))}(e,t),o=n?.docs.find((e=>!!(0,r.B6)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:o,alternateDocVersions:o?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(o.id):{}}}const u={},c=()=>i("docusaurus-plugin-content-docs")??u,d=e=>{try{return function(e,t,n){void 0===t&&(t=a.W),void 0===n&&(n={});const r=i(e),o=r?.[t];if(!o&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return o}("docusaurus-plugin-content-docs",e,{failfast:!0})}catch(t){throw new Error("You are using a feature of the Docusaurus docs plugin, but this plugin does not seem to be enabled"+("Default"===e?"":` (pluginId=${e}`),{cause:t})}};function p(e){void 0===e&&(e={});const t=c(),{pathname:n}=(0,r.zy)();return function(e,t,n){void 0===n&&(n={});const o=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.B6)(t,{path:n.path,exact:!1,strict:!1})})),a=o?{pluginId:o[0],pluginData:o[1]}:void 0;if(!a&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return a}(t,n,e)}function f(e){return d(e).versions}function m(e){const t=d(e);return l(t)}function g(e){const t=d(e),{pathname:n}=(0,r.zy)();return s(t,n)}function h(e){const t=d(e),{pathname:n}=(0,r.zy)();return function(e,t){const n=l(e);return{latestDocSuggestion:s(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},6294:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>a});var r=n(5947),o=n.n(r);o().configure({showSpinner:!1});const a={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{o().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){o().done()}}},6134:(e,t,n)=>{"use strict";n.r(t);var r=n(4876),o=n(4784);!function(e){const{themeConfig:{prism:t}}=o.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{"php"===e&&n(9700),n(8692)(`./prism-${e}`)})),delete globalThis.Prism}(r.My)},1107:(e,t,n)=>{"use strict";n.d(t,{A:()=>c});n(6540);var r=n(8215),o=n(1312),a=n(6342),i=n(8774),l=n(3427);const s={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};var u=n(4848);function c(e){let{as:t,id:n,...c}=e;const d=(0,l.A)(),{navbar:{hideOnScroll:p}}=(0,a.p)();if("h1"===t||!n)return(0,u.jsx)(t,{...c,id:void 0});d.collectAnchor(n);const f=(0,o.T)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof c.children?c.children:n});return(0,u.jsxs)(t,{...c,className:(0,r.A)("anchor",p?s.anchorWithHideOnScrollNavbar:s.anchorWithStickyNavbar,c.className),id:n,children:[c.children,(0,u.jsx)(i.A,{className:"hash-link",to:`#${n}`,"aria-label":f,title:f,children:"\u200b"})]})}},3186:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});n(6540);const r={iconExternalLink:"iconExternalLink_nPIU"};var o=n(4848);function a(e){let{width:t=13.5,height:n=13.5}=e;return(0,o.jsx)("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:r.iconExternalLink,children:(0,o.jsx)("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"})})}},781:(e,t,n)=>{"use strict";n.d(t,{A:()=>ft});var r=n(6540),o=n(8215),a=n(7489),i=n(1003),l=n(6347),s=n(1312),u=n(5062),c=n(4848);const d="__docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,r.useRef)(null),{action:t}=(0,l.W6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&p(t)}),[]);return(0,u.$)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&p(e.current)})),{containerRef:e,onClick:n}}const m=(0,s.T)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function g(e){const t=e.children??m,{containerRef:n,onClick:r}=f();return(0,c.jsx)("div",{ref:n,role:"region","aria-label":m,children:(0,c.jsx)("a",{...e,href:`#${d}`,onClick:r,children:t})})}var h=n(7559),y=n(4090);const b={skipToContent:"skipToContent_fXgn"};function v(){return(0,c.jsx)(g,{className:b.skipToContent})}var w=n(6342),k=n(5041);function x(e){let{width:t=21,height:n=21,color:r="currentColor",strokeWidth:o=1.2,className:a,...i}=e;return(0,c.jsx)("svg",{viewBox:"0 0 15 15",width:t,height:n,...i,children:(0,c.jsx)("g",{stroke:r,strokeWidth:o,children:(0,c.jsx)("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})})})}const S={closeButton:"closeButton_CVFx"};function C(e){return(0,c.jsx)("button",{type:"button","aria-label":(0,s.T)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"}),...e,className:(0,o.A)("clean-btn close",S.closeButton,e.className),children:(0,c.jsx)(x,{width:14,height:14,strokeWidth:3.1})})}const E={content:"content_knG7"};function _(e){const{announcementBar:t}=(0,w.p)(),{content:n}=t;return(0,c.jsx)("div",{...e,className:(0,o.A)(E.content,e.className),dangerouslySetInnerHTML:{__html:n}})}const A={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function T(){const{announcementBar:e}=(0,w.p)(),{isActive:t,close:n}=(0,k.Mj)();if(!t)return null;const{backgroundColor:r,textColor:o,isCloseable:a}=e;return(0,c.jsxs)("div",{className:A.announcementBar,style:{backgroundColor:r,color:o},role:"banner",children:[a&&(0,c.jsx)("div",{className:A.announcementBarPlaceholder}),(0,c.jsx)(_,{className:A.announcementBarContent}),a&&(0,c.jsx)(C,{onClick:n,className:A.announcementBarClose})]})}var j=n(9876),L=n(3104);var P=n(9532),N=n(5600);const O=r.createContext(null);function R(e){let{children:t}=e;const n=function(){const e=(0,j.M)(),t=(0,N.YL)(),[n,o]=(0,r.useState)(!1),a=null!==t.component,i=(0,P.ZC)(a);return(0,r.useEffect)((()=>{a&&!i&&o(!0)}),[a,i]),(0,r.useEffect)((()=>{a?e.shown||o(!0):o(!1)}),[e.shown,a]),(0,r.useMemo)((()=>[n,o]),[n])}();return(0,c.jsx)(O.Provider,{value:n,children:t})}function D(e){if(e.component){const t=e.component;return(0,c.jsx)(t,{...e.props})}}function I(){const e=(0,r.useContext)(O);if(!e)throw new P.dV("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,o=(0,r.useCallback)((()=>n(!1)),[n]),a=(0,N.YL)();return(0,r.useMemo)((()=>({shown:t,hide:o,content:D(a)})),[o,a,t])}function F(e){let{header:t,primaryMenu:n,secondaryMenu:r}=e;const{shown:a}=I();return(0,c.jsxs)("div",{className:"navbar-sidebar",children:[t,(0,c.jsxs)("div",{className:(0,o.A)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":a}),children:[(0,c.jsx)("div",{className:"navbar-sidebar__item menu",children:n}),(0,c.jsx)("div",{className:"navbar-sidebar__item menu",children:r})]})]})}var M=n(5293),z=n(2303);function B(e){return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,c.jsx)("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"})})}function $(e){return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,c.jsx)("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"})})}const U={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function q(e){let{className:t,buttonClassName:n,value:r,onChange:a}=e;const i=(0,z.A)(),l=(0,s.T)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===r?(0,s.T)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,s.T)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return(0,c.jsx)("div",{className:(0,o.A)(U.toggle,t),children:(0,c.jsxs)("button",{className:(0,o.A)("clean-btn",U.toggleButton,!i&&U.toggleButtonDisabled,n),type:"button",onClick:()=>a("dark"===r?"light":"dark"),disabled:!i,title:l,"aria-label":l,"aria-live":"polite",children:[(0,c.jsx)(B,{className:(0,o.A)(U.toggleIcon,U.lightToggleIcon)}),(0,c.jsx)($,{className:(0,o.A)(U.toggleIcon,U.darkToggleIcon)})]})})}const G=r.memo(q),H={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function W(e){let{className:t}=e;const n=(0,w.p)().navbar.style,r=(0,w.p)().colorMode.disableSwitch,{colorMode:o,setColorMode:a}=(0,M.G)();return r?null:(0,c.jsx)(G,{className:t,buttonClassName:"dark"===n?H.darkNavbarColorModeToggle:void 0,value:o,onChange:a})}var V=n(3465);function Q(){return(0,c.jsx)(V.A,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function K(){const e=(0,j.M)();return(0,c.jsx)("button",{type:"button","aria-label":(0,s.T)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle(),children:(0,c.jsx)(x,{color:"var(--ifm-color-emphasis-600)"})})}function Y(){return(0,c.jsxs)("div",{className:"navbar-sidebar__brand",children:[(0,c.jsx)(Q,{}),(0,c.jsx)(W,{className:"margin-right--md"}),(0,c.jsx)(K,{})]})}var Z=n(8774),X=n(6025),J=n(6654);function ee(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var te=n(3186);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:r,href:o,label:a,html:i,isDropdownLink:l,prependBaseUrlToHref:s,...u}=e;const d=(0,X.A)(r),p=(0,X.A)(t),f=(0,X.A)(o,{forcePrependBaseUrl:!0}),m=a&&o&&!(0,J.A)(o),g=i?{dangerouslySetInnerHTML:{__html:i}}:{children:(0,c.jsxs)(c.Fragment,{children:[a,m&&(0,c.jsx)(te.A,{...l&&{width:12,height:12}})]})};return o?(0,c.jsx)(Z.A,{href:s?f:o,...u,...g}):(0,c.jsx)(Z.A,{to:d,isNavLink:!0,...(t||n)&&{isActive:(e,t)=>n?ee(n,t.pathname):t.pathname.startsWith(p)},...u,...g})}function re(e){let{className:t,isDropdownItem:n=!1,...r}=e;const a=(0,c.jsx)(ne,{className:(0,o.A)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n,...r});return n?(0,c.jsx)("li",{children:a}):a}function oe(e){let{className:t,isDropdownItem:n,...r}=e;return(0,c.jsx)("li",{className:"menu__list-item",children:(0,c.jsx)(ne,{className:(0,o.A)("menu__link",t),...r})})}function ae(e){let{mobile:t=!1,position:n,...r}=e;const o=t?oe:re;return(0,c.jsx)(o,{...r,activeClassName:r.activeClassName??(t?"menu__link--active":"navbar__link--active")})}var ie=n(1422),le=n(9169),se=n(4586);const ue={dropdownNavbarItemMobile:"dropdownNavbarItemMobile_S0Fm"};function ce(e,t){return e.some((e=>function(e,t){return!!(0,le.ys)(e.to,t)||!!ee(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function de(e){let{items:t,position:n,className:a,onClick:i,...l}=e;const s=(0,r.useRef)(null),[u,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{s.current&&!s.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[s]),(0,c.jsxs)("div",{ref:s,className:(0,o.A)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":u}),children:[(0,c.jsx)(ne,{"aria-haspopup":"true","aria-expanded":u,role:"button",href:l.to?void 0:"#",className:(0,o.A)("navbar__link",a),...l,onClick:l.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!u))},children:l.children??l.label}),(0,c.jsx)("ul",{className:"dropdown__menu",children:t.map(((e,t)=>(0,r.createElement)(Ee,{isDropdownItem:!0,activeClassName:"dropdown__link--active",...e,key:t})))})]})}function pe(e){let{items:t,className:n,position:a,onClick:i,...s}=e;const u=function(){const{siteConfig:{baseUrl:e}}=(0,se.A)(),{pathname:t}=(0,l.zy)();return t.replace(e,"/")}(),d=ce(t,u),{collapsed:p,toggleCollapsed:f,setCollapsed:m}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&m(!d)}),[u,d,m]),(0,c.jsxs)("li",{className:(0,o.A)("menu__list-item",{"menu__list-item--collapsed":p}),children:[(0,c.jsx)(ne,{role:"button",className:(0,o.A)(ue.dropdownNavbarItemMobile,"menu__link menu__link--sublist menu__link--sublist-caret",n),...s,onClick:e=>{e.preventDefault(),f()},children:s.children??s.label}),(0,c.jsx)(ie.N,{lazy:!0,as:"ul",className:"menu__list",collapsed:p,children:t.map(((e,t)=>(0,r.createElement)(Ee,{mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active",...e,key:t})))})]})}function fe(e){let{mobile:t=!1,...n}=e;const r=t?pe:de;return(0,c.jsx)(r,{...n})}var me=n(2131);function ge(e){let{width:t=20,height:n=20,...r}=e;return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0,...r,children:(0,c.jsx)("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"})})}const he="iconLanguage_nlXk";var ye=n(418);const be={navbarSearchContainer:"navbarSearchContainer_Bca1"};function ve(e){let{children:t,className:n}=e;return(0,c.jsx)("div",{className:(0,o.A)(n,be.navbarSearchContainer),children:t})}var we=n(4070),ke=n(1754);var xe=n(5597);const Se=e=>e.docs.find((t=>t.id===e.mainDocId));const Ce={default:ae,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:r,queryString:o="",...a}=e;const{i18n:{currentLocale:i,locales:u,localeConfigs:d}}=(0,se.A)(),p=(0,me.o)(),{search:f,hash:m}=(0,l.zy)(),g=[...n,...u.map((e=>{const n=`${`pathname://${p.createUrl({locale:e,fullyQualified:!1})}`}${f}${m}${o}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...r],h=t?(0,s.T)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return(0,c.jsx)(fe,{...a,mobile:t,label:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(ge,{className:he}),h]}),items:g})},search:function(e){let{mobile:t,className:n}=e;return t?null:(0,c.jsx)(ve,{className:n,children:(0,c.jsx)(ye.A,{})})},dropdown:fe,html:function(e){let{value:t,className:n,mobile:r=!1,isDropdownItem:a=!1}=e;const i=a?"li":"div";return(0,c.jsx)(i,{className:(0,o.A)({navbar__item:!r&&!a,"menu__list-item":r},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:r,...o}=e;const{activeDoc:a}=(0,we.zK)(r),i=(0,ke.QB)(t,r),l=a?.path===i?.path;return null===i||i.unlisted&&!l?null:(0,c.jsx)(ae,{exact:!0,...o,isActive:()=>l||!!a?.sidebar&&a.sidebar===i.sidebar,label:n??i.id,to:i.path})},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:r,...o}=e;const{activeDoc:a}=(0,we.zK)(r),i=(0,ke.fW)(t,r).link;if(!i)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return(0,c.jsx)(ae,{exact:!0,...o,isActive:()=>a?.sidebar===t,label:n??i.label,to:i.path})},docsVersion:function(e){let{label:t,to:n,docsPluginId:r,...o}=e;const a=(0,ke.Vd)(r)[0],i=t??a.label,l=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(a).path;return(0,c.jsx)(ae,{...o,label:i,to:l})},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:r,dropdownItemsBefore:o,dropdownItemsAfter:a,...i}=e;const{search:u,hash:d}=(0,l.zy)(),p=(0,we.zK)(n),f=(0,we.jh)(n),{savePreferredVersionName:m}=(0,xe.g1)(n),g=[...o,...f.map((e=>{const t=p.alternateDocVersions[e.name]??Se(e);return{label:e.label,to:`${t.path}${u}${d}`,isActive:()=>e===p.activeVersion,onClick:()=>m(e.name)}})),...a],h=(0,ke.Vd)(n)[0],y=t&&g.length>1?(0,s.T)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):h.label,b=t&&g.length>1?void 0:Se(h).path;return g.length<=1?(0,c.jsx)(ae,{...i,mobile:t,label:y,to:b,isActive:r?()=>!1:void 0}):(0,c.jsx)(fe,{...i,mobile:t,label:y,to:b,items:g,isActive:r?()=>!1:void 0})}};function Ee(e){let{type:t,...n}=e;const r=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),o=Ce[r];if(!o)throw new Error(`No NavbarItem component found for type "${t}".`);return(0,c.jsx)(o,{...n})}function _e(){const e=(0,j.M)(),t=(0,w.p)().navbar.items;return(0,c.jsx)("ul",{className:"menu__list",children:t.map(((t,n)=>(0,r.createElement)(Ee,{mobile:!0,...t,onClick:()=>e.toggle(),key:n})))})}function Ae(e){return(0,c.jsx)("button",{...e,type:"button",className:"clean-btn navbar-sidebar__back",children:(0,c.jsx)(s.A,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)",children:"\u2190 Back to main menu"})})}function Te(){const e=0===(0,w.p)().navbar.items.length,t=I();return(0,c.jsxs)(c.Fragment,{children:[!e&&(0,c.jsx)(Ae,{onClick:()=>t.hide()}),t.content]})}function je(){const e=(0,j.M)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?(0,c.jsx)(F,{header:(0,c.jsx)(Y,{}),primaryMenu:(0,c.jsx)(_e,{}),secondaryMenu:(0,c.jsx)(Te,{})}):null}const Le={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function Pe(e){return(0,c.jsx)("div",{role:"presentation",...e,className:(0,o.A)("navbar-sidebar__backdrop",e.className)})}function Ne(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:a}}=(0,w.p)(),i=(0,j.M)(),{navbarRef:l,isNavbarVisible:d}=function(e){const[t,n]=(0,r.useState)(e),o=(0,r.useRef)(!1),a=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(a.current=e.getBoundingClientRect().height)}),[]);return(0,L.Mq)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i=l?n(!1):i+u{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return o.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return(0,c.jsxs)("nav",{ref:l,"aria-label":(0,s.T)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,o.A)("navbar","navbar--fixed-top",n&&[Le.navbarHideable,!d&&Le.navbarHidden],{"navbar--dark":"dark"===a,"navbar--primary":"primary"===a,"navbar-sidebar--show":i.shown}),children:[t,(0,c.jsx)(Pe,{onClick:i.toggle}),(0,c.jsx)(je,{})]})}var Oe=n(440);const Re={errorBoundaryError:"errorBoundaryError_a6uf",errorBoundaryFallback:"errorBoundaryFallback_VBag"};function De(e){return(0,c.jsx)("button",{type:"button",...e,children:(0,c.jsx)(s.A,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error",children:"Try again"})})}function Ie(e){let{error:t}=e;const n=(0,Oe.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,c.jsx)("p",{className:Re.errorBoundaryError,children:n})}class Fe extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}const Me="right";function ze(e){let{width:t=30,height:n=30,className:r,...o}=e;return(0,c.jsx)("svg",{className:r,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true",...o,children:(0,c.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"})})}function Be(){const{toggle:e,shown:t}=(0,j.M)();return(0,c.jsx)("button",{onClick:e,"aria-label":(0,s.T)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button",children:(0,c.jsx)(ze,{})})}const $e={colorModeToggle:"colorModeToggle_DEke"};function Ue(e){let{items:t}=e;return(0,c.jsx)(c.Fragment,{children:t.map(((e,t)=>(0,c.jsx)(Fe,{onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t}),children:(0,c.jsx)(Ee,{...e})},t)))})}function qe(e){let{left:t,right:n}=e;return(0,c.jsxs)("div",{className:"navbar__inner",children:[(0,c.jsx)("div",{className:"navbar__items",children:t}),(0,c.jsx)("div",{className:"navbar__items navbar__items--right",children:n})]})}function Ge(){const e=(0,j.M)(),t=(0,w.p)().navbar.items,[n,r]=function(e){function t(e){return"left"===(e.position??Me)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),o=t.find((e=>"search"===e.type));return(0,c.jsx)(qe,{left:(0,c.jsxs)(c.Fragment,{children:[!e.disabled&&(0,c.jsx)(Be,{}),(0,c.jsx)(Q,{}),(0,c.jsx)(Ue,{items:n})]}),right:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(Ue,{items:r}),(0,c.jsx)(W,{className:$e.colorModeToggle}),!o&&(0,c.jsx)(ve,{children:(0,c.jsx)(ye.A,{})})]})})}function He(){return(0,c.jsx)(Ne,{children:(0,c.jsx)(Ge,{})})}function We(e){let{item:t}=e;const{to:n,href:r,label:o,prependBaseUrlToHref:a,...i}=t,l=(0,X.A)(n),s=(0,X.A)(r,{forcePrependBaseUrl:!0});return(0,c.jsxs)(Z.A,{className:"footer__link-item",...r?{href:a?s:r}:{to:l},...i,children:[o,r&&!(0,J.A)(r)&&(0,c.jsx)(te.A,{})]})}function Ve(e){let{item:t}=e;return t.html?(0,c.jsx)("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):(0,c.jsx)("li",{className:"footer__item",children:(0,c.jsx)(We,{item:t})},t.href??t.to)}function Qe(e){let{column:t}=e;return(0,c.jsxs)("div",{className:"col footer__col",children:[(0,c.jsx)("div",{className:"footer__title",children:t.title}),(0,c.jsx)("ul",{className:"footer__items clean-list",children:t.items.map(((e,t)=>(0,c.jsx)(Ve,{item:e},t)))})]})}function Ke(e){let{columns:t}=e;return(0,c.jsx)("div",{className:"row footer__links",children:t.map(((e,t)=>(0,c.jsx)(Qe,{column:e},t)))})}function Ye(){return(0,c.jsx)("span",{className:"footer__link-separator",children:"\xb7"})}function Ze(e){let{item:t}=e;return t.html?(0,c.jsx)("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):(0,c.jsx)(We,{item:t})}function Xe(e){let{links:t}=e;return(0,c.jsx)("div",{className:"footer__links text--center",children:(0,c.jsx)("div",{className:"footer__links",children:t.map(((e,n)=>(0,c.jsxs)(r.Fragment,{children:[(0,c.jsx)(Ze,{item:e}),t.length!==n+1&&(0,c.jsx)(Ye,{})]},n)))})})}function Je(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?(0,c.jsx)(Ke,{columns:t}):(0,c.jsx)(Xe,{links:t})}var et=n(1122);const tt={footerLogoLink:"footerLogoLink_BH7S"};function nt(e){let{logo:t}=e;const{withBaseUrl:n}=(0,X.h)(),r={light:n(t.src),dark:n(t.srcDark??t.src)};return(0,c.jsx)(et.A,{className:(0,o.A)("footer__logo",t.className),alt:t.alt,sources:r,width:t.width,height:t.height,style:t.style})}function rt(e){let{logo:t}=e;return t.href?(0,c.jsx)(Z.A,{href:t.href,className:tt.footerLogoLink,target:t.target,children:(0,c.jsx)(nt,{logo:t})}):(0,c.jsx)(nt,{logo:t})}function ot(e){let{copyright:t}=e;return(0,c.jsx)("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function at(e){let{style:t,links:n,logo:r,copyright:a}=e;return(0,c.jsx)("footer",{className:(0,o.A)("footer",{"footer--dark":"dark"===t}),children:(0,c.jsxs)("div",{className:"container container-fluid",children:[n,(r||a)&&(0,c.jsxs)("div",{className:"footer__bottom text--center",children:[r&&(0,c.jsx)("div",{className:"margin-bottom--sm",children:r}),a]})]})})}function it(){const{footer:e}=(0,w.p)();if(!e)return null;const{copyright:t,links:n,logo:r,style:o}=e;return(0,c.jsx)(at,{style:o,links:n&&n.length>0&&(0,c.jsx)(Je,{links:n}),logo:r&&(0,c.jsx)(rt,{logo:r}),copyright:t&&(0,c.jsx)(ot,{copyright:t})})}const lt=r.memo(it),st=(0,P.fM)([M.a,k.oq,L.Tv,xe.VQ,i.Jx,function(e){let{children:t}=e;return(0,c.jsx)(N.y_,{children:(0,c.jsx)(j.e,{children:(0,c.jsx)(R,{children:t})})})}]);function ut(e){let{children:t}=e;return(0,c.jsx)(st,{children:t})}var ct=n(1107);function dt(e){let{error:t,tryAgain:n}=e;return(0,c.jsx)("main",{className:"container margin-vert--xl",children:(0,c.jsx)("div",{className:"row",children:(0,c.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,c.jsx)(ct.A,{as:"h1",className:"hero__title",children:(0,c.jsx)(s.A,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed",children:"This page crashed."})}),(0,c.jsx)("div",{className:"margin-vert--lg",children:(0,c.jsx)(De,{onClick:n,className:"button button--primary shadow--lw"})}),(0,c.jsx)("hr",{}),(0,c.jsx)("div",{className:"margin-vert--md",children:(0,c.jsx)(Ie,{error:t})})]})})})}const pt={mainWrapper:"mainWrapper_z2l0"};function ft(e){const{children:t,noFooter:n,wrapperClassName:r,title:l,description:s}=e;return(0,y.J)(),(0,c.jsxs)(ut,{children:[(0,c.jsx)(i.be,{title:l,description:s}),(0,c.jsx)(v,{}),(0,c.jsx)(T,{}),(0,c.jsx)(He,{}),(0,c.jsx)("div",{id:d,className:(0,o.A)(h.G.wrapper.main,pt.mainWrapper,r),children:(0,c.jsx)(a.A,{fallback:e=>(0,c.jsx)(dt,{...e}),children:t})}),!n&&(0,c.jsx)(lt,{})]})}},3465:(e,t,n)=>{"use strict";n.d(t,{A:()=>c});n(6540);var r=n(8774),o=n(6025),a=n(4586),i=n(6342),l=n(1122),s=n(4848);function u(e){let{logo:t,alt:n,imageClassName:r}=e;const a={light:(0,o.A)(t.src),dark:(0,o.A)(t.srcDark||t.src)},i=(0,s.jsx)(l.A,{className:t.className,sources:a,height:t.height,width:t.width,alt:n,style:t.style});return r?(0,s.jsx)("div",{className:r,children:i}):i}function c(e){const{siteConfig:{title:t}}=(0,a.A)(),{navbar:{title:n,logo:l}}=(0,i.p)(),{imageClassName:c,titleClassName:d,...p}=e,f=(0,o.A)(l?.href||"/"),m=n?"":t,g=l?.alt??m;return(0,s.jsxs)(r.A,{to:f,...p,...l?.target&&{target:l.target},children:[l&&(0,s.jsx)(u,{logo:l,alt:g,imageClassName:c}),null!=n&&(0,s.jsx)("b",{className:d,children:n})]})}},1463:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});n(6540);var r=n(5260),o=n(4848);function a(e){let{locale:t,version:n,tag:a}=e;const i=t;return(0,o.jsxs)(r.A,{children:[t&&(0,o.jsx)("meta",{name:"docusaurus_locale",content:t}),n&&(0,o.jsx)("meta",{name:"docusaurus_version",content:n}),a&&(0,o.jsx)("meta",{name:"docusaurus_tag",content:a}),i&&(0,o.jsx)("meta",{name:"docsearch:language",content:i}),n&&(0,o.jsx)("meta",{name:"docsearch:version",content:n}),a&&(0,o.jsx)("meta",{name:"docsearch:docusaurus_tag",content:a})]})}},1122:(e,t,n)=>{"use strict";n.d(t,{A:()=>c});var r=n(6540),o=n(5066),a=n(2303),i=n(5293);const l={themedComponent:"themedComponent_mlkZ","themedComponent--light":"themedComponent--light_NVdE","themedComponent--dark":"themedComponent--dark_xIcU"};var s=n(4848);function u(e){let{className:t,children:n}=e;const u=(0,a.A)(),{colorMode:c}=(0,i.G)();return(0,s.jsx)(s.Fragment,{children:(u?"dark"===c?["dark"]:["light"]:["light","dark"]).map((e=>{const a=n({theme:e,className:(0,o.A)(t,l.themedComponent,l[`themedComponent--${e}`])});return(0,s.jsx)(r.Fragment,{children:a},e)}))})}function c(e){const{sources:t,className:n,alt:r,...o}=e;return(0,s.jsx)(u,{className:n,children:e=>{let{theme:n,className:a}=e;return(0,s.jsx)("img",{src:t[n],alt:r,className:a,...o})}})}},1422:(e,t,n)=>{"use strict";n.d(t,{N:()=>y,u:()=>u});var r=n(6540),o=n(8193),a=n(205),i=n(3109),l=n(4848);const s="ease-in-out";function u(e){let{initialState:t}=e;const[n,o]=(0,r.useState)(t??!1),a=(0,r.useCallback)((()=>{o((e=>!e))}),[]);return{collapsed:n,setCollapsed:o,toggleCollapsed:a}}const c={display:"none",overflow:"hidden",height:"0px"},d={display:"block",overflow:"visible",height:"auto"};function p(e,t){const n=t?c:d;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function f(e){let{collapsibleRef:t,collapsed:n,animation:o}=e;const a=(0,r.useRef)(!1);(0,r.useEffect)((()=>{const e=t.current;function r(){const t=e.scrollHeight,n=o?.duration??function(e){if((0,i.O)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${o?.easing??s}`,height:`${t}px`}}function l(){const t=r();e.style.transition=t.transition,e.style.height=t.height}if(!a.current)return p(e,n),void(a.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(l(),requestAnimationFrame((()=>{e.style.height=c.height,e.style.overflow=c.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{l()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,o])}function m(e){if(!o.A.canUseDOM)return e?c:d}function g(e){let{as:t="div",collapsed:n,children:o,animation:a,onCollapseTransitionEnd:i,className:s,disableSSRStyle:u}=e;const c=(0,r.useRef)(null);return f({collapsibleRef:c,collapsed:n,animation:a}),(0,l.jsx)(t,{ref:c,style:u?void 0:m(n),onTransitionEnd:e=>{"height"===e.propertyName&&(p(c.current,n),i?.(n))},className:s,children:o})}function h(e){let{collapsed:t,...n}=e;const[o,i]=(0,r.useState)(!t),[s,u]=(0,r.useState)(t);return(0,a.A)((()=>{t||i(!0)}),[t]),(0,a.A)((()=>{o&&u(t)}),[o,t]),o?(0,l.jsx)(g,{...n,collapsed:s}):null}function y(e){let{lazy:t,...n}=e;const r=t?h:g;return(0,l.jsx)(r,{...n})}},5041:(e,t,n)=>{"use strict";n.d(t,{Mj:()=>g,oq:()=>m});var r=n(6540),o=n(2303),a=n(9466),i=n(9532),l=n(6342),s=n(4848);const u=(0,a.Wf)("docusaurus.announcement.dismiss"),c=(0,a.Wf)("docusaurus.announcement.id"),d=()=>"true"===u.get(),p=e=>u.set(String(e)),f=r.createContext(null);function m(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,l.p)(),t=(0,o.A)(),[n,a]=(0,r.useState)((()=>!!t&&d()));(0,r.useEffect)((()=>{a(d())}),[]);const i=(0,r.useCallback)((()=>{p(!0),a(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=c.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;c.set(t),r&&p(!1),!r&&d()||a(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return(0,s.jsx)(f.Provider,{value:n,children:t})}function g(){const e=(0,r.useContext)(f);if(!e)throw new i.dV("AnnouncementBarProvider");return e}},5293:(e,t,n)=>{"use strict";n.d(t,{G:()=>y,a:()=>h});var r=n(6540),o=n(8193),a=n(9532),i=n(9466),l=n(6342),s=n(4848);const u=r.createContext(void 0),c="theme",d=(0,i.Wf)(c),p={light:"light",dark:"dark"},f=e=>e===p.dark?p.dark:p.light,m=e=>o.A.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e),g=e=>{d.set(f(e))};function h(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.p)(),[o,a]=(0,r.useState)(m(e));(0,r.useEffect)((()=>{t&&d.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:o=!0}=r;t?(a(t),o&&g(t)):(a(n?window.matchMedia("(prefers-color-scheme: dark)").matches?p.dark:p.light:e),d.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",f(o))}),[o]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==c)return;const t=d.get();null!==t&&i(f(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const s=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||s.current?s.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:o,setColorMode:i,get isDarkTheme(){return o===p.dark},setLightTheme(){i(p.light)},setDarkTheme(){i(p.dark)}})),[o,i])}();return(0,s.jsx)(u.Provider,{value:n,children:t})}function y(){const e=(0,r.useContext)(u);if(null==e)throw new a.dV("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},5597:(e,t,n)=>{"use strict";n.d(t,{VQ:()=>y,g1:()=>v});var r=n(6540),o=n(4070),a=n(7065),i=n(6342),l=n(1754),s=n(9532),u=n(9466),c=n(4848);const d=e=>`docs-preferred-version-${e}`,p={save:(e,t,n)=>{(0,u.Wf)(d(e),{persistence:t}).set(n)},read:(e,t)=>(0,u.Wf)(d(e),{persistence:t}).get(),clear:(e,t)=>{(0,u.Wf)(d(e),{persistence:t}).del()}},f=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const m=r.createContext(null);function g(){const e=(0,o.Gy)(),t=(0,i.p)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[a,l]=(0,r.useState)((()=>f(n)));(0,r.useEffect)((()=>{l(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function o(e){const t=p.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(p.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,o(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[a,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){p.save(e,t,n),l((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function h(e){let{children:t}=e;const n=g();return(0,c.jsx)(m.Provider,{value:n,children:t})}function y(e){let{children:t}=e;return l.C5?(0,c.jsx)(h,{children:t}):(0,c.jsx)(c.Fragment,{children:t})}function b(){const e=(0,r.useContext)(m);if(!e)throw new s.dV("DocsPreferredVersionContextProvider");return e}function v(e){void 0===e&&(e=a.W);const t=(0,o.ht)(e),[n,i]=b(),{preferredVersionName:l}=n[e];return{preferredVersion:t.versions.find((e=>e.name===l))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}},6588:(e,t,n)=>{"use strict";n.d(t,{V:()=>s,t:()=>u});var r=n(6540),o=n(9532),a=n(4848);const i=Symbol("EmptyContext"),l=r.createContext(i);function s(e){let{children:t,name:n,items:o}=e;const i=(0,r.useMemo)((()=>n&&o?{name:n,items:o}:null),[n,o]);return(0,a.jsx)(l.Provider,{value:i,children:t})}function u(){const e=(0,r.useContext)(l);if(e===i)throw new o.dV("DocsSidebarProvider");return e}},2252:(e,t,n)=>{"use strict";n.d(t,{n:()=>l,r:()=>s});var r=n(6540),o=n(9532),a=n(4848);const i=r.createContext(null);function l(e){let{children:t,version:n}=e;return(0,a.jsx)(i.Provider,{value:n,children:t})}function s(){const e=(0,r.useContext)(i);if(null===e)throw new o.dV("DocsVersionProvider");return e}},9876:(e,t,n)=>{"use strict";n.d(t,{e:()=>f,M:()=>m});var r=n(6540),o=n(5600),a=n(4581),i=n(6347),l=n(9532);function s(e){!function(e){const t=(0,i.W6)(),n=(0,l._q)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}var u=n(6342),c=n(4848);const d=r.createContext(void 0);function p(){const e=function(){const e=(0,o.YL)(),{items:t}=(0,u.p)().navbar;return 0===t.length&&!e.component}(),t=(0,a.l)(),n=!e&&"mobile"===t,[i,l]=(0,r.useState)(!1);s((()=>{if(i)return l(!1),!1}));const c=(0,r.useCallback)((()=>{l((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&l(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:c,shown:i})),[e,n,c,i])}function f(e){let{children:t}=e;const n=p();return(0,c.jsx)(d.Provider,{value:n,children:t})}function m(){const e=r.useContext(d);if(void 0===e)throw new l.dV("NavbarMobileSidebarProvider");return e}},5600:(e,t,n)=>{"use strict";n.d(t,{GX:()=>u,YL:()=>s,y_:()=>l});var r=n(6540),o=n(9532),a=n(4848);const i=r.createContext(null);function l(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return(0,a.jsx)(i.Provider,{value:n,children:t})}function s(){const e=(0,r.useContext)(i);if(!e)throw new o.dV("NavbarSecondaryMenuContentProvider");return e[0]}function u(e){let{component:t,props:n}=e;const a=(0,r.useContext)(i);if(!a)throw new o.dV("NavbarSecondaryMenuContentProvider");const[,l]=a,s=(0,o.Be)(n);return(0,r.useEffect)((()=>{l({component:t,props:s})}),[l,t,s]),(0,r.useEffect)((()=>()=>l({component:null,props:null})),[l]),null}},4090:(e,t,n)=>{"use strict";n.d(t,{w:()=>o,J:()=>a});var r=n(6540);const o="navigation-with-keyboard";function a(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(o),"mousedown"===e.type&&document.body.classList.remove(o)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(o),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},4581:(e,t,n)=>{"use strict";n.d(t,{l:()=>l});var r=n(6540),o=n(8193);const a={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function l(e){let{desktopBreakpoint:t=i}=void 0===e?{}:e;const[n,l]=(0,r.useState)((()=>"ssr"));return(0,r.useEffect)((()=>{function e(){l(function(e){if(!o.A.canUseDOM)throw new Error("getWindowSize() should only be called after React hydration");return window.innerWidth>e?a.desktop:a.mobile}(t))}return e(),window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}}),[t]),n}},7559:(e,t,n)=>{"use strict";n.d(t,{G:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",unlistedBanner:"theme-unlisted-banner",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{blogFooterTagsRow:"theme-blog-footer-tags-row",blogFooterEditMetaRow:"theme-blog-footer-edit-meta-row"},pages:{pageFooterEditMetaRow:"theme-pages-footer-edit-meta-row"}}},3109:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{O:()=>r})},1754:(e,t,n)=>{"use strict";n.d(t,{d1:()=>A,Nr:()=>m,w8:()=>b,C5:()=>p,$S:()=>g,cC:()=>f,B5:()=>_,Vd:()=>S,QB:()=>E,fW:()=>C,OF:()=>x,Y:()=>w});var r=n(6540),o=n(6347),a=n(2831),i=n(4070),l=n(5597),s=n(2252),u=n(6588);function c(e){return Array.from(new Set(e))}var d=n(9169);const p=!!i.Gy;function f(e){const t=(0,s.r)();if(!e)return;const n=t.docs[e];if(!n)throw new Error(`no version doc found by id=${e}`);return n}function m(e){return"link"!==e.type||e.unlisted?"category"===e.type?function(e){if(e.href&&!e.linkUnlisted)return e.href;for(const t of e.items){const e=m(t);if(e)return e}}(e):void 0:e.href}function g(){const{pathname:e}=(0,o.zy)(),t=(0,u.t)();if(!t)throw new Error("Unexpected: cant find current sidebar in context");const n=k({sidebarItems:t.items,pathname:e,onlyCategories:!0}).slice(-1)[0];if(!n)throw new Error(`${e} is not associated with a category. useCurrentSidebarCategory() should only be used on category index pages.`);return n}const h=(e,t)=>void 0!==e&&(0,d.ys)(e,t),y=(e,t)=>e.some((e=>b(e,t)));function b(e,t){return"link"===e.type?h(e.href,t):"category"===e.type&&(h(e.href,t)||y(e.items,t))}function v(e,t){switch(e.type){case"category":return b(e,t)||e.items.some((e=>v(e,t)));case"link":return!e.unlisted||b(e,t);default:return!0}}function w(e,t){return(0,r.useMemo)((()=>e.filter((e=>v(e,t)))),[e,t])}function k(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const o=[];return function e(t){for(const a of t)if("category"===a.type&&((0,d.ys)(a.href,n)||e(a.items))||"link"===a.type&&(0,d.ys)(a.href,n)){return r&&"category"!==a.type||o.unshift(a),!0}return!1}(t),o}function x(){const e=(0,u.t)(),{pathname:t}=(0,o.zy)(),n=(0,i.vT)()?.pluginData.breadcrumbs;return!1!==n&&e?k({sidebarItems:e.items,pathname:t}):null}function S(e){const{activeVersion:t}=(0,i.zK)(e),{preferredVersion:n}=(0,l.g1)(e),o=(0,i.r7)(e);return(0,r.useMemo)((()=>c([t,n,o].filter(Boolean))),[t,n,o])}function C(e,t){const n=S(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return r[1]}),[e,n])}function E(e,t){const n=S(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${c(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function _(e){let{route:t}=e;const n=(0,o.zy)(),r=(0,s.r)(),i=t.routes,l=i.find((e=>(0,o.B6)(n.pathname,e)));if(!l)return null;const u=l.sidebar,c=u?r.docsSidebars[u]:void 0;return{docElement:(0,a.v)(i),sidebarName:u,sidebarItems:c}}function A(e){return e.filter((e=>!("category"===e.type||"link"===e.type)||!!m(e)))}},1003:(e,t,n)=>{"use strict";n.d(t,{e3:()=>f,be:()=>d,Jx:()=>m});var r=n(6540),o=n(5066),a=n(5260),i=n(3102);function l(){const e=r.useContext(i.o);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var s=n(6025),u=n(4586);var c=n(4848);function d(e){let{title:t,description:n,keywords:r,image:o,children:i}=e;const l=function(e){const{siteConfig:t}=(0,u.A)(),{title:n,titleDelimiter:r}=t;return e?.trim().length?`${e.trim()} ${r} ${n}`:n}(t),{withBaseUrl:d}=(0,s.h)(),p=o?d(o,{absolute:!0}):void 0;return(0,c.jsxs)(a.A,{children:[t&&(0,c.jsx)("title",{children:l}),t&&(0,c.jsx)("meta",{property:"og:title",content:l}),n&&(0,c.jsx)("meta",{name:"description",content:n}),n&&(0,c.jsx)("meta",{property:"og:description",content:n}),r&&(0,c.jsx)("meta",{name:"keywords",content:Array.isArray(r)?r.join(","):r}),p&&(0,c.jsx)("meta",{property:"og:image",content:p}),p&&(0,c.jsx)("meta",{name:"twitter:image",content:p}),i]})}const p=r.createContext(void 0);function f(e){let{className:t,children:n}=e;const i=r.useContext(p),l=(0,o.A)(i,t);return(0,c.jsxs)(p.Provider,{value:l,children:[(0,c.jsx)(a.A,{children:(0,c.jsx)("html",{className:l})}),n]})}function m(e){let{children:t}=e;const n=l(),r=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const a=`plugin-id-${n.plugin.id}`;return(0,c.jsx)(f,{className:(0,o.A)(r,a),children:t})}},9532:(e,t,n)=>{"use strict";n.d(t,{Be:()=>u,ZC:()=>l,_q:()=>i,dV:()=>s,fM:()=>c});var r=n(6540),o=n(205),a=n(4848);function i(e){const t=(0,r.useRef)(e);return(0,o.A)((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function l(e){const t=(0,r.useRef)();return(0,o.A)((()=>{t.current=e})),t.current}class s extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function u(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function c(e){return t=>{let{children:n}=t;return(0,a.jsx)(a.Fragment,{children:e.reduceRight(((e,t)=>(0,a.jsx)(t,{children:e})),n)})}}},9169:(e,t,n)=>{"use strict";n.d(t,{Dt:()=>l,ys:()=>i});var r=n(6540),o=n(8328),a=n(4586);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function l(){const{baseUrl:e}=(0,a.A)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function o(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(o).flatMap((e=>e.routes??[])))}(n)}({routes:o.A,baseUrl:e})),[e])}},3104:(e,t,n)=>{"use strict";n.d(t,{Mq:()=>p,Tv:()=>u,gk:()=>f});var r=n(6540),o=n(8193),a=n(2303),i=(n(205),n(9532)),l=n(4848);const s=r.createContext(void 0);function u(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return(0,l.jsx)(s.Provider,{value:n,children:t})}function c(){const e=(0,r.useContext)(s);if(null==e)throw new i.dV("ScrollControllerProvider");return e}const d=()=>o.A.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function p(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=c(),o=(0,r.useRef)(d()),a=(0,i._q)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=d();a(e,o.current),o.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[a,n,...t])}function f(){const e=(0,r.useRef)(null),t=(0,a.A)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const o=document.documentElement.scrollTop;(n&&o>e||!n&&ot&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},2967:(e,t,n)=>{"use strict";n.d(t,{Cy:()=>r,tU:()=>o});n(4586);const r="default";function o(e,t){return`docs-${e}-${t}`}},9466:(e,t,n)=>{"use strict";n.d(t,{Wf:()=>s});n(6540);const r="localStorage";function o(e){let{key:t,oldValue:n,newValue:r,storage:o}=e;if(n===r)return;const a=document.createEvent("StorageEvent");a.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,o),window.dispatchEvent(a)}function a(e){if(void 0===e&&(e=r),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,i||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),i=!0),null}var t}let i=!1;const l={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function s(e,t){if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(e);const n=a(t?.persistence);return null===n?l:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{const r=n.getItem(e);n.setItem(e,t),o({key:e,oldValue:r,newValue:t,storage:n})}catch(r){console.error(`Docusaurus storage error, can't set ${e}=${t}`,r)}},del:()=>{try{const t=n.getItem(e);n.removeItem(e),o({key:e,oldValue:t,newValue:null,storage:n})}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}},listen:t=>{try{const r=r=>{r.storageArea===n&&r.key===e&&t(r)};return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)}catch(r){return console.error(`Docusaurus storage error, can't listen for changes of key=${e}`,r),()=>{}}}}}},2131:(e,t,n)=>{"use strict";n.d(t,{o:()=>i});var r=n(4586),o=n(6347),a=n(440);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:l}}=(0,r.A)(),{pathname:s}=(0,o.zy)(),u=(0,a.applyTrailingSlash)(s,{trailingSlash:n,baseUrl:e}),c=l===i?e:e.replace(`/${l}/`,"/"),d=u.replace(e,"");return{createUrl:function(e){let{locale:n,fullyQualified:r}=e;return`${r?t:""}${function(e){return e===i?`${c}`:`${c}${e}/`}(n)}${d}`}}}},5062:(e,t,n)=>{"use strict";n.d(t,{$:()=>i});var r=n(6540),o=n(6347),a=n(9532);function i(e){const t=(0,o.zy)(),n=(0,a.ZC)(t),i=(0,a._q)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},6342:(e,t,n)=>{"use strict";n.d(t,{p:()=>o});var r=n(4586);function o(){return(0,r.A)().siteConfig.themeConfig}},2983:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.removeTrailingSlash=t.addLeadingSlash=t.addTrailingSlash=void 0;const r=n(2566);function o(e){return e.endsWith("/")?e:`${e}/`}function a(e){return(0,r.removeSuffix)(e,"/")}t.addTrailingSlash=o,t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[i]=e.split(/[#?]/),l="/"===i||i===r?i:(s=i,n?o(s):a(s));var s;return e.replace(i,l)},t.addLeadingSlash=function(e){return(0,r.addPrefix)(e,"/")},t.removeTrailingSlash=a},253:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},440:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.removePrefix=t.addSuffix=t.removeSuffix=t.addPrefix=t.removeTrailingSlash=t.addLeadingSlash=t.addTrailingSlash=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var o=n(2983);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(o).default}}),Object.defineProperty(t,"addTrailingSlash",{enumerable:!0,get:function(){return o.addTrailingSlash}}),Object.defineProperty(t,"addLeadingSlash",{enumerable:!0,get:function(){return o.addLeadingSlash}}),Object.defineProperty(t,"removeTrailingSlash",{enumerable:!0,get:function(){return o.removeTrailingSlash}});var a=n(2566);Object.defineProperty(t,"addPrefix",{enumerable:!0,get:function(){return a.addPrefix}}),Object.defineProperty(t,"removeSuffix",{enumerable:!0,get:function(){return a.removeSuffix}}),Object.defineProperty(t,"addSuffix",{enumerable:!0,get:function(){return a.addSuffix}}),Object.defineProperty(t,"removePrefix",{enumerable:!0,get:function(){return a.removePrefix}});var i=n(253);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return i.getErrorCausalChain}})},2566:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.removePrefix=t.addSuffix=t.removeSuffix=t.addPrefix=void 0,t.addPrefix=function(e,t){return e.startsWith(t)?e:`${t}${e}`},t.removeSuffix=function(e,t){return""===t?e:e.endsWith(t)?e.slice(0,-t.length):e},t.addSuffix=function(e,t){return e.endsWith(t)?e:`${e}${t}`},t.removePrefix=function(e,t){return e.startsWith(t)?e.slice(t.length):e}},1513:(e,t,n)=>{"use strict";n.d(t,{zR:()=>w,TM:()=>_,yJ:()=>f,sC:()=>T,AO:()=>p});var r=n(8168);function o(e){return"/"===e.charAt(0)}function a(e,t){for(var n=t,r=n+1,o=e.length;r=0;p--){var f=i[p];"."===f?a(i,p):".."===f?(a(i,p),d++):d&&(a(i,p),d--)}if(!u)for(;d--;d)i.unshift("..");!u||""===i[0]||i[0]&&o(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var l=n(1561);function s(e){return"/"===e.charAt(0)?e:"/"+e}function u(e){return"/"===e.charAt(0)?e.substr(1):e}function c(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function p(e){var t=e.pathname,n=e.search,r=e.hash,o=t||"/";return n&&"?"!==n&&(o+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(o+="#"===r.charAt(0)?r:"#"+r),o}function f(e,t,n,o){var a;"string"==typeof e?(a=function(e){var t=e||"/",n="",r="",o=t.indexOf("#");-1!==o&&(r=t.substr(o),t=t.substr(0,o));var a=t.indexOf("?");return-1!==a&&(n=t.substr(a),t=t.substr(0,a)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),a.state=t):(void 0===(a=(0,r.A)({},e)).pathname&&(a.pathname=""),a.search?"?"!==a.search.charAt(0)&&(a.search="?"+a.search):a.search="",a.hash?"#"!==a.hash.charAt(0)&&(a.hash="#"+a.hash):a.hash="",void 0!==t&&void 0===a.state&&(a.state=t));try{a.pathname=decodeURI(a.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+a.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(a.key=n),o?a.pathname?"/"!==a.pathname.charAt(0)&&(a.pathname=i(a.pathname,o.pathname)):a.pathname=o.pathname:a.pathname||(a.pathname="/"),a}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,o){if(null!=e){var a="function"==typeof e?e(t,n):e;"string"==typeof a?"function"==typeof r?r(a,o):o(!0):o(!1!==a)}else o(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,o):n.push(o),d({action:r,location:o,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",o=f(e,t,g(),w.location);c.confirmTransitionTo(o,r,n,(function(e){e&&(w.entries[w.index]=o,d({action:r,location:o}))}))},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=w.index+e;return t>=0&&t{"use strict";var r=n(4363),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||o}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var o=f(n);o&&o!==m&&e(t,o,r)}var i=c(n);d&&(i=i.concat(d(n)));for(var l=s(t),g=s(n),h=0;h{"use strict";e.exports=function(e,t,n,r,o,a,i,l){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,o,a,i,l],c=0;(s=new Error(t.replace(/%s/g,(function(){return u[c++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},4634:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},119:(e,t,n)=>{"use strict";n.r(t)},1043:(e,t,n)=>{"use strict";n.r(t)},5947:function(e,t,n){var r,o;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
'};function o(e,t,n){return en?n:e}function a(e){return 100*(-1+e)}function i(e,t,n){var o;return(o="translate3d"===r.positionUsing?{transform:"translate3d("+a(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+a(e)+"%,0)"}:{"margin-left":a(e)+"%"}).transition="all "+t+"ms "+n,o}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=o(e,r.minimum,1),n.status=1===e?null:e;var a=n.render(!t),u=a.querySelector(r.barSelector),c=r.speed,d=r.easing;return a.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,i(e,c,d)),1===e?(s(a,{transition:"none",opacity:1}),a.offsetWidth,setTimeout((function(){s(a,{transition:"all "+c+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),c)}),c)):setTimeout(t,c)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*o(Math.random()*t,.1,.95)),t=o(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var o,i=t.querySelector(r.barSelector),l=e?"-100":a(n.status||0),u=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(o=t.querySelector(r.spinnerSelector))&&f(o),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,o=e.length,a=t.charAt(0).toUpperCase()+t.slice(1);o--;)if((r=e[o]+a)in n)return r;return t}function o(e){return e=n(e),t[e]||(t[e]=r(e))}function a(e,t,n){t=o(t),e.style[t]=n}return function(e,t){var n,r,o=arguments;if(2==o.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&a(e,n,r);else a(e,o[1],o[2])}}();function u(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=p(e),r=n+t;u(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);u(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(o="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=o)},5302:(e,t,n)=>{var r=n(4634);e.exports=f,e.exports.parse=a,e.exports.compile=function(e,t){return l(a(e,t),t)},e.exports.tokensToFunction=l,e.exports.tokensToRegExp=p;var o=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function a(e,t){for(var n,r=[],a=0,i=0,l="",c=t&&t.delimiter||"/";null!=(n=o.exec(e));){var d=n[0],p=n[1],f=n.index;if(l+=e.slice(i,f),i=f+d.length,p)l+=p[1];else{var m=e[i],g=n[2],h=n[3],y=n[4],b=n[5],v=n[6],w=n[7];l&&(r.push(l),l="");var k=null!=g&&null!=m&&m!==g,x="+"===v||"*"===v,S="?"===v||"*"===v,C=n[2]||c,E=y||b;r.push({name:h||a++,prefix:g||"",delimiter:C,optional:S,repeat:x,partial:k,asterisk:!!w,pattern:E?u(E):w?".*":"[^"+s(C)+"]+?"})}}return i{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to WebPlatform.org documentation. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (.comment can become .namespace--comment) or replace them with your defined ones (like .editor__comment). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the highlightAll and highlightAllUnder methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},8722:(e,t,n)=>{const r=n(6969),o=n(8380),a=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...a,...Object.keys(Prism.languages)];o(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(3157).resolve(t)],delete Prism.languages[e],n(3157)(t),a.add(e)}))}i.silent=!1,e.exports=i},9700:()=>{!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,o,a){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(o,(function(e){if("function"==typeof a&&!a(e))return e;for(var o,l=i.length;-1!==n.code.indexOf(o=t(r,l));)++l;return i[l]=e,o})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var o=0,a=Object.keys(n.tokenStack);!function i(l){for(var s=0;s=a.length);s++){var u=l[s];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=a[o],d=n.tokenStack[c],p="string"==typeof u?u:u.content,f=t(r,c),m=p.indexOf(f);if(m>-1){++o;var g=p.substring(0,m),h=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),y=p.substring(m+f.length),b=[];g&&b.push.apply(b,i([g])),b.push(h),y&&b.push.apply(b,i([y])),"string"==typeof u?l.splice.apply(l,[s,1].concat(b)):u.content=b}}else u.content&&i(u.content)}return l}(n.tokens)}}}})}(Prism)},8692:(e,t,n)=>{var r={"./":8722};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=8692},3157:(e,t,n)=>{var r={"./":8722};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=3157},8380:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n "));var l={},s=e[r];if(s){function u(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in l))for(var i in o(t,a),l[t]=!0,n[t])l[i]=!0}t(s.require,u),t(s.optional,u),t(s.modify,u)}n[r]=l,a.pop()}}return function(e){var t=n[e];return t||(o(e,r),t=n[e]),t}}function o(e){for(var t in e)return!0;return!1}return function(a,i,l){var s=function(e){var t={};for(var n in e){var r=e[n];for(var o in r)if("meta"!=o){var a=r[o];t[o]="string"==typeof a?{title:a}:a}}return t}(a),u=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var o in n={},e){var a=e[o];t(a&&a.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+o+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+o+" because it is a component.");n[t]=o}))}return n[r]||r}}(s);i=i.map(u),l=(l||[]).map(u);var c=n(i),d=n(l);i.forEach((function e(n){var r=s[n];t(r&&r.require,(function(t){t in d||(c[t]=!0,e(t))}))}));for(var p,f=r(s),m=c;o(m);){for(var g in p={},m){var h=s[g];t(h&&h.modify,(function(e){e in d&&(p[e]=!0)}))}for(var y in d)if(!(y in c))for(var b in f(y))if(b in c){p[y]=!0;break}for(var v in m=p)c[v]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,o){var a=o?o.series:void 0,i=o?o.parallel:e,l={},s={};function u(e){if(e in l)return l[e];s[e]=!0;var o,c=[];for(var d in t(e))d in n&&c.push(d);if(0===c.length)o=r(e);else{var p=i(c.map((function(e){var t=u(e);return delete s[e],t})));a?o=a(p,(function(){return r(e)})):r(e)}return l[e]=o}for(var c in n)u(c);var d=[];for(var p in s)d.push(l[p]);return i(d)}(f,c,t,n)}};return w}}();e.exports=t},2694:(e,t,n)=>{"use strict";var r=n(6925);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,a,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},5556:(e,t,n)=>{e.exports=n(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},2551:(e,t,n)=>{"use strict";var r=n(6540),o=n(9982);function a(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n