From f732dde1b346a0e1785592cc9f9e9de8d39dc3f7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 10 Apr 2024 20:11:22 +0000 Subject: [PATCH] deploy: 7eb273d12df850b2b68d972c512f1a6a43365bff --- 404.html | 6 +- assets/js/82635669.f88eaa82.js | 1 - assets/js/86a33aaf.82bd756b.js | 1 - assets/js/8d8d0699.009212e0.js | 1 + ...e341d.8fb01a0c.js => 8eee341d.e55155a0.js} | 2 +- assets/js/935f2afb.52424b99.js | 1 + assets/js/935f2afb.ac9a96ff.js | 1 - assets/js/c70cff8b.524eb410.js | 1 - assets/js/ff9fcb13.99e79098.js | 1 - assets/js/main.81450983.js | 2 - assets/js/main.eae327f2.js | 2 + ...CENSE.txt => main.eae327f2.js.LICENSE.txt} | 0 assets/js/runtime~main.54587adf.js | 1 - assets/js/runtime~main.c91b5ed1.js | 1 + blog/archive/index.html | 6 +- blog/discord/index.html | 8 +-- blog/index.html | 8 +-- .../index.html | 8 +-- blog/tags/bootstrap/index.html | 8 +-- blog/tags/index.html | 6 +- blog/tags/laminas/index.html | 8 +-- blog/tags/lm-commons/index.html | 8 +-- blog/tags/php/index.html | 8 +-- blog/tags/slack/index.html | 8 +-- blog/tags/support/index.html | 8 +-- blog/welcome/index.html | 8 +-- docs/LmcCors/index.html | 15 +++++ docs/LmcRbacMvc/index.html | 8 +-- docs/category/lmcadmin/index.html | 6 +- docs/category/lmccors/index.html | 14 ----- docs/category/lmcmail/index.html | 6 +- docs/category/lmcrbac/index.html | 6 +- docs/category/lmcuser/index.html | 6 +- docs/category/wiki-1/index.html | 6 +- docs/category/wiki/index.html | 6 +- docs/introduction/index.html | 8 +-- docs/lmc-admin/introduction/index.html | 8 +-- docs/lmc-cors/guide/index.html | 62 ------------------- docs/lmc-cors/installation/index.html | 20 ------ docs/lmc-cors/introduction/index.html | 32 ---------- docs/lmc-mail/Configuration/index.html | 8 +-- docs/lmc-mail/Installation/index.html | 8 +-- docs/lmc-mail/Introduction/index.html | 8 +-- docs/lmc-mail/Usage/index.html | 8 +-- .../advanced-customization/index.html | 8 +-- docs/lmc-rbac/installtion/index.html | 8 +-- docs/lmc-rbac/introduction/index.html | 8 +-- docs/lmc-user/installation/index.html | 8 +-- docs/lmc-user/introduction/index.html | 8 +-- docs/lmc-user/options/index.html | 8 +-- docs/lmc-user/support/index.html | 8 +-- .../index.html | 8 +-- .../index.html | 8 +-- .../index.html | 8 +-- .../index.html | 8 +-- .../index.html | 8 +-- .../index.html | 8 +-- .../index.html | 8 +-- .../index.html | 8 +-- .../index.html | 8 +-- .../index.html | 8 +-- .../index.html | 8 +-- index.html | 6 +- markdown-page/index.html | 8 +-- sitemap.xml | 2 +- 65 files changed, 196 insertions(+), 312 deletions(-) delete mode 100644 assets/js/82635669.f88eaa82.js delete mode 100644 assets/js/86a33aaf.82bd756b.js create mode 100644 assets/js/8d8d0699.009212e0.js rename assets/js/{8eee341d.8fb01a0c.js => 8eee341d.e55155a0.js} (57%) create mode 100644 assets/js/935f2afb.52424b99.js delete mode 100644 assets/js/935f2afb.ac9a96ff.js delete mode 100644 assets/js/c70cff8b.524eb410.js delete mode 100644 assets/js/ff9fcb13.99e79098.js delete mode 100644 assets/js/main.81450983.js create mode 100644 assets/js/main.eae327f2.js rename assets/js/{main.81450983.js.LICENSE.txt => main.eae327f2.js.LICENSE.txt} (100%) delete mode 100644 assets/js/runtime~main.54587adf.js create mode 100644 assets/js/runtime~main.c91b5ed1.js create mode 100644 docs/LmcCors/index.html delete mode 100644 docs/category/lmccors/index.html delete mode 100644 docs/lmc-cors/guide/index.html delete mode 100644 docs/lmc-cors/installation/index.html delete mode 100644 docs/lmc-cors/introduction/index.html diff --git a/404.html b/404.html index e05d449..5a8ad76 100644 --- a/404.html +++ b/404.html @@ -5,10 +5,10 @@ Page Not Found | LM Commons - - + + -
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/assets/js/82635669.f88eaa82.js b/assets/js/82635669.f88eaa82.js deleted file mode 100644 index cb3ee49..0000000 --- a/assets/js/82635669.f88eaa82.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunklmc_github_io_docs=self.webpackChunklmc_github_io_docs||[]).push([[2422],{7409:i=>{i.exports=JSON.parse('{"title":"LmcCors","description":"LmcCors is a simple Laminas MVC module that helps you to deal with Cross-Origin Resource Sharing (CORS).","slug":"/category/lmccors","permalink":"/docs/category/lmccors","navigation":{"previous":{"title":"Requirements and Installation","permalink":"/docs/lmc-rbac/installtion"},"next":{"title":"Introduction","permalink":"/docs/lmc-cors/introduction"}}}')}}]); \ No newline at end of file diff --git a/assets/js/86a33aaf.82bd756b.js b/assets/js/86a33aaf.82bd756b.js deleted file mode 100644 index 79d02b8..0000000 --- a/assets/js/86a33aaf.82bd756b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunklmc_github_io_docs=self.webpackChunklmc_github_io_docs||[]).push([[5932],{2828:(o,e,t)=>{t.r(e),t.d(e,{assets:()=>l,contentTitle:()=>i,default:()=>m,frontMatter:()=>c,metadata:()=>r,toc:()=>d});var n=t(4848),s=t(8453);const c={},i="Installation",r={id:"lmc-cors/installation",title:"Installation",description:"Install the module by typing (or add it to your composer.json file):",source:"@site/docs/lmc-cors/02-installation.md",sourceDirName:"lmc-cors",slug:"/lmc-cors/installation",permalink:"/docs/lmc-cors/installation",draft:!1,unlisted:!1,editUrl:"https://github.com/lm-commons/tree/master/docs/lmc-cors/02-installation.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{},sidebar:"lmcCors",previous:{title:"Introduction",permalink:"/docs/lmc-cors/introduction"},next:{title:"Guide",permalink:"/docs/lmc-cors/guide"}},l={},d=[];function a(o){const e={a:"a",code:"code",h1:"h1",p:"p",pre:"pre",...(0,s.R)(),...o.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(e.h1,{id:"installation",children:"Installation"}),"\n",(0,n.jsxs)(e.p,{children:["Install the module by typing (or add it to your ",(0,n.jsx)(e.code,{children:"composer.json"})," file):"]}),"\n",(0,n.jsx)(e.pre,{children:(0,n.jsx)(e.code,{className:"language-sh",children:"$ php composer.phar require lm-commons/lmc-cors\n"})}),"\n",(0,n.jsxs)(e.p,{children:['Then, enable it by adding "LmcCors" in your ',(0,n.jsx)(e.code,{children:"application.config.php"})," or ",(0,n.jsx)(e.code,{children:"modules.config.php"})," file."]}),"\n",(0,n.jsxs)(e.p,{children:["By default, LmcCors is configured to deny every CORS requests. To change that, you need to copy\nthe ",(0,n.jsx)(e.a,{href:"https://github.com/LM-Commons/LmcCors/blob/master/config/lmc_cors.global.php.dist",children:(0,n.jsx)(e.code,{children:"config/lmc_cors.global.php.dist"})})," file to your ",(0,n.jsx)(e.code,{children:"autoload"})," folder\n(remove the ",(0,n.jsx)(e.code,{children:".dist"})," extension), and modify it to suit your needs."]})]})}function m(o={}){const{wrapper:e}={...(0,s.R)(),...o.components};return e?(0,n.jsx)(e,{...o,children:(0,n.jsx)(a,{...o})}):a(o)}},8453:(o,e,t)=>{t.d(e,{R:()=>i,x:()=>r});var n=t(6540);const s={},c=n.createContext(s);function i(o){const e=n.useContext(c);return n.useMemo((function(){return"function"==typeof o?o(e):{...e,...o}}),[e,o])}function r(o){let e;return e=o.disableParentContext?"function"==typeof o.components?o.components(s):o.components||s:i(o.components),n.createElement(c.Provider,{value:e},o.children)}}}]); \ No newline at end of file diff --git a/assets/js/8d8d0699.009212e0.js b/assets/js/8d8d0699.009212e0.js new file mode 100644 index 0000000..42bddc1 --- /dev/null +++ b/assets/js/8d8d0699.009212e0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunklmc_github_io_docs=self.webpackChunklmc_github_io_docs||[]).push([[7623],{2723:(t,e,o)=>{o.r(e),o.d(e,{assets:()=>a,contentTitle:()=>r,default:()=>d,frontMatter:()=>i,metadata:()=>c,toc:()=>m});var n=o(4848),s=o(8453);const i={sidebar_position:4},r=void 0,c={id:"LmcCors",title:"LmcCors",description:"LmcCors is a simple Laminas MVC module that helps you to deal with Cross-Origin Resource Sharing (CORS).",source:"@site/docs/LmcCors.md",sourceDirName:".",slug:"/LmcCors",permalink:"/docs/LmcCors",draft:!1,unlisted:!1,editUrl:"https://github.com/lm-commons/tree/master/docs/LmcCors.md",tags:[],version:"current",sidebarPosition:4,frontMatter:{sidebar_position:4},sidebar:"mainSidebar",previous:{title:"Requirements and Installation",permalink:"/docs/lmc-rbac/installtion"},next:{title:"LmcAdmin",permalink:"/docs/category/lmcadmin"}},a={},m=[];function l(t){const e={a:"a",p:"p",...(0,s.R)(),...t.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(e.p,{children:"LmcCors is a simple Laminas MVC module that helps you to deal with Cross-Origin Resource Sharing (CORS)."}),"\n",(0,n.jsx)(e.p,{children:(0,n.jsx)(e.a,{href:"https://lm-commons.github.io/LmcCors",children:"Documentation"})})]})}function d(t={}){const{wrapper:e}={...(0,s.R)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(l,{...t})}):l(t)}},8453:(t,e,o)=>{o.d(e,{R:()=>r,x:()=>c});var n=o(6540);const s={},i=n.createContext(s);function r(t){const e=n.useContext(i);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function c(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(s):t.components||s:r(t.components),n.createElement(i.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/8eee341d.8fb01a0c.js b/assets/js/8eee341d.e55155a0.js similarity index 57% rename from assets/js/8eee341d.8fb01a0c.js rename to assets/js/8eee341d.e55155a0.js index 6fcb004..84573b3 100644 --- a/assets/js/8eee341d.8fb01a0c.js +++ b/assets/js/8eee341d.e55155a0.js @@ -1 +1 @@ -"use strict";(self.webpackChunklmc_github_io_docs=self.webpackChunklmc_github_io_docs||[]).push([[9698],{9681:i=>{i.exports=JSON.parse('{"title":"LmcAdmin","description":"Admin interface for Laminas MVC framework.","slug":"/category/lmcadmin","permalink":"/docs/category/lmcadmin","navigation":{"previous":{"title":"Guide","permalink":"/docs/lmc-cors/guide"},"next":{"title":"Introduction","permalink":"/docs/lmc-admin/introduction"}}}')}}]); \ No newline at end of file +"use strict";(self.webpackChunklmc_github_io_docs=self.webpackChunklmc_github_io_docs||[]).push([[9698],{9681:i=>{i.exports=JSON.parse('{"title":"LmcAdmin","description":"Admin interface for Laminas MVC framework.","slug":"/category/lmcadmin","permalink":"/docs/category/lmcadmin","navigation":{"previous":{"title":"LmcCors","permalink":"/docs/LmcCors"},"next":{"title":"Introduction","permalink":"/docs/lmc-admin/introduction"}}}')}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.52424b99.js b/assets/js/935f2afb.52424b99.js new file mode 100644 index 0000000..cf2fa2e --- /dev/null +++ b/assets/js/935f2afb.52424b99.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunklmc_github_io_docs=self.webpackChunklmc_github_io_docs||[]).push([[8581],{5610:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"mainSidebar":[{"type":"link","label":"Introduction","href":"/docs/introduction","docId":"introduction","unlisted":false},{"type":"category","label":"LmcUser","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Introduction","href":"/docs/lmc-user/introduction","docId":"lmc-user/introduction","unlisted":false},{"type":"link","label":"Installation","href":"/docs/lmc-user/installation","docId":"lmc-user/installation","unlisted":false},{"type":"link","label":"Options","href":"/docs/lmc-user/options","docId":"lmc-user/options","unlisted":false},{"type":"category","label":"Wiki","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"How to override built in view scripts","href":"/docs/lmc-user/wiki/how-to-override-built-in-view-scripts","docId":"lmc-user/wiki/how-to-override-built-in-view-scripts","unlisted":false},{"type":"link","label":"How to embed the login form on another page","href":"/docs/lmc-user/wiki/how-to-embed-the-login-form-on-another-page","docId":"lmc-user/wiki/how-to-embed-the-login-form-on-another-page","unlisted":false},{"type":"link","label":"How to modify the form objects used by LmcUser","href":"/docs/lmc-user/wiki/how-to-modify-the-form-objects-used-by-lmcuser","docId":"lmc-user/wiki/how-to-modify-the-form-objects-used-by-lmcuser","unlisted":false},{"type":"link","label":"How to store custom form values into your user entity at registration","href":"/docs/lmc-user/wiki/how-to-store-custom-form-values-into-your-user-entity-at-registration","docId":"lmc-user/wiki/how-to-store-custom-form-values-into-your-user-entity-at-registration","unlisted":false},{"type":"link","label":"How to perform a custom action when a new user account is created","href":"/docs/lmc-user/wiki/how-to-perform-a-custom-action-when-a-new-user-account-is-created","docId":"lmc-user/wiki/how-to-perform-a-custom-action-when-a-new-user-account-is-created","unlisted":false},{"type":"link","label":"How to choose which user fields are used during authentication","href":"/docs/lmc-user/wiki/how-to-choose-which-user-fields-are-used-during-authentication","docId":"lmc-user/wiki/how-to-choose-which-user-fields-are-used-during-authentication","unlisted":false},{"type":"link","label":"How to modify the login and/or registration form timeout","href":"/docs/lmc-user/wiki/how-to-modify-the-login-and-or-registration-form-timeout","docId":"lmc-user/wiki/how-to-modify-the-login-and-or-registration-form-timeout","unlisted":false},{"type":"link","label":"How to check if the user is logged in","href":"/docs/lmc-user/wiki/how-to-check-if-the-user-is-logged-in","docId":"lmc-user/wiki/how-to-check-if-the-user-is-logged-in","unlisted":false},{"type":"link","label":"How to change password and email (not complete)","href":"/docs/lmc-user/wiki/how-to-change-password-and-email","docId":"lmc-user/wiki/how-to-change-password-and-email","unlisted":false},{"type":"link","label":"How to configure a session timeout","href":"/docs/lmc-user/wiki/how-to-configure-a-session-timeout","docId":"lmc-user/wiki/how-to-configure-a-session-timeout","unlisted":false},{"type":"link","label":"How to secure sessions against session hijacking attacks","href":"/docs/lmc-user/wiki/how-to-secure-sessions-against-session-hijacking-attacks","docId":"lmc-user/wiki/how-to-secure-sessions-against-session-hijacking-attacks","unlisted":false}],"href":"/docs/category/wiki"},{"type":"link","label":"Support","href":"/docs/lmc-user/support","docId":"lmc-user/support","unlisted":false}],"href":"/docs/category/lmcuser"},{"type":"link","label":"LmcRbacMvc","href":"/docs/LmcRbacMvc","docId":"LmcRbacMvc","unlisted":false},{"type":"category","label":"LmcRbac","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Introduction","href":"/docs/lmc-rbac/introduction","docId":"lmc-rbac/introduction","unlisted":false},{"type":"link","label":"Requirements and Installation","href":"/docs/lmc-rbac/installtion","docId":"lmc-rbac/installtion","unlisted":false}],"href":"/docs/category/lmcrbac"},{"type":"link","label":"LmcCors","href":"/docs/LmcCors","docId":"LmcCors","unlisted":false},{"type":"category","label":"LmcAdmin","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Introduction","href":"/docs/lmc-admin/introduction","docId":"lmc-admin/introduction","unlisted":false}],"href":"/docs/category/lmcadmin"},{"type":"category","label":"LmcMail","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Introduction","href":"/docs/lmc-mail/Introduction","docId":"lmc-mail/Introduction","unlisted":false},{"type":"link","label":"Installation","href":"/docs/lmc-mail/Installation","docId":"lmc-mail/Installation","unlisted":false},{"type":"link","label":"Configuration","href":"/docs/lmc-mail/Configuration","docId":"lmc-mail/Configuration","unlisted":false},{"type":"link","label":"Usage","href":"/docs/lmc-mail/Usage","docId":"lmc-mail/Usage","unlisted":false},{"type":"link","label":"Advanced Configuration","href":"/docs/lmc-mail/advanced-customization","docId":"lmc-mail/advanced-customization","unlisted":false}],"href":"/docs/category/lmcmail"}],"lmcRbacMvc":[],"lmcUser":[{"type":"link","label":"Introduction","href":"/docs/lmc-user/introduction","docId":"lmc-user/introduction","unlisted":false},{"type":"link","label":"Installation","href":"/docs/lmc-user/installation","docId":"lmc-user/installation","unlisted":false},{"type":"link","label":"Options","href":"/docs/lmc-user/options","docId":"lmc-user/options","unlisted":false},{"type":"category","label":"Wiki","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"How to override built in view scripts","href":"/docs/lmc-user/wiki/how-to-override-built-in-view-scripts","docId":"lmc-user/wiki/how-to-override-built-in-view-scripts","unlisted":false},{"type":"link","label":"How to embed the login form on another page","href":"/docs/lmc-user/wiki/how-to-embed-the-login-form-on-another-page","docId":"lmc-user/wiki/how-to-embed-the-login-form-on-another-page","unlisted":false},{"type":"link","label":"How to modify the form objects used by LmcUser","href":"/docs/lmc-user/wiki/how-to-modify-the-form-objects-used-by-lmcuser","docId":"lmc-user/wiki/how-to-modify-the-form-objects-used-by-lmcuser","unlisted":false},{"type":"link","label":"How to store custom form values into your user entity at registration","href":"/docs/lmc-user/wiki/how-to-store-custom-form-values-into-your-user-entity-at-registration","docId":"lmc-user/wiki/how-to-store-custom-form-values-into-your-user-entity-at-registration","unlisted":false},{"type":"link","label":"How to perform a custom action when a new user account is created","href":"/docs/lmc-user/wiki/how-to-perform-a-custom-action-when-a-new-user-account-is-created","docId":"lmc-user/wiki/how-to-perform-a-custom-action-when-a-new-user-account-is-created","unlisted":false},{"type":"link","label":"How to choose which user fields are used during authentication","href":"/docs/lmc-user/wiki/how-to-choose-which-user-fields-are-used-during-authentication","docId":"lmc-user/wiki/how-to-choose-which-user-fields-are-used-during-authentication","unlisted":false},{"type":"link","label":"How to modify the login and/or registration form timeout","href":"/docs/lmc-user/wiki/how-to-modify-the-login-and-or-registration-form-timeout","docId":"lmc-user/wiki/how-to-modify-the-login-and-or-registration-form-timeout","unlisted":false},{"type":"link","label":"How to check if the user is logged in","href":"/docs/lmc-user/wiki/how-to-check-if-the-user-is-logged-in","docId":"lmc-user/wiki/how-to-check-if-the-user-is-logged-in","unlisted":false},{"type":"link","label":"How to change password and email (not complete)","href":"/docs/lmc-user/wiki/how-to-change-password-and-email","docId":"lmc-user/wiki/how-to-change-password-and-email","unlisted":false},{"type":"link","label":"How to configure a session timeout","href":"/docs/lmc-user/wiki/how-to-configure-a-session-timeout","docId":"lmc-user/wiki/how-to-configure-a-session-timeout","unlisted":false},{"type":"link","label":"How to secure sessions against session hijacking attacks","href":"/docs/lmc-user/wiki/how-to-secure-sessions-against-session-hijacking-attacks","docId":"lmc-user/wiki/how-to-secure-sessions-against-session-hijacking-attacks","unlisted":false}],"href":"/docs/category/wiki-1"},{"type":"link","label":"Support","href":"/docs/lmc-user/support","docId":"lmc-user/support","unlisted":false}],"lmcCors":[],"lmcRbac":[{"type":"link","label":"Introduction","href":"/docs/lmc-rbac/introduction","docId":"lmc-rbac/introduction","unlisted":false},{"type":"link","label":"Requirements and Installation","href":"/docs/lmc-rbac/installtion","docId":"lmc-rbac/installtion","unlisted":false}],"lmcMail":[{"type":"link","label":"Introduction","href":"/docs/lmc-mail/Introduction","docId":"lmc-mail/Introduction","unlisted":false},{"type":"link","label":"Installation","href":"/docs/lmc-mail/Installation","docId":"lmc-mail/Installation","unlisted":false},{"type":"link","label":"Configuration","href":"/docs/lmc-mail/Configuration","docId":"lmc-mail/Configuration","unlisted":false},{"type":"link","label":"Usage","href":"/docs/lmc-mail/Usage","docId":"lmc-mail/Usage","unlisted":false},{"type":"link","label":"Advanced Configuration","href":"/docs/lmc-mail/advanced-customization","docId":"lmc-mail/advanced-customization","unlisted":false}]},"docs":{"introduction":{"id":"introduction","title":"Introduction","description":"LM-Commons is a GitHub organization dedicated to the collaborative","sidebar":"mainSidebar"},"lmc-admin/introduction":{"id":"lmc-admin/introduction","title":"Introduction","description":"This is work in progress to convert to Laminas","sidebar":"mainSidebar"},"lmc-mail/advanced-customization":{"id":"lmc-mail/advanced-customization","title":"Advanced Configuration","description":"LmcMail can be customized to the applications needs.","sidebar":"lmcMail"},"lmc-mail/Configuration":{"id":"lmc-mail/Configuration","title":"Configuration","description":"LmcMail supports the Laminas SMTP Mail Transport or the Laminas File Mail Transport and this is configured by the transport config key in the lmcmail.local.php file:","sidebar":"lmcMail"},"lmc-mail/Installation":{"id":"lmc-mail/Installation","title":"Installation","description":"Install the module via Composer:","sidebar":"lmcMail"},"lmc-mail/Introduction":{"id":"lmc-mail/Introduction","title":"Introduction","description":"LmcMail is an email service module that provides the ability to use the View Manager of a Laminas MVC application","sidebar":"lmcMail"},"lmc-mail/Usage":{"id":"lmc-mail/Usage","title":"Usage","description":"The Mail service can be retrieved from the service manager:","sidebar":"lmcMail"},"lmc-rbac/installtion":{"id":"lmc-rbac/installtion","title":"Requirements and Installation","description":"Requirements","sidebar":"lmcRbac"},"lmc-rbac/introduction":{"id":"lmc-rbac/introduction","title":"Introduction","description":"Role-based access control module to provide additional features on top of Zend\\\\Permissions\\\\Rbac","sidebar":"lmcRbac"},"lmc-user/installation":{"id":"lmc-user/installation","title":"Installation","description":"Main Setup","sidebar":"lmcUser"},"lmc-user/introduction":{"id":"lmc-user/introduction","title":"Introduction","description":"LmcUser is a user registration and authentication module for Laminas.","sidebar":"lmcUser"},"lmc-user/options":{"id":"lmc-user/options","title":"Options","description":"The LmcUser module has some options to allow you to quickly customize the basic","sidebar":"lmcUser"},"lmc-user/support":{"id":"lmc-user/support","title":"Support","description":"- File issues at https://github.com/LM-Commons/LmcUser/issues.","sidebar":"lmcUser"},"lmc-user/wiki/how-to-change-password-and-email":{"id":"lmc-user/wiki/how-to-change-password-and-email","title":"How to change password and email (not complete)","description":"http://DomainName/user/","sidebar":"lmcUser"},"lmc-user/wiki/how-to-check-if-the-user-is-logged-in":{"id":"lmc-user/wiki/how-to-check-if-the-user-is-logged-in","title":"How to check if the user is logged in","description":"Task","sidebar":"lmcUser"},"lmc-user/wiki/how-to-choose-which-user-fields-are-used-during-authentication":{"id":"lmc-user/wiki/how-to-choose-which-user-fields-are-used-during-authentication","title":"How to choose which user fields are used during authentication","description":"Task","sidebar":"lmcUser"},"lmc-user/wiki/how-to-configure-a-session-timeout":{"id":"lmc-user/wiki/how-to-configure-a-session-timeout","title":"How to configure a session timeout","description":"Task","sidebar":"lmcUser"},"lmc-user/wiki/how-to-embed-the-login-form-on-another-page":{"id":"lmc-user/wiki/how-to-embed-the-login-form-on-another-page","title":"How to embed the login form on another page","description":"Task","sidebar":"lmcUser"},"lmc-user/wiki/how-to-modify-the-form-objects-used-by-lmcuser":{"id":"lmc-user/wiki/how-to-modify-the-form-objects-used-by-lmcuser","title":"How to modify the form objects used by LmcUser","description":"Task","sidebar":"lmcUser"},"lmc-user/wiki/how-to-modify-the-login-and-or-registration-form-timeout":{"id":"lmc-user/wiki/how-to-modify-the-login-and-or-registration-form-timeout","title":"How to modify the login and/or registration form timeout","description":"Task","sidebar":"lmcUser"},"lmc-user/wiki/how-to-override-built-in-view-scripts":{"id":"lmc-user/wiki/how-to-override-built-in-view-scripts","title":"How to override built in view scripts","description":"Task","sidebar":"lmcUser"},"lmc-user/wiki/how-to-perform-a-custom-action-when-a-new-user-account-is-created":{"id":"lmc-user/wiki/how-to-perform-a-custom-action-when-a-new-user-account-is-created","title":"How to perform a custom action when a new user account is created","description":"Task","sidebar":"lmcUser"},"lmc-user/wiki/how-to-secure-sessions-against-session-hijacking-attacks":{"id":"lmc-user/wiki/how-to-secure-sessions-against-session-hijacking-attacks","title":"How to secure sessions against session hijacking attacks","description":"Task","sidebar":"lmcUser"},"lmc-user/wiki/how-to-store-custom-form-values-into-your-user-entity-at-registration":{"id":"lmc-user/wiki/how-to-store-custom-form-values-into-your-user-entity-at-registration","title":"How to store custom form values into your user entity at registration","description":"Ref, using ZF 2.1.4 at the time this was written","sidebar":"lmcUser"},"LmcCors":{"id":"LmcCors","title":"LmcCors","description":"LmcCors is a simple Laminas MVC module that helps you to deal with Cross-Origin Resource Sharing (CORS).","sidebar":"mainSidebar"},"LmcRbacMvc":{"id":"LmcRbacMvc","title":"LmcRbacMvc","description":"LmcRbacMvc is a role-based access control Laminas MVC module to provide additional features on top of Laminas\\\\Permissions\\\\Rbac","sidebar":"mainSidebar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.ac9a96ff.js b/assets/js/935f2afb.ac9a96ff.js deleted file mode 100644 index 577bbeb..0000000 --- a/assets/js/935f2afb.ac9a96ff.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunklmc_github_io_docs=self.webpackChunklmc_github_io_docs||[]).push([[8581],{5610:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"mainSidebar":[{"type":"link","label":"Introduction","href":"/docs/introduction","docId":"introduction","unlisted":false},{"type":"category","label":"LmcUser","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Introduction","href":"/docs/lmc-user/introduction","docId":"lmc-user/introduction","unlisted":false},{"type":"link","label":"Installation","href":"/docs/lmc-user/installation","docId":"lmc-user/installation","unlisted":false},{"type":"link","label":"Options","href":"/docs/lmc-user/options","docId":"lmc-user/options","unlisted":false},{"type":"category","label":"Wiki","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"How to override built in view scripts","href":"/docs/lmc-user/wiki/how-to-override-built-in-view-scripts","docId":"lmc-user/wiki/how-to-override-built-in-view-scripts","unlisted":false},{"type":"link","label":"How to embed the login form on another page","href":"/docs/lmc-user/wiki/how-to-embed-the-login-form-on-another-page","docId":"lmc-user/wiki/how-to-embed-the-login-form-on-another-page","unlisted":false},{"type":"link","label":"How to modify the form objects used by LmcUser","href":"/docs/lmc-user/wiki/how-to-modify-the-form-objects-used-by-lmcuser","docId":"lmc-user/wiki/how-to-modify-the-form-objects-used-by-lmcuser","unlisted":false},{"type":"link","label":"How to store custom form values into your user entity at registration","href":"/docs/lmc-user/wiki/how-to-store-custom-form-values-into-your-user-entity-at-registration","docId":"lmc-user/wiki/how-to-store-custom-form-values-into-your-user-entity-at-registration","unlisted":false},{"type":"link","label":"How to perform a custom action when a new user account is created","href":"/docs/lmc-user/wiki/how-to-perform-a-custom-action-when-a-new-user-account-is-created","docId":"lmc-user/wiki/how-to-perform-a-custom-action-when-a-new-user-account-is-created","unlisted":false},{"type":"link","label":"How to choose which user fields are used during authentication","href":"/docs/lmc-user/wiki/how-to-choose-which-user-fields-are-used-during-authentication","docId":"lmc-user/wiki/how-to-choose-which-user-fields-are-used-during-authentication","unlisted":false},{"type":"link","label":"How to modify the login and/or registration form timeout","href":"/docs/lmc-user/wiki/how-to-modify-the-login-and-or-registration-form-timeout","docId":"lmc-user/wiki/how-to-modify-the-login-and-or-registration-form-timeout","unlisted":false},{"type":"link","label":"How to check if the user is logged in","href":"/docs/lmc-user/wiki/how-to-check-if-the-user-is-logged-in","docId":"lmc-user/wiki/how-to-check-if-the-user-is-logged-in","unlisted":false},{"type":"link","label":"How to change password and email (not complete)","href":"/docs/lmc-user/wiki/how-to-change-password-and-email","docId":"lmc-user/wiki/how-to-change-password-and-email","unlisted":false},{"type":"link","label":"How to configure a session timeout","href":"/docs/lmc-user/wiki/how-to-configure-a-session-timeout","docId":"lmc-user/wiki/how-to-configure-a-session-timeout","unlisted":false},{"type":"link","label":"How to secure sessions against session hijacking attacks","href":"/docs/lmc-user/wiki/how-to-secure-sessions-against-session-hijacking-attacks","docId":"lmc-user/wiki/how-to-secure-sessions-against-session-hijacking-attacks","unlisted":false}],"href":"/docs/category/wiki"},{"type":"link","label":"Support","href":"/docs/lmc-user/support","docId":"lmc-user/support","unlisted":false}],"href":"/docs/category/lmcuser"},{"type":"link","label":"LmcRbacMvc","href":"/docs/LmcRbacMvc","docId":"LmcRbacMvc","unlisted":false},{"type":"category","label":"LmcRbac","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Introduction","href":"/docs/lmc-rbac/introduction","docId":"lmc-rbac/introduction","unlisted":false},{"type":"link","label":"Requirements and Installation","href":"/docs/lmc-rbac/installtion","docId":"lmc-rbac/installtion","unlisted":false}],"href":"/docs/category/lmcrbac"},{"type":"category","label":"LmcCors","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Introduction","href":"/docs/lmc-cors/introduction","docId":"lmc-cors/introduction","unlisted":false},{"type":"link","label":"Installation","href":"/docs/lmc-cors/installation","docId":"lmc-cors/installation","unlisted":false},{"type":"link","label":"Guide","href":"/docs/lmc-cors/guide","docId":"lmc-cors/guide","unlisted":false}],"href":"/docs/category/lmccors"},{"type":"category","label":"LmcAdmin","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Introduction","href":"/docs/lmc-admin/introduction","docId":"lmc-admin/introduction","unlisted":false}],"href":"/docs/category/lmcadmin"},{"type":"category","label":"LmcMail","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Introduction","href":"/docs/lmc-mail/Introduction","docId":"lmc-mail/Introduction","unlisted":false},{"type":"link","label":"Installation","href":"/docs/lmc-mail/Installation","docId":"lmc-mail/Installation","unlisted":false},{"type":"link","label":"Configuration","href":"/docs/lmc-mail/Configuration","docId":"lmc-mail/Configuration","unlisted":false},{"type":"link","label":"Usage","href":"/docs/lmc-mail/Usage","docId":"lmc-mail/Usage","unlisted":false},{"type":"link","label":"Advanced Configuration","href":"/docs/lmc-mail/advanced-customization","docId":"lmc-mail/advanced-customization","unlisted":false}],"href":"/docs/category/lmcmail"}],"lmcRbacMvc":[],"lmcUser":[{"type":"link","label":"Introduction","href":"/docs/lmc-user/introduction","docId":"lmc-user/introduction","unlisted":false},{"type":"link","label":"Installation","href":"/docs/lmc-user/installation","docId":"lmc-user/installation","unlisted":false},{"type":"link","label":"Options","href":"/docs/lmc-user/options","docId":"lmc-user/options","unlisted":false},{"type":"category","label":"Wiki","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"How to override built in view scripts","href":"/docs/lmc-user/wiki/how-to-override-built-in-view-scripts","docId":"lmc-user/wiki/how-to-override-built-in-view-scripts","unlisted":false},{"type":"link","label":"How to embed the login form on another page","href":"/docs/lmc-user/wiki/how-to-embed-the-login-form-on-another-page","docId":"lmc-user/wiki/how-to-embed-the-login-form-on-another-page","unlisted":false},{"type":"link","label":"How to modify the form objects used by LmcUser","href":"/docs/lmc-user/wiki/how-to-modify-the-form-objects-used-by-lmcuser","docId":"lmc-user/wiki/how-to-modify-the-form-objects-used-by-lmcuser","unlisted":false},{"type":"link","label":"How to store custom form values into your user entity at registration","href":"/docs/lmc-user/wiki/how-to-store-custom-form-values-into-your-user-entity-at-registration","docId":"lmc-user/wiki/how-to-store-custom-form-values-into-your-user-entity-at-registration","unlisted":false},{"type":"link","label":"How to perform a custom action when a new user account is created","href":"/docs/lmc-user/wiki/how-to-perform-a-custom-action-when-a-new-user-account-is-created","docId":"lmc-user/wiki/how-to-perform-a-custom-action-when-a-new-user-account-is-created","unlisted":false},{"type":"link","label":"How to choose which user fields are used during authentication","href":"/docs/lmc-user/wiki/how-to-choose-which-user-fields-are-used-during-authentication","docId":"lmc-user/wiki/how-to-choose-which-user-fields-are-used-during-authentication","unlisted":false},{"type":"link","label":"How to modify the login and/or registration form timeout","href":"/docs/lmc-user/wiki/how-to-modify-the-login-and-or-registration-form-timeout","docId":"lmc-user/wiki/how-to-modify-the-login-and-or-registration-form-timeout","unlisted":false},{"type":"link","label":"How to check if the user is logged in","href":"/docs/lmc-user/wiki/how-to-check-if-the-user-is-logged-in","docId":"lmc-user/wiki/how-to-check-if-the-user-is-logged-in","unlisted":false},{"type":"link","label":"How to change password and email (not complete)","href":"/docs/lmc-user/wiki/how-to-change-password-and-email","docId":"lmc-user/wiki/how-to-change-password-and-email","unlisted":false},{"type":"link","label":"How to configure a session timeout","href":"/docs/lmc-user/wiki/how-to-configure-a-session-timeout","docId":"lmc-user/wiki/how-to-configure-a-session-timeout","unlisted":false},{"type":"link","label":"How to secure sessions against session hijacking attacks","href":"/docs/lmc-user/wiki/how-to-secure-sessions-against-session-hijacking-attacks","docId":"lmc-user/wiki/how-to-secure-sessions-against-session-hijacking-attacks","unlisted":false}],"href":"/docs/category/wiki-1"},{"type":"link","label":"Support","href":"/docs/lmc-user/support","docId":"lmc-user/support","unlisted":false}],"lmcCors":[{"type":"link","label":"Introduction","href":"/docs/lmc-cors/introduction","docId":"lmc-cors/introduction","unlisted":false},{"type":"link","label":"Installation","href":"/docs/lmc-cors/installation","docId":"lmc-cors/installation","unlisted":false},{"type":"link","label":"Guide","href":"/docs/lmc-cors/guide","docId":"lmc-cors/guide","unlisted":false}],"lmcRbac":[{"type":"link","label":"Introduction","href":"/docs/lmc-rbac/introduction","docId":"lmc-rbac/introduction","unlisted":false},{"type":"link","label":"Requirements and Installation","href":"/docs/lmc-rbac/installtion","docId":"lmc-rbac/installtion","unlisted":false}],"lmcMail":[{"type":"link","label":"Introduction","href":"/docs/lmc-mail/Introduction","docId":"lmc-mail/Introduction","unlisted":false},{"type":"link","label":"Installation","href":"/docs/lmc-mail/Installation","docId":"lmc-mail/Installation","unlisted":false},{"type":"link","label":"Configuration","href":"/docs/lmc-mail/Configuration","docId":"lmc-mail/Configuration","unlisted":false},{"type":"link","label":"Usage","href":"/docs/lmc-mail/Usage","docId":"lmc-mail/Usage","unlisted":false},{"type":"link","label":"Advanced Configuration","href":"/docs/lmc-mail/advanced-customization","docId":"lmc-mail/advanced-customization","unlisted":false}]},"docs":{"introduction":{"id":"introduction","title":"Introduction","description":"LM-Commons is a GitHub organization dedicated to the collaborative","sidebar":"mainSidebar"},"lmc-admin/introduction":{"id":"lmc-admin/introduction","title":"Introduction","description":"This is work in progress to convert to Laminas","sidebar":"mainSidebar"},"lmc-cors/guide":{"id":"lmc-cors/guide","title":"Guide","description":"Event registration","sidebar":"lmcCors"},"lmc-cors/installation":{"id":"lmc-cors/installation","title":"Installation","description":"Install the module by typing (or add it to your composer.json file):","sidebar":"lmcCors"},"lmc-cors/introduction":{"id":"lmc-cors/introduction","title":"Introduction","description":"LmcCors is a simple Laminas MVC module that helps you to deal with Cross-Origin Resource Sharing (CORS).","sidebar":"lmcCors"},"lmc-mail/advanced-customization":{"id":"lmc-mail/advanced-customization","title":"Advanced Configuration","description":"LmcMail can be customized to the applications needs.","sidebar":"lmcMail"},"lmc-mail/Configuration":{"id":"lmc-mail/Configuration","title":"Configuration","description":"LmcMail supports the Laminas SMTP Mail Transport or the Laminas File Mail Transport and this is configured by the transport config key in the lmcmail.local.php file:","sidebar":"lmcMail"},"lmc-mail/Installation":{"id":"lmc-mail/Installation","title":"Installation","description":"Install the module via Composer:","sidebar":"lmcMail"},"lmc-mail/Introduction":{"id":"lmc-mail/Introduction","title":"Introduction","description":"LmcMail is an email service module that provides the ability to use the View Manager of a Laminas MVC application","sidebar":"lmcMail"},"lmc-mail/Usage":{"id":"lmc-mail/Usage","title":"Usage","description":"The Mail service can be retrieved from the service manager:","sidebar":"lmcMail"},"lmc-rbac/installtion":{"id":"lmc-rbac/installtion","title":"Requirements and Installation","description":"Requirements","sidebar":"lmcRbac"},"lmc-rbac/introduction":{"id":"lmc-rbac/introduction","title":"Introduction","description":"Role-based access control module to provide additional features on top of Zend\\\\Permissions\\\\Rbac","sidebar":"lmcRbac"},"lmc-user/installation":{"id":"lmc-user/installation","title":"Installation","description":"Main Setup","sidebar":"lmcUser"},"lmc-user/introduction":{"id":"lmc-user/introduction","title":"Introduction","description":"LmcUser is a user registration and authentication module for Laminas.","sidebar":"lmcUser"},"lmc-user/options":{"id":"lmc-user/options","title":"Options","description":"The LmcUser module has some options to allow you to quickly customize the basic","sidebar":"lmcUser"},"lmc-user/support":{"id":"lmc-user/support","title":"Support","description":"- File issues at https://github.com/LM-Commons/LmcUser/issues.","sidebar":"lmcUser"},"lmc-user/wiki/how-to-change-password-and-email":{"id":"lmc-user/wiki/how-to-change-password-and-email","title":"How to change password and email (not complete)","description":"http://DomainName/user/","sidebar":"lmcUser"},"lmc-user/wiki/how-to-check-if-the-user-is-logged-in":{"id":"lmc-user/wiki/how-to-check-if-the-user-is-logged-in","title":"How to check if the user is logged in","description":"Task","sidebar":"lmcUser"},"lmc-user/wiki/how-to-choose-which-user-fields-are-used-during-authentication":{"id":"lmc-user/wiki/how-to-choose-which-user-fields-are-used-during-authentication","title":"How to choose which user fields are used during authentication","description":"Task","sidebar":"lmcUser"},"lmc-user/wiki/how-to-configure-a-session-timeout":{"id":"lmc-user/wiki/how-to-configure-a-session-timeout","title":"How to configure a session timeout","description":"Task","sidebar":"lmcUser"},"lmc-user/wiki/how-to-embed-the-login-form-on-another-page":{"id":"lmc-user/wiki/how-to-embed-the-login-form-on-another-page","title":"How to embed the login form on another page","description":"Task","sidebar":"lmcUser"},"lmc-user/wiki/how-to-modify-the-form-objects-used-by-lmcuser":{"id":"lmc-user/wiki/how-to-modify-the-form-objects-used-by-lmcuser","title":"How to modify the form objects used by LmcUser","description":"Task","sidebar":"lmcUser"},"lmc-user/wiki/how-to-modify-the-login-and-or-registration-form-timeout":{"id":"lmc-user/wiki/how-to-modify-the-login-and-or-registration-form-timeout","title":"How to modify the login and/or registration form timeout","description":"Task","sidebar":"lmcUser"},"lmc-user/wiki/how-to-override-built-in-view-scripts":{"id":"lmc-user/wiki/how-to-override-built-in-view-scripts","title":"How to override built in view scripts","description":"Task","sidebar":"lmcUser"},"lmc-user/wiki/how-to-perform-a-custom-action-when-a-new-user-account-is-created":{"id":"lmc-user/wiki/how-to-perform-a-custom-action-when-a-new-user-account-is-created","title":"How to perform a custom action when a new user account is created","description":"Task","sidebar":"lmcUser"},"lmc-user/wiki/how-to-secure-sessions-against-session-hijacking-attacks":{"id":"lmc-user/wiki/how-to-secure-sessions-against-session-hijacking-attacks","title":"How to secure sessions against session hijacking attacks","description":"Task","sidebar":"lmcUser"},"lmc-user/wiki/how-to-store-custom-form-values-into-your-user-entity-at-registration":{"id":"lmc-user/wiki/how-to-store-custom-form-values-into-your-user-entity-at-registration","title":"How to store custom form values into your user entity at registration","description":"Ref, using ZF 2.1.4 at the time this was written","sidebar":"lmcUser"},"LmcRbacMvc":{"id":"LmcRbacMvc","title":"LmcRbacMvc","description":"LmcRbacMvc is a role-based access control Laminas MVC module to provide additional features on top of Laminas\\\\Permissions\\\\Rbac","sidebar":"mainSidebar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/c70cff8b.524eb410.js b/assets/js/c70cff8b.524eb410.js deleted file mode 100644 index 5b55132..0000000 --- a/assets/js/c70cff8b.524eb410.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunklmc_github_io_docs=self.webpackChunklmc_github_io_docs||[]).push([[5032],{8379:(t,o,e)=>{e.r(o),e.d(o,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>r,metadata:()=>c,toc:()=>a});var s=e(4848),n=e(8453);const r={},i="Introduction",c={id:"lmc-cors/introduction",title:"Introduction",description:"LmcCors is a simple Laminas MVC module that helps you to deal with Cross-Origin Resource Sharing (CORS).",source:"@site/docs/lmc-cors/01-introduction.md",sourceDirName:"lmc-cors",slug:"/lmc-cors/introduction",permalink:"/docs/lmc-cors/introduction",draft:!1,unlisted:!1,editUrl:"https://github.com/lm-commons/tree/master/docs/lmc-cors/01-introduction.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"lmcCors",next:{title:"Installation",permalink:"/docs/lmc-cors/installation"}},l={},a=[{value:"What is CORS ?",id:"what-is-cors-",level:2},{value:"Support",id:"support",level:2}];function h(t){const o={a:"a",code:"code",h1:"h1",h2:"h2",li:"li",p:"p",ul:"ul",...(0,n.R)(),...t.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(o.h1,{id:"introduction",children:"Introduction"}),"\n",(0,s.jsx)(o.p,{children:"LmcCors is a simple Laminas MVC module that helps you to deal with Cross-Origin Resource Sharing (CORS)."}),"\n",(0,s.jsx)(o.p,{children:"It allows to easily configure your Laminas MVC application so that it automatically builds HTTP responses that follow the CORS documentation."}),"\n",(0,s.jsx)(o.h2,{id:"what-is-cors-",children:"What is CORS ?"}),"\n",(0,s.jsx)(o.p,{children:"CORS is a mechanism that allows to perform cross-origin requests from your browser."}),"\n",(0,s.jsxs)(o.p,{children:["For instance, let's say that your website is hosted in the domain ",(0,s.jsx)(o.code,{children:"http://example.com"}),".\nBy default, user agents won't be allowed to perform AJAX requests to another domain for security\nreasons (for instance ",(0,s.jsx)(o.code,{children:"http://funny-domain.com"}),")."]}),"\n",(0,s.jsx)(o.p,{children:"With CORS, you can allow your server to reply to such requests."}),"\n",(0,s.jsx)(o.p,{children:"You can find better documentation on how CORS works on the web:"}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsx)(o.li,{children:(0,s.jsx)(o.a,{href:"https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS",children:"Mozilla documentation about CORS"})}),"\n",(0,s.jsx)(o.li,{children:(0,s.jsx)(o.a,{href:"http://www.html5rocks.com/static/images/cors_server_flowchart.png",children:"CORS server flowchart"})}),"\n"]}),"\n",(0,s.jsx)(o.h2,{id:"support",children:"Support"}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsxs)(o.li,{children:["File issues at ",(0,s.jsx)(o.a,{href:"https://github.com/LM-Commons/LmcCors/issues",children:"https://github.com/LM-Commons/LmcCors/issues"}),"."]}),"\n",(0,s.jsxs)(o.li,{children:["Ask questions in the ",(0,s.jsx)(o.a,{href:"https://gitter.im/Lm-Commons/community",children:"LM-Commons gitter"})," chat."]}),"\n"]})]})}function u(t={}){const{wrapper:o}={...(0,n.R)(),...t.components};return o?(0,s.jsx)(o,{...t,children:(0,s.jsx)(h,{...t})}):h(t)}},8453:(t,o,e)=>{e.d(o,{R:()=>i,x:()=>c});var s=e(6540);const n={},r=s.createContext(n);function i(t){const o=s.useContext(r);return s.useMemo((function(){return"function"==typeof t?t(o):{...o,...t}}),[o,t])}function c(t){let o;return o=t.disableParentContext?"function"==typeof t.components?t.components(n):t.components||n:i(t.components),s.createElement(r.Provider,{value:o},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/ff9fcb13.99e79098.js b/assets/js/ff9fcb13.99e79098.js deleted file mode 100644 index ed45186..0000000 --- a/assets/js/ff9fcb13.99e79098.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunklmc_github_io_docs=self.webpackChunklmc_github_io_docs||[]).push([[7969],{5141:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>a,contentTitle:()=>i,default:()=>h,frontMatter:()=>r,metadata:()=>l,toc:()=>c});var t=n(4848),o=n(8453);const r={},i="Guide",l={id:"lmc-cors/guide",title:"Guide",description:"Event registration",source:"@site/docs/lmc-cors/03-guide.md",sourceDirName:"lmc-cors",slug:"/lmc-cors/guide",permalink:"/docs/lmc-cors/guide",draft:!1,unlisted:!1,editUrl:"https://github.com/lm-commons/tree/master/docs/lmc-cors/03-guide.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{},sidebar:"lmcCors",previous:{title:"Installation",permalink:"/docs/lmc-cors/installation"}},a={},c=[{value:"Event registration",id:"event-registration",level:2},{value:"Configuring the module",id:"configuring-the-module",level:2},{value:"Preflight request",id:"preflight-request",level:2},{value:"Actual request",id:"actual-request",level:2},{value:"Security concerns",id:"security-concerns",level:2},{value:"Custom schemes",id:"custom-schemes",level:2},{value:"Example",id:"example",level:2}];function d(e){const s={a:"a",code:"code",h1:"h1",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,o.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.h1,{id:"guide",children:"Guide"}),"\n",(0,t.jsx)(s.h2,{id:"event-registration",children:"Event registration"}),"\n",(0,t.jsxs)(s.p,{children:["LmcCors registers the ",(0,t.jsx)(s.code,{children:"LmcCors\\Mvc\\CorsRequestListener"})," with the ",(0,t.jsx)(s.code,{children:"MvcEvent::EVENT_ROUTE"})," event, with a priority\nof -1. This means that this listener is executed AFTER the route has been matched."]}),"\n",(0,t.jsx)(s.h2,{id:"configuring-the-module",children:"Configuring the module"}),"\n",(0,t.jsx)(s.p,{children:"As by default, all the various options are set globally for all routes:"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.code,{children:"allowed_origins"}),": (array) List of allowed origins. To allow any origin, you can use the wildcard (",(0,t.jsx)(s.code,{children:"*"}),") character. If\nmultiple origins are specified, LmcCors will automatically check the ",(0,t.jsx)(s.code,{children:'"Origin"'})," header's value, and only return the\nallowed domain (if any) in the ",(0,t.jsx)(s.code,{children:'"Allow-Access-Control-Origin"'})," response header. To allow any sub-domain, you can prefix\nthe domain with the wildcard character (i.e. ",(0,t.jsx)(s.code,{children:"*.example.com"}),'). Please note that you don\'t need to\nadd your host URI (so if your website is hosted as "example.com", "example.com" is automatically allowed.']}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.code,{children:"allowed_methods"}),": (array) List of allowed HTTP methods. Those methods will be returned for the preflight request to\nindicate which methods are allowed to the user agent. You can even specify custom HTTP verbs."]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.code,{children:"allowed_headers"}),": (array) List of allowed headers that will be returned for the preflight request. This indicates\nto the user agent which headers are permitted to be sent when doing the actual request."]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.code,{children:"max_age"}),": (int) Maximum age (seconds) the preflight request should be cached by the user agent. This prevents the\nuser agent from sending a preflight request for each request."]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.code,{children:"exposed_headers"}),": (array) List of response headers that are allowed to be read in the user agent. Please note that\nsome browsers do not implement this feature correctly."]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.code,{children:"allowed_credentials"}),": (boolean) If true, it allows the browser to send cookies along with the request."]}),"\n"]}),"\n",(0,t.jsxs)(s.p,{children:["If you want to configure specific routes, you can add ",(0,t.jsx)(s.code,{children:"ZfrCors\\Options\\CorsOptions::ROUTE_PARAM"})," to your route configuration:"]}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-php",children:" [\n 'allowed_origins' => ['*'],\n 'allowed_methods' => ['GET', 'POST', 'DELETE'],\n ],\n 'router' => [\n 'routes' => [\n 'readOnlyRoute' => [\n 'type' => 'literal',\n 'options' => [\n 'route' => '/foo/bar',\n 'defaults' => [\n // This will replace allowed_methods configuration to only allow GET requests\n // and only allow a specific origin instead of the wildcard origin\n LmcCors\\Options\\CorsOptions::ROUTE_PARAM => [\n 'allowed_origins' => ['http://example.org'],\n 'allowed_methods' => ['GET'],\n ],\n ],\n ],\n ],\n 'someAjaxCalls' => [\n 'type' => 'literal',\n 'options' => [\n 'route' => '/ajax',\n 'defaults' => [\n // This overrides the wildcard origin\n LmcCors\\Options\\CorsOptions::ROUTE_PARAM => [\n 'allowed_origins' => ['http://example.org'],\n ],\n ],\n ],\n 'may_terminate' => false,\n 'child_routes' => [\n 'blog' => [\n 'type' => 'literal',\n 'options' => [\n 'route' => '/blogpost',\n 'defaults' => [\n // This would only allow `http://example.org` to GET this route\n \\LmcCors\\Options\\CorsOptions::ROUTE_PARAM => [\n 'allowed_methods' => ['GET'],\n ],\n ],\n ],\n 'may_terminate' => true,\n 'child_routes' => [\n 'delete' => [\n 'type' => 'segment',\n 'options' => [\n 'route' => ':id',\n // This would only allow origin `http://example.org` to apply DELETE on this route\n 'defaults' => [\n \\LmcCors\\Options\\CorsOptions::ROUTE_PARAM => [\n 'allowed_methods' => ['DELETE'],\n ],\n ],\n ],\n ],\n ],\n ],\n ],\n ],\n ],\n ],\n];\n"})}),"\n",(0,t.jsx)(s.h2,{id:"preflight-request",children:"Preflight request"}),"\n",(0,t.jsx)(s.p,{children:"If LmcCors detects a preflight CORS request, a new HTTP response will be created, and LmcCors will send the appropriate\nheaders according to your configuration. The response will always be sent with a 200 status code (OK)."}),"\n",(0,t.jsxs)(s.p,{children:["Please note that this will also prevent further MVC steps from being executed, since all subsequent MVC steps are\nskipped till ",(0,t.jsx)(s.code,{children:"Laminas\\Mvc\\MvcEvent::EVENT_FINISH"}),", which is responsible for actually sending the response."]}),"\n",(0,t.jsx)(s.h2,{id:"actual-request",children:"Actual request"}),"\n",(0,t.jsx)(s.p,{children:"When an actual request is made, LmcCors first checks it the origin is allowed. If it is not, then a new response with\na 403 status code (Forbidden) is created and sent."}),"\n",(0,t.jsxs)(s.p,{children:["Please note that this will also prevent further MVC steps from being executed, since all subsequent MVC steps are\nskipped till ",(0,t.jsx)(s.code,{children:"Laminas\\Mvc\\MvcEvent::EVENT_FINISH"}),", which is responsible for actually sending the response."]}),"\n",(0,t.jsxs)(s.p,{children:["If the origin is allowed, LmcCors will just add the appropriate headers to the request produced by ",(0,t.jsx)(s.code,{children:"Laminas\\Mvc"}),"."]}),"\n",(0,t.jsx)(s.h2,{id:"security-concerns",children:"Security concerns"}),"\n",(0,t.jsxs)(s.p,{children:["Don't use this module to secure your application! You must use a proper authorization module, like\n",(0,t.jsx)(s.a,{href:"https://github.com/bjyoungblood/BjyAuthorize",children:"BjyAuthorize"}),", ",(0,t.jsx)(s.a,{href:"https://github.com/LM-Commons/LmcRbacMvc",children:"LmcRbacMvc"})," or\n",(0,t.jsx)(s.a,{href:"https://github.com/spiffyjr/spiffy-authorize",children:"SpiffyAuthorize"}),"."]}),"\n",(0,t.jsx)(s.p,{children:"LmcCors only allows to accept or refuse a cross-origin request."}),"\n",(0,t.jsx)(s.h2,{id:"custom-schemes",children:"Custom schemes"}),"\n",(0,t.jsxs)(s.p,{children:["Internally, LmcCors uses ",(0,t.jsx)(s.code,{children:"Laminas\\Uri\\UriFactory"})," class. If you are using custom schemes (for instance if you are\ntesting your API with some Google Chrome extensions), you need to add support for those schemes by adding them to\nthe ",(0,t.jsx)(s.code,{children:"UriFactory"})," config (please ",(0,t.jsx)(s.a,{href:"https://docs.laminas.dev/laminas-uri/usage/#creating-a-new-custom-class-uri",children:"refer to the doc"}),")."]}),"\n",(0,t.jsx)(s.h2,{id:"example",children:"Example"}),"\n",(0,t.jsxs)(s.p,{children:["To register the ",(0,t.jsx)(s.code,{children:"chrome-extension"})," custom scheme in your API, simply add:"]}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-php",children:"use Laminas\\Uri\\UriFactory;\n\nUriFactory::registerScheme('chrome-extension', 'Laminas\\Uri\\Uri');\n"})}),"\n",(0,t.jsxs)(s.p,{children:["to the ",(0,t.jsx)(s.code,{children:"onBootstrap()"})," method in ",(0,t.jsx)(s.code,{children:"module/Application/Module.php"}),"."]}),"\n",(0,t.jsxs)(s.p,{children:["Registering the ",(0,t.jsx)(s.code,{children:"chrome-extension"})," custom scheme like this allows you to use Google Chrome extensions for testing your API."]})]})}function h(e={}){const{wrapper:s}={...(0,o.R)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},8453:(e,s,n)=>{n.d(s,{R:()=>i,x:()=>l});var t=n(6540);const o={},r=t.createContext(o);function i(e){const s=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),t.createElement(r.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/main.81450983.js b/assets/js/main.81450983.js deleted file mode 100644 index 9e263db..0000000 --- a/assets/js/main.81450983.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see main.81450983.js.LICENSE.txt */ -(self.webpackChunklmc_github_io_docs=self.webpackChunklmc_github_io_docs||[]).push([[8792],{8328:(e,t,n)=>{"use strict";n.d(t,{A:()=>f});n(6540);var r=n(3259),a=n.n(r),o=n(4054);const i={"01a85c17":[()=>Promise.all([n.e(1869),n.e(8209)]).then(n.bind(n,9158)),"@theme/BlogTagsListPage",9158],"0a513c2f":[()=>n.e(8774).then(n.bind(n,4213)),"@site/docs/lmc-user/options.md",4213],"0ab959d1":[()=>n.e(9806).then(n.bind(n,9971)),"@site/docs/lmc-user/introduction.md",9971],"0d11df42":[()=>n.e(93).then(n.t.bind(n,1966,19)),"/home/runner/work/lm-commons.github.io/lm-commons.github.io/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",1966],"12fce6bb":[()=>n.e(4978).then(n.t.bind(n,3961,19)),"~docs/default/category-docs-mainsidebar-category-lmcrbac-6be.json",3961],"14eb3368":[()=>Promise.all([n.e(1869),n.e(6969)]).then(n.bind(n,4136)),"@theme/DocCategoryGeneratedIndexPage",4136],17481026:[()=>n.e(8692).then(n.t.bind(n,4300,19)),"~docs/default/category-docs-lmcuser-category-wiki-959.json",4300],17896441:[()=>Promise.all([n.e(1869),n.e(5533),n.e(8401)]).then(n.bind(n,6011)),"@theme/DocItem",6011],"18b949b3":[()=>n.e(5171).then(n.bind(n,2260)),"@site/docs/lmc-user/wiki/how-to-change-password-and-email.md",2260],"1bb2fa7e":[()=>n.e(7353).then(n.bind(n,2612)),"@site/docs/lmc-rbac/02-installtion.md",2612],"1f391b9e":[()=>Promise.all([n.e(1869),n.e(5533),n.e(6061)]).then(n.bind(n,7973)),"@theme/MDXPage",7973],"2936119f":[()=>n.e(7376).then(n.bind(n,4709)),"@site/docs/lmc-user/wiki/how-to-override-built-in-view-scripts.md",4709],"393be207":[()=>n.e(4134).then(n.bind(n,6602)),"@site/src/pages/markdown-page.md",6602],"3aa4daa9":[()=>n.e(1351).then(n.t.bind(n,5723,19)),"~docs/default/category-docs-mainsidebar-category-wiki-910.json",5723],"3cda21e2":[()=>n.e(8222).then(n.t.bind(n,5562,19)),"~blog/default/blog-tags-bootstrap-079-list.json",5562],"3d565cc2":[()=>n.e(8144).then(n.bind(n,6852)),"@site/docs/lmc-mail/Usage.md",6852],"40a3b50c":[()=>n.e(2839).then(n.bind(n,5189)),"@site/docs/lmc-user/wiki/how-to-check-if-the-user-is-logged-in.md",5189],"41659ae4":[()=>n.e(2e3).then(n.t.bind(n,2945,19)),"/home/runner/work/lm-commons.github.io/lm-commons.github.io/.docusaurus/docusaurus-plugin-content-blog/default/plugin-route-context-module-100.json",2945],"42709a9e":[()=>n.e(3124).then(n.bind(n,3917)),"@site/docs/lmc-mail/Configuration.md",3917],"44e0bea7":[()=>n.e(9959).then(n.bind(n,9541)),"@site/blog/2022-10-24-lmcbootstrapmenu-v1.0.0.md",9541],"4d3b7cf0":[()=>n.e(6732).then(n.bind(n,7282)),"@site/docs/lmc-user/wiki/how-to-configure-a-session-timeout.md",7282],"4d4e9ebf":[()=>n.e(2892).then(n.t.bind(n,2668,19)),"~docs/default/category-docs-mainsidebar-category-lmcuser-275.json",2668],"4fbf3963":[()=>n.e(3716).then(n.bind(n,1191)),"@site/docs/lmc-user/installation.md",1191],"50bd3b14":[()=>n.e(838).then(n.bind(n,371)),"@site/docs/lmc-mail/Installation.md",371],"5622cad4":[()=>n.e(6334).then(n.bind(n,5755)),"@site/docs/lmc-user/wiki/how-to-perform-a-custom-action-when-a-new-user-account-is-created.md",5755],"563d293f":[()=>n.e(5851).then(n.bind(n,5580)),"@site/docs/lmc-user/wiki/how-to-choose-which-user-fields-are-used-during-authentication.md",5580],"59e14a52":[()=>n.e(2183).then(n.t.bind(n,1221,19)),"~blog/default/blog-tags-lm-commons-c7c-list.json",1221],"5a77f7b9":[()=>n.e(6829).then(n.t.bind(n,5124,19)),"~blog/default/blog-tags-laminas-387.json",5124],"5d775460":[()=>n.e(1863).then(n.t.bind(n,4766,19)),"~blog/default/blog-tags-lm-commons-c7c.json",4766],"5e95c892":[()=>n.e(9647).then(n.bind(n,7121)),"@theme/DocsRoot",7121],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,4784)),"@generated/docusaurus.config",4784],"5f81e9c4":[()=>n.e(7572).then(n.bind(n,5031)),"@site/docs/lmc-mail/Introduction.md",5031],"66eb7538":[()=>n.e(1179).then(n.t.bind(n,4324,19)),"~blog/default/blog-tags-php-f9f.json",4324],"6875c492":[()=>Promise.all([n.e(1869),n.e(5533),n.e(3242),n.e(4813)]).then(n.bind(n,3069)),"@theme/BlogTagsPostsPage",3069],"6ed8cda8":[()=>n.e(7506).then(n.bind(n,9553)),"@site/docs/lmc-admin/01-introduction.md",9553],"7ae48e8c":[()=>n.e(9002).then(n.bind(n,684)),"@site/docs/lmc-user/support.md",684],"7ce6abb9":[()=>n.e(2850).then(n.t.bind(n,6040,19)),"~blog/default/blog-tags-slack-b45.json",6040],"814f3328":[()=>n.e(7472).then(n.t.bind(n,5513,19)),"~blog/default/blog-post-list-prop-default.json",5513],82635669:[()=>n.e(2422).then(n.t.bind(n,7409,19)),"~docs/default/category-docs-mainsidebar-category-lmccors-dc2.json",7409],"86a33aaf":[()=>n.e(5932).then(n.bind(n,2828)),"@site/docs/lmc-cors/02-installation.md",2828],"8960a3d2":[()=>n.e(1850).then(n.t.bind(n,4061,19)),"/home/runner/work/lm-commons.github.io/lm-commons.github.io/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json",4061],"8d9a9d49":[()=>n.e(4495).then(n.bind(n,2649)),"@site/docs/lmc-mail/advanced-customization.md",2649],"8eee341d":[()=>n.e(9698).then(n.t.bind(n,9681,19)),"~docs/default/category-docs-mainsidebar-category-lmcadmin-b21.json",9681],"924fdbca":[()=>n.e(7414).then(n.bind(n,482)),"@site/docs/lmc-rbac/01-introduction.md",482],"935f2afb":[()=>n.e(8581).then(n.t.bind(n,5610,19)),"~docs/default/version-current-metadata-prop-751.json",5610],"9e4087bc":[()=>n.e(2711).then(n.bind(n,9331)),"@theme/BlogArchivePage",9331],a09c2993:[()=>n.e(5899).then(n.bind(n,1456)),"@site/docs/introduction.md",1456],a34f2ac7:[()=>n.e(1020).then(n.t.bind(n,511,19)),"~blog/default/blog-tags-support-474-list.json",511],a43da4dd:[()=>n.e(6670).then(n.bind(n,349)),"@site/docs/lmc-user/wiki/how-to-store-custom-form-values-into-your-user-entity-at-registration.md",349],a4c665f5:[()=>n.e(1867).then(n.bind(n,188)),"@site/blog/2024-04-10-slack-server.md?truncated=true",188],a6aa9e1f:[()=>Promise.all([n.e(1869),n.e(5533),n.e(3242),n.e(7643)]).then(n.bind(n,2743)),"@theme/BlogListPage",2743],a7023ddc:[()=>n.e(9267).then(n.t.bind(n,8289,19)),"~blog/default/blog-tags-tags-4c2.json",8289],a7bd4aaa:[()=>n.e(7098).then(n.bind(n,4532)),"@theme/DocVersionRoot",4532],a94703ab:[()=>Promise.all([n.e(1869),n.e(9048)]).then(n.bind(n,2559)),"@theme/DocRoot",2559],aa811bee:[()=>n.e(123).then(n.bind(n,5625)),"@site/docs/lmc-user/wiki/how-to-modify-the-form-objects-used-by-lmcuser.md",5625],ac6c2a1e:[()=>n.e(5695).then(n.t.bind(n,2317,19)),"~blog/default/blog-tags-support-474.json",2317],acecf23e:[()=>n.e(1903).then(n.t.bind(n,1912,19)),"~blog/default/blogMetadata-default.json",1912],af5203ba:[()=>n.e(3911).then(n.bind(n,6059)),"@site/docs/lmc-user/wiki/how-to-embed-the-login-form-on-another-page.md",6059],b10b76a9:[()=>n.e(2303).then(n.bind(n,4695)),"@site/blog/2022-10-24-lmcbootstrapmenu-v1.0.0.md?truncated=true",4695],b1c0fccb:[()=>n.e(9843).then(n.t.bind(n,1163,19)),"~blog/default/blog-tags-laminas-387-list.json",1163],b2b675dd:[()=>n.e(1991).then(n.t.bind(n,9775,19)),"~blog/default/blog-c06.json",9775],b2f554cd:[()=>n.e(5894).then(n.t.bind(n,6042,19)),"~blog/default/blog-archive-80c.json",6042],b5cb822e:[()=>n.e(1390).then(n.bind(n,2957)),"@site/blog/2022-08-02-welcome.md?truncated=true",2957],c4f5d8e4:[()=>Promise.all([n.e(1869),n.e(2634)]).then(n.bind(n,6467)),"@site/src/pages/index.js",6467],c70cff8b:[()=>n.e(5032).then(n.bind(n,8379)),"@site/docs/lmc-cors/01-introduction.md",8379],ccc49370:[()=>Promise.all([n.e(1869),n.e(5533),n.e(3242),n.e(3249)]).then(n.bind(n,3858)),"@theme/BlogPostPage",3858],cdc201ca:[()=>n.e(576).then(n.bind(n,2940)),"@site/docs/lmc-user/wiki/how-to-modify-the-login-and-or-registration-form-timeout.md",2940],d2f175e5:[()=>n.e(1724).then(n.bind(n,9624)),"@site/docs/lmc-user/wiki/how-to-secure-sessions-against-session-hijacking-attacks.md",9624],dd818855:[()=>n.e(3120).then(n.t.bind(n,3115,19)),"~blog/default/blog-tags-php-f9f-list.json",3115],ddeca180:[()=>n.e(4465).then(n.t.bind(n,5247,19)),"~blog/default/blog-tags-slack-b45-list.json",5247],ee696d42:[()=>n.e(7018).then(n.bind(n,3531)),"@site/blog/2022-08-02-welcome.md",3531],f895162b:[()=>n.e(9634).then(n.bind(n,8400)),"@site/blog/2024-04-10-slack-server.md",8400],f8b04b92:[()=>n.e(1984).then(n.t.bind(n,1126,19)),"~docs/default/category-docs-mainsidebar-category-lmcmail-dbf.json",1126],fd31427f:[()=>n.e(9988).then(n.bind(n,640)),"@site/docs/LmcRbacMvc.md",640],ff9fcb13:[()=>n.e(7969).then(n.bind(n,5141)),"@site/docs/lmc-cors/03-guide.md",5141],ffb545c1:[()=>n.e(105).then(n.t.bind(n,8955,19)),"~blog/default/blog-tags-bootstrap-079.json",8955]};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 c=n(6921),u=n(3102);function d(e,t){if("*"===e)return a()({loading:s,loader:()=>n.e(2237).then(n.bind(n,2237)),modules:["@theme/NotFound"],webpack:()=>[2237],render(e,t){const n=e.default;return(0,l.jsx)(u.W,{value:{plugin:{name:"native",id:"default"}},children:(0,l.jsx)(n,{...t})})}});const r=o[`${e}-${t}`],d={},f=[],p=[],m=(0,c.A)(r);return Object.entries(m).forEach((e=>{let[t,n]=e;const r=i[n];r&&(d[t]=r[0],f.push(r[1]),p.push(r[2]))})),a().Map({loading:s,loader:d,modules:f,webpack:()=>p,render(t,n){const a=JSON.parse(JSON.stringify(r));Object.entries(t).forEach((t=>{let[n,r]=t;const o=r.default;if(!o)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 o&&"function"!=typeof o||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{o[e]=r[e]}));let i=a;const l=n.split(".");l.slice(0,-1).forEach((e=>{i=i[e]})),i[l[l.length-1]]=o}));const o=a.__comp;delete a.__comp;const i=a.__context;return delete a.__context,(0,l.jsx)(u.W,{value:i,children:(0,l.jsx)(o,{...a,...n})})}})}const f=[{path:"/blog",component:d("/blog","e0d"),exact:!0},{path:"/blog/archive",component:d("/blog/archive","6e6"),exact:!0},{path:"/blog/discord",component:d("/blog/discord","e1f"),exact:!0},{path:"/blog/lmcbootstrapmenu-release-v1.0.0",component:d("/blog/lmcbootstrapmenu-release-v1.0.0","dfa"),exact:!0},{path:"/blog/tags",component:d("/blog/tags","bda"),exact:!0},{path:"/blog/tags/bootstrap",component:d("/blog/tags/bootstrap","049"),exact:!0},{path:"/blog/tags/laminas",component:d("/blog/tags/laminas","80a"),exact:!0},{path:"/blog/tags/lm-commons",component:d("/blog/tags/lm-commons","773"),exact:!0},{path:"/blog/tags/php",component:d("/blog/tags/php","dd3"),exact:!0},{path:"/blog/tags/slack",component:d("/blog/tags/slack","c3d"),exact:!0},{path:"/blog/tags/support",component:d("/blog/tags/support","c08"),exact:!0},{path:"/blog/welcome",component:d("/blog/welcome","980"),exact:!0},{path:"/markdown-page",component:d("/markdown-page","4ac"),exact:!0},{path:"/docs",component:d("/docs","5a8"),routes:[{path:"/docs",component:d("/docs","084"),routes:[{path:"/docs",component:d("/docs","fc6"),routes:[{path:"/docs/category/lmcadmin",component:d("/docs/category/lmcadmin","d86"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/category/lmccors",component:d("/docs/category/lmccors","a5d"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/category/lmcmail",component:d("/docs/category/lmcmail","62d"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/category/lmcrbac",component:d("/docs/category/lmcrbac","dc8"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/category/lmcuser",component:d("/docs/category/lmcuser","73a"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/category/wiki",component:d("/docs/category/wiki","8d7"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/category/wiki-1",component:d("/docs/category/wiki-1","3b2"),exact:!0,sidebar:"lmcUser"},{path:"/docs/introduction",component:d("/docs/introduction","56c"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/lmc-admin/introduction",component:d("/docs/lmc-admin/introduction","ea2"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/lmc-cors/guide",component:d("/docs/lmc-cors/guide","569"),exact:!0,sidebar:"lmcCors"},{path:"/docs/lmc-cors/installation",component:d("/docs/lmc-cors/installation","e8e"),exact:!0,sidebar:"lmcCors"},{path:"/docs/lmc-cors/introduction",component:d("/docs/lmc-cors/introduction","5c4"),exact:!0,sidebar:"lmcCors"},{path:"/docs/lmc-mail/advanced-customization",component:d("/docs/lmc-mail/advanced-customization","c8d"),exact:!0,sidebar:"lmcMail"},{path:"/docs/lmc-mail/Configuration",component:d("/docs/lmc-mail/Configuration","101"),exact:!0,sidebar:"lmcMail"},{path:"/docs/lmc-mail/Installation",component:d("/docs/lmc-mail/Installation","bdf"),exact:!0,sidebar:"lmcMail"},{path:"/docs/lmc-mail/Introduction",component:d("/docs/lmc-mail/Introduction","c54"),exact:!0,sidebar:"lmcMail"},{path:"/docs/lmc-mail/Usage",component:d("/docs/lmc-mail/Usage","286"),exact:!0,sidebar:"lmcMail"},{path:"/docs/lmc-rbac/installtion",component:d("/docs/lmc-rbac/installtion","812"),exact:!0,sidebar:"lmcRbac"},{path:"/docs/lmc-rbac/introduction",component:d("/docs/lmc-rbac/introduction","ffa"),exact:!0,sidebar:"lmcRbac"},{path:"/docs/lmc-user/installation",component:d("/docs/lmc-user/installation","343"),exact:!0,sidebar:"lmcUser"},{path:"/docs/lmc-user/introduction",component:d("/docs/lmc-user/introduction","b68"),exact:!0,sidebar:"lmcUser"},{path:"/docs/lmc-user/options",component:d("/docs/lmc-user/options","8a0"),exact:!0,sidebar:"lmcUser"},{path:"/docs/lmc-user/support",component:d("/docs/lmc-user/support","7f9"),exact:!0,sidebar:"lmcUser"},{path:"/docs/lmc-user/wiki/how-to-change-password-and-email",component:d("/docs/lmc-user/wiki/how-to-change-password-and-email","61c"),exact:!0,sidebar:"lmcUser"},{path:"/docs/lmc-user/wiki/how-to-check-if-the-user-is-logged-in",component:d("/docs/lmc-user/wiki/how-to-check-if-the-user-is-logged-in","1da"),exact:!0,sidebar:"lmcUser"},{path:"/docs/lmc-user/wiki/how-to-choose-which-user-fields-are-used-during-authentication",component:d("/docs/lmc-user/wiki/how-to-choose-which-user-fields-are-used-during-authentication","970"),exact:!0,sidebar:"lmcUser"},{path:"/docs/lmc-user/wiki/how-to-configure-a-session-timeout",component:d("/docs/lmc-user/wiki/how-to-configure-a-session-timeout","5eb"),exact:!0,sidebar:"lmcUser"},{path:"/docs/lmc-user/wiki/how-to-embed-the-login-form-on-another-page",component:d("/docs/lmc-user/wiki/how-to-embed-the-login-form-on-another-page","7cd"),exact:!0,sidebar:"lmcUser"},{path:"/docs/lmc-user/wiki/how-to-modify-the-form-objects-used-by-lmcuser",component:d("/docs/lmc-user/wiki/how-to-modify-the-form-objects-used-by-lmcuser","1cc"),exact:!0,sidebar:"lmcUser"},{path:"/docs/lmc-user/wiki/how-to-modify-the-login-and-or-registration-form-timeout",component:d("/docs/lmc-user/wiki/how-to-modify-the-login-and-or-registration-form-timeout","9e0"),exact:!0,sidebar:"lmcUser"},{path:"/docs/lmc-user/wiki/how-to-override-built-in-view-scripts",component:d("/docs/lmc-user/wiki/how-to-override-built-in-view-scripts","e88"),exact:!0,sidebar:"lmcUser"},{path:"/docs/lmc-user/wiki/how-to-perform-a-custom-action-when-a-new-user-account-is-created",component:d("/docs/lmc-user/wiki/how-to-perform-a-custom-action-when-a-new-user-account-is-created","446"),exact:!0,sidebar:"lmcUser"},{path:"/docs/lmc-user/wiki/how-to-secure-sessions-against-session-hijacking-attacks",component:d("/docs/lmc-user/wiki/how-to-secure-sessions-against-session-hijacking-attacks","3b7"),exact:!0,sidebar:"lmcUser"},{path:"/docs/lmc-user/wiki/how-to-store-custom-form-values-into-your-user-entity-at-registration",component:d("/docs/lmc-user/wiki/how-to-store-custom-form-values-into-your-user-entity-at-registration","013"),exact:!0,sidebar:"lmcUser"},{path:"/docs/LmcRbacMvc",component:d("/docs/LmcRbacMvc","2ee"),exact:!0,sidebar:"mainSidebar"}]}]}]},{path:"/",component:d("/","f8f"),exact:!0},{path:"*",component:d("*")}]},6125:(e,t,n)=>{"use strict";n.d(t,{o:()=>o,x:()=>i});var r=n(6540),a=n(4848);const o=r.createContext(!1);function i(e){let{children:t}=e;const[n,i]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{i(!0)}),[]),(0,a.jsx)(o.Provider,{value:n,children:t})}},8536:(e,t,n)=>{"use strict";var r=n(6540),a=n(5338),o=n(4625),i=n(545),l=n(8193);const s=[n(119),n(6134),n(6294),n(1043)];var c=n(8328),u=n(6347),d=n(2831),f=n(4848);function p(e){let{children:t}=e;return(0,f.jsx)(f.Fragment,{children:t})}var m=n(5260),g=n(4586),h=n(6025),b=n(6342),y=n(1213),v=n(2131),w=n(4090),k=n(2967),x=n(440),S=n(1463);function E(){const{i18n:{currentLocale:e,defaultLocale:t,localeConfigs:n}}=(0,g.A)(),r=(0,v.o)(),a=n[e].htmlLang,o=e=>e.replace("-","_");return(0,f.jsxs)(m.A,{children:[Object.entries(n).map((e=>{let[t,{htmlLang:n}]=e;return(0,f.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:n},t)})),(0,f.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}),(0,f.jsx)("meta",{property:"og:locale",content:o(a)}),Object.values(n).filter((e=>a!==e.htmlLang)).map((e=>(0,f.jsx)("meta",{property:"og:locale:alternate",content:o(e.htmlLang)},`meta-og-${e.htmlLang}`)))]})}function _(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,u.zy)();return e+(0,x.applyTrailingSlash)((0,h.A)(r),{trailingSlash:n,baseUrl:t})}(),a=t?`${n}${t}`:r;return(0,f.jsxs)(m.A,{children:[(0,f.jsx)("meta",{property:"og:url",content:a}),(0,f.jsx)("link",{rel:"canonical",href:a})]})}function C(){const{i18n:{currentLocale:e}}=(0,g.A)(),{metadata:t,image:n}=(0,b.p)();return(0,f.jsxs)(f.Fragment,{children:[(0,f.jsxs)(m.A,{children:[(0,f.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,f.jsx)("body",{className:w.w})]}),n&&(0,f.jsx)(y.be,{image:n}),(0,f.jsx)(_,{}),(0,f.jsx)(E,{}),(0,f.jsx)(S.A,{tag:k.Cy,locale:e}),(0,f.jsx)(m.A,{children:t.map(((e,t)=>(0,f.jsx)("meta",{...e},t)))})]})}const A=new Map;function T(e){if(A.has(e.pathname))return{...e,pathname:A.get(e.pathname)};if((0,d.u)(c.A,e.pathname).some((e=>{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}}var N=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()=>a.forEach((e=>e?.()))}const O=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,a=t.hash===n.hash,o=t.search===n.search;if(r&&a&&!o)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 R(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.u)(c.A,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class I 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}),R(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,f.jsx)(O,{previousLocation:this.previousLocation,location:t,children:(0,f.jsx)(u.qh,{location:t,render:()=>e})})}}const M=I,D="__docusaurus-base-url-issue-banner-container",F="__docusaurus-base-url-issue-banner",z="__docusaurus-base-url-issue-banner-suggestion-container";function $(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 = '${D}';\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(/{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 a=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;a?.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 Q=n(6921);const Z=new Set,X=new Set,J=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,ee={prefetch(e){if(!(e=>!J()&&!X.has(e)&&!Z.has(e))(e))return!1;Z.add(e);const t=(0,d.u)(c.A,e).flatMap((e=>{return t=e.route.path,Object.entries(Y).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,Q.A)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?K(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!J()&&!X.has(e))(e)&&(X.add(e),R(e))},te=Object.freeze(ee),ne=Boolean(!0);if(l.A.canUseDOM){window.docusaurus=te;const e=document.getElementById("__docusaurus"),t=(0,f.jsx)(i.vd,{children:(0,f.jsx)(o.Kd,{children:(0,f.jsx)(q,{})})}),n=(e,t)=>{console.error("Docusaurus React Root onRecoverableError:",e,t)},l=()=>{if(ne)r.startTransition((()=>{a.hydrateRoot(e,t,{onRecoverableError:n})}));else{const o=a.createRoot(e,{onRecoverableError:n});r.startTransition((()=>{o.render(t)}))}};R(window.location.pathname).then(l)}},6988:(e,t,n)=>{"use strict";n.d(t,{o:()=>d,l:()=>f});var r=n(6540),a=n(4784);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs","mainDocId":"introduction","docs":[{"id":"introduction","path":"/docs/introduction","sidebar":"mainSidebar"},{"id":"lmc-admin/introduction","path":"/docs/lmc-admin/introduction","sidebar":"mainSidebar"},{"id":"lmc-cors/guide","path":"/docs/lmc-cors/guide","sidebar":"lmcCors"},{"id":"lmc-cors/installation","path":"/docs/lmc-cors/installation","sidebar":"lmcCors"},{"id":"lmc-cors/introduction","path":"/docs/lmc-cors/introduction","sidebar":"lmcCors"},{"id":"lmc-mail/advanced-customization","path":"/docs/lmc-mail/advanced-customization","sidebar":"lmcMail"},{"id":"lmc-mail/Configuration","path":"/docs/lmc-mail/Configuration","sidebar":"lmcMail"},{"id":"lmc-mail/Installation","path":"/docs/lmc-mail/Installation","sidebar":"lmcMail"},{"id":"lmc-mail/Introduction","path":"/docs/lmc-mail/Introduction","sidebar":"lmcMail"},{"id":"lmc-mail/Usage","path":"/docs/lmc-mail/Usage","sidebar":"lmcMail"},{"id":"lmc-rbac/installtion","path":"/docs/lmc-rbac/installtion","sidebar":"lmcRbac"},{"id":"lmc-rbac/introduction","path":"/docs/lmc-rbac/introduction","sidebar":"lmcRbac"},{"id":"lmc-user/installation","path":"/docs/lmc-user/installation","sidebar":"lmcUser"},{"id":"lmc-user/introduction","path":"/docs/lmc-user/introduction","sidebar":"lmcUser"},{"id":"lmc-user/options","path":"/docs/lmc-user/options","sidebar":"lmcUser"},{"id":"lmc-user/support","path":"/docs/lmc-user/support","sidebar":"lmcUser"},{"id":"lmc-user/wiki/how-to-change-password-and-email","path":"/docs/lmc-user/wiki/how-to-change-password-and-email","sidebar":"lmcUser"},{"id":"lmc-user/wiki/how-to-check-if-the-user-is-logged-in","path":"/docs/lmc-user/wiki/how-to-check-if-the-user-is-logged-in","sidebar":"lmcUser"},{"id":"lmc-user/wiki/how-to-choose-which-user-fields-are-used-during-authentication","path":"/docs/lmc-user/wiki/how-to-choose-which-user-fields-are-used-during-authentication","sidebar":"lmcUser"},{"id":"lmc-user/wiki/how-to-configure-a-session-timeout","path":"/docs/lmc-user/wiki/how-to-configure-a-session-timeout","sidebar":"lmcUser"},{"id":"lmc-user/wiki/how-to-embed-the-login-form-on-another-page","path":"/docs/lmc-user/wiki/how-to-embed-the-login-form-on-another-page","sidebar":"lmcUser"},{"id":"lmc-user/wiki/how-to-modify-the-form-objects-used-by-lmcuser","path":"/docs/lmc-user/wiki/how-to-modify-the-form-objects-used-by-lmcuser","sidebar":"lmcUser"},{"id":"lmc-user/wiki/how-to-modify-the-login-and-or-registration-form-timeout","path":"/docs/lmc-user/wiki/how-to-modify-the-login-and-or-registration-form-timeout","sidebar":"lmcUser"},{"id":"lmc-user/wiki/how-to-override-built-in-view-scripts","path":"/docs/lmc-user/wiki/how-to-override-built-in-view-scripts","sidebar":"lmcUser"},{"id":"lmc-user/wiki/how-to-perform-a-custom-action-when-a-new-user-account-is-created","path":"/docs/lmc-user/wiki/how-to-perform-a-custom-action-when-a-new-user-account-is-created","sidebar":"lmcUser"},{"id":"lmc-user/wiki/how-to-secure-sessions-against-session-hijacking-attacks","path":"/docs/lmc-user/wiki/how-to-secure-sessions-against-session-hijacking-attacks","sidebar":"lmcUser"},{"id":"lmc-user/wiki/how-to-store-custom-form-values-into-your-user-entity-at-registration","path":"/docs/lmc-user/wiki/how-to-store-custom-form-values-into-your-user-entity-at-registration","sidebar":"lmcUser"},{"id":"LmcRbacMvc","path":"/docs/LmcRbacMvc","sidebar":"mainSidebar"},{"id":"/category/lmcuser","path":"/docs/category/lmcuser","sidebar":"mainSidebar"},{"id":"/category/wiki","path":"/docs/category/wiki","sidebar":"mainSidebar"},{"id":"/category/lmcrbac","path":"/docs/category/lmcrbac","sidebar":"mainSidebar"},{"id":"/category/lmccors","path":"/docs/category/lmccors","sidebar":"mainSidebar"},{"id":"/category/lmcadmin","path":"/docs/category/lmcadmin","sidebar":"mainSidebar"},{"id":"/category/lmcmail","path":"/docs/category/lmcmail","sidebar":"mainSidebar"},{"id":"/category/wiki-1","path":"/docs/category/wiki-1","sidebar":"lmcUser"}],"draftIds":[],"sidebars":{"mainSidebar":{"link":{"path":"/docs/introduction","label":"introduction"}},"lmcRbacMvc":{},"lmcUser":{"link":{"path":"/docs/lmc-user/introduction","label":"lmc-user/introduction"}},"lmcCors":{"link":{"path":"/docs/lmc-cors/introduction","label":"lmc-cors/introduction"}},"lmcRbac":{"link":{"path":"/docs/lmc-rbac/introduction","label":"lmc-rbac/introduction"}},"lmcMail":{"link":{"path":"/docs/lmc-mail/Introduction","label":"lmc-mail/Introduction"}}}}],"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.2.1","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.2.1"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"3.2.1"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.2.1"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.2.1"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.2.1"}}}');var c=n(4848);const u={siteConfig:a.default,siteMetadata:s,globalData:o,i18n:i,codeTranslations:l},d=r.createContext(u);function f(e){let{children:t}=e;return(0,c.jsx)(d.Provider,{value:u,children:t})}},7489:(e,t,n)=>{"use strict";n.d(t,{A:()=>g});var r=n(6540),a=n(8193),o=n(5260),i=n(440),l=n(781),s=n(3102),c=n(4848);function u(e){let{error:t,tryAgain:n}=e;return(0,c.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,c.jsx)("h1",{style:{fontSize:"3rem"},children:"This page crashed"}),(0,c.jsx)("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"},children:"Try again"}),(0,c.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,c.jsx)("p",{style:{whiteSpace:"pre-wrap"},children:n})}function f(e){let{children:t}=e;return(0,c.jsx)(s.W,{value:{plugin:{name:"docusaurus-core-error-boundary",id:"default"}},children:t})}function p(e){let{error:t,tryAgain:n}=e;return(0,c.jsx)(f,{children:(0,c.jsxs)(g,{fallback:()=>(0,c.jsx)(u,{error:t,tryAgain:n}),children:[(0,c.jsx)(o.A,{children:(0,c.jsx)("title",{children:"Page Error"})}),(0,c.jsx)(l.A,{children:(0,c.jsx)(u,{error:t,tryAgain:n})})]})})}const m=e=>(0,c.jsx)(p,{...e});class g extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.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:()=>a});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,a={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:()=>o});n(6540);var r=n(545),a=n(4848);function o(e){return(0,a.jsx)(r.mg,{...e})}},8774:(e,t,n)=>{"use strict";n.d(t,{A:()=>p});var r=n(6540),a=n(4625),o=n(440),i=n(4586),l=n(6654),s=n(8193),c=n(3427),u=n(6025),d=n(4848);function f(e,t){let{isNavLink:n,to:f,href:p,activeClassName:m,isActive:g,"data-noBrokenLinkCheck":h,autoAddBaseUrl:b=!0,...y}=e;const{siteConfig:{trailingSlash:v,baseUrl:w}}=(0,i.A)(),{withBaseUrl:k}=(0,u.h)(),x=(0,c.A)(),S=(0,r.useRef)(null);(0,r.useImperativeHandle)(t,(()=>S.current));const E=f||p;const _=(0,l.A)(E),C=E?.replace("pathname://","");let A=void 0!==C?(T=C,b&&(e=>e.startsWith("/"))(T)?k(T):T):void 0;var T;A&&_&&(A=(0,o.applyTrailingSlash)(A,{trailingSlash:v,baseUrl:w}));const N=(0,r.useRef)(!1),j=n?a.k2:a.N_,L=s.A.canUseIntersectionObserver,P=(0,r.useRef)(),O=()=>{N.current||null==A||(window.docusaurus.preload(A),N.current=!0)};(0,r.useEffect)((()=>(!L&&_&&null!=A&&window.docusaurus.prefetch(A),()=>{L&&P.current&&P.current.disconnect()})),[P,A,L,_]);const R=A?.startsWith("#")??!1,I=!y.target||"_self"===y.target,M=!A||!_||!I||R;return h||!R&&M||x.collectLink(A),y.id&&x.collectAnchor(y.id),M?(0,d.jsx)("a",{ref:S,href:A,...E&&!_&&{target:"_blank",rel:"noopener noreferrer"},...y}):(0,d.jsx)(j,{...y,onMouseEnter:O,onTouchStart:O,innerRef:e=>{S.current=e,L&&e&&_&&(P.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(P.current.unobserve(e),P.current.disconnect(),null!=A&&window.docusaurus.prefetch(A))}))})),P.current.observe(e))},to:A,...n&&{isActive:g,activeClassName:m}})}const p=r.forwardRef(f)},418:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});const r=()=>null},1312:(e,t,n)=>{"use strict";n.d(t,{A:()=>c,T:()=>s});var r=n(6540),a=n(4848);function o(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 o(l({message:n,id:r}),t)}function c(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,a.jsx)(a.Fragment,{children:o(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 a(e){return void 0!==e&&!r(e)}n.d(t,{A:()=>a,z:()=>r})},6025:(e,t,n)=>{"use strict";n.d(t,{A:()=>l,h:()=>i});var r=n(6540),a=n(4586),o=n(6654);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,a.A)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:a=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,o.z)(n))return n;if(a)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 a=r.createContext({collectAnchor:()=>{},collectLink:()=>{}}),o=()=>(0,r.useContext)(a);function i(){return o()}},4586:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(6540),a=n(6988);function o(){return(0,r.useContext)(a.o)}},2303:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(6540),a=n(6125);function o(){return(0,r.useContext)(a.o)}},205:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=n(6540);const a=n(8193).A.canUseDOM?r.useLayoutEffect:r.useEffect},6803:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(6540),a=n(3102);function o(){const e=r.useContext(a.o);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}},6921:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function a(e){const t={};return function e(n,a){Object.entries(n).forEach((n=>{let[o,i]=n;const l=a?`${a}.${o}`:o;r(i)?e(i,l):t[l]=i}))}(e),t}},3102:(e,t,n)=>{"use strict";n.d(t,{W:()=>i,o:()=>o});var r=n(6540),a=n(4848);const o=r.createContext(null);function i(e){let{children:t,value:n}=e;const i=r.useContext(o),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,a.jsx)(o.Provider,{value:l,children:t})}},4070:(e,t,n)=>{"use strict";n.d(t,{zK:()=>g,vT:()=>f,Gy:()=>u,HW:()=>h,ht:()=>d,r7:()=>m,jh:()=>p});var r=n(6347),a=n(4586),o=n(7065);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,a.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),a=n?.docs.find((e=>!!(0,r.B6)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(a.id):{}}}const c={},u=()=>i("docusaurus-plugin-content-docs")??c,d=e=>{try{return function(e,t,n){void 0===t&&(t=o.W),void 0===n&&(n={});const r=i(e),a=r?.[t];if(!a&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return a}("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 f(e){void 0===e&&(e={});const t=u(),{pathname:n}=(0,r.zy)();return function(e,t,n){void 0===n&&(n={});const a=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})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&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 o}(t,n,e)}function p(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:()=>o});var r=n(5947),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{a().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}}},6134:(e,t,n)=>{"use strict";n.r(t);var r=n(1765),a=n(4784);!function(e){const{themeConfig:{prism:t}}=a.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{"php"===e&&n(9700),n(2022)(`./prism-${e}`)})),delete globalThis.Prism}(r.My)},1107:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});n(6540);var r=n(4164),a=n(1312),o=n(6342),i=n(8774),l=n(3427);const s={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};var c=n(4848);function u(e){let{as:t,id:n,...u}=e;const d=(0,l.A)(),{navbar:{hideOnScroll:f}}=(0,o.p)();if("h1"===t||!n)return(0,c.jsx)(t,{...u,id:void 0});d.collectAnchor(n);const p=(0,a.T)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof u.children?u.children:n});return(0,c.jsxs)(t,{...u,className:(0,r.A)("anchor",f?s.anchorWithHideOnScrollNavbar:s.anchorWithStickyNavbar,u.className),id:n,children:[u.children,(0,c.jsx)(i.A,{className:"hash-link",to:`#${n}`,"aria-label":p,title:p,children:"\u200b"})]})}},3186:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});n(6540);const r={iconExternalLink:"iconExternalLink_nPIU"};var a=n(4848);function o(e){let{width:t=13.5,height:n=13.5}=e;return(0,a.jsx)("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:r.iconExternalLink,children:(0,a.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:()=>pt});var r=n(6540),a=n(4164),o=n(7489),i=n(1213),l=n(6347),s=n(1312),c=n(5062),u=n(4848);const d="__docusaurus_skipToContent_fallback";function f(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function p(){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&&f(t)}),[]);return(0,c.$)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&f(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}=p();return(0,u.jsx)("div",{ref:n,role:"region","aria-label":m,children:(0,u.jsx)("a",{...e,href:`#${d}`,onClick:r,children:t})})}var h=n(7559),b=n(4090);const y={skipToContent:"skipToContent_fXgn"};function v(){return(0,u.jsx)(g,{className:y.skipToContent})}var w=n(6342),k=n(5041);function x(e){let{width:t=21,height:n=21,color:r="currentColor",strokeWidth:a=1.2,className:o,...i}=e;return(0,u.jsx)("svg",{viewBox:"0 0 15 15",width:t,height:n,...i,children:(0,u.jsx)("g",{stroke:r,strokeWidth:a,children:(0,u.jsx)("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})})})}const S={closeButton:"closeButton_CVFx"};function E(e){return(0,u.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,a.A)("clean-btn close",S.closeButton,e.className),children:(0,u.jsx)(x,{width:14,height:14,strokeWidth:3.1})})}const _={content:"content_knG7"};function C(e){const{announcementBar:t}=(0,w.p)(),{content:n}=t;return(0,u.jsx)("div",{...e,className:(0,a.A)(_.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:a,isCloseable:o}=e;return(0,u.jsxs)("div",{className:A.announcementBar,style:{backgroundColor:r,color:a},role:"banner",children:[o&&(0,u.jsx)("div",{className:A.announcementBarPlaceholder}),(0,u.jsx)(C,{className:A.announcementBarContent}),o&&(0,u.jsx)(E,{onClick:n,className:A.announcementBarClose})]})}var N=n(9876),j=n(3104);var L=n(9532),P=n(5600);const O=r.createContext(null);function R(e){let{children:t}=e;const n=function(){const e=(0,N.M)(),t=(0,P.YL)(),[n,a]=(0,r.useState)(!1),o=null!==t.component,i=(0,L.ZC)(o);return(0,r.useEffect)((()=>{o&&!i&&a(!0)}),[o,i]),(0,r.useEffect)((()=>{o?e.shown||a(!0):a(!1)}),[e.shown,o]),(0,r.useMemo)((()=>[n,a]),[n])}();return(0,u.jsx)(O.Provider,{value:n,children:t})}function I(e){if(e.component){const t=e.component;return(0,u.jsx)(t,{...e.props})}}function M(){const e=(0,r.useContext)(O);if(!e)throw new L.dV("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,a=(0,r.useCallback)((()=>n(!1)),[n]),o=(0,P.YL)();return(0,r.useMemo)((()=>({shown:t,hide:a,content:I(o)})),[a,o,t])}function D(e){let{header:t,primaryMenu:n,secondaryMenu:r}=e;const{shown:o}=M();return(0,u.jsxs)("div",{className:"navbar-sidebar",children:[t,(0,u.jsxs)("div",{className:(0,a.A)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":o}),children:[(0,u.jsx)("div",{className:"navbar-sidebar__item menu",children:n}),(0,u.jsx)("div",{className:"navbar-sidebar__item menu",children:r})]})]})}var F=n(5293),z=n(2303);function $(e){return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,u.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 B(e){return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,u.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 H(e){let{className:t,buttonClassName:n,value:r,onChange:o}=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,u.jsx)("div",{className:(0,a.A)(U.toggle,t),children:(0,u.jsxs)("button",{className:(0,a.A)("clean-btn",U.toggleButton,!i&&U.toggleButtonDisabled,n),type:"button",onClick:()=>o("dark"===r?"light":"dark"),disabled:!i,title:l,"aria-label":l,"aria-live":"polite",children:[(0,u.jsx)($,{className:(0,a.A)(U.toggleIcon,U.lightToggleIcon)}),(0,u.jsx)(B,{className:(0,a.A)(U.toggleIcon,U.darkToggleIcon)})]})})}const V=r.memo(H),W={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function G(e){let{className:t}=e;const n=(0,w.p)().navbar.style,r=(0,w.p)().colorMode.disableSwitch,{colorMode:a,setColorMode:o}=(0,F.G)();return r?null:(0,u.jsx)(V,{className:t,buttonClassName:"dark"===n?W.darkNavbarColorModeToggle:void 0,value:a,onChange:o})}var q=n(3465);function Y(){return(0,u.jsx)(q.A,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function K(){const e=(0,N.M)();return(0,u.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,u.jsx)(x,{color:"var(--ifm-color-emphasis-600)"})})}function Q(){return(0,u.jsxs)("div",{className:"navbar-sidebar__brand",children:[(0,u.jsx)(Y,{}),(0,u.jsx)(G,{className:"margin-right--md"}),(0,u.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:a,label:o,html:i,isDropdownLink:l,prependBaseUrlToHref:s,...c}=e;const d=(0,X.A)(r),f=(0,X.A)(t),p=(0,X.A)(a,{forcePrependBaseUrl:!0}),m=o&&a&&!(0,J.A)(a),g=i?{dangerouslySetInnerHTML:{__html:i}}:{children:(0,u.jsxs)(u.Fragment,{children:[o,m&&(0,u.jsx)(te.A,{...l&&{width:12,height:12}})]})};return a?(0,u.jsx)(Z.A,{href:s?p:a,...c,...g}):(0,u.jsx)(Z.A,{to:d,isNavLink:!0,...(t||n)&&{isActive:(e,t)=>n?ee(n,t.pathname):t.pathname.startsWith(f)},...c,...g})}function re(e){let{className:t,isDropdownItem:n=!1,...r}=e;const o=(0,u.jsx)(ne,{className:(0,a.A)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n,...r});return n?(0,u.jsx)("li",{children:o}):o}function ae(e){let{className:t,isDropdownItem:n,...r}=e;return(0,u.jsx)("li",{className:"menu__list-item",children:(0,u.jsx)(ne,{className:(0,a.A)("menu__link",t),...r})})}function oe(e){let{mobile:t=!1,position:n,...r}=e;const a=t?ae:re;return(0,u.jsx)(a,{...r,activeClassName:r.activeClassName??(t?"menu__link--active":"navbar__link--active")})}var ie=n(1422),le=n(9169),se=n(4586);const ce={dropdownNavbarItemMobile:"dropdownNavbarItemMobile_S0Fm"};function ue(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:o,onClick:i,...l}=e;const s=(0,r.useRef)(null),[c,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,u.jsxs)("div",{ref:s,className:(0,a.A)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":c}),children:[(0,u.jsx)(ne,{"aria-haspopup":"true","aria-expanded":c,role:"button",href:l.to?void 0:"#",className:(0,a.A)("navbar__link",o),...l,onClick:l.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!c))},children:l.children??l.label}),(0,u.jsx)("ul",{className:"dropdown__menu",children:t.map(((e,t)=>(0,r.createElement)(_e,{isDropdownItem:!0,activeClassName:"dropdown__link--active",...e,key:t})))})]})}function fe(e){let{items:t,className:n,position:o,onClick:i,...s}=e;const c=function(){const{siteConfig:{baseUrl:e}}=(0,se.A)(),{pathname:t}=(0,l.zy)();return t.replace(e,"/")}(),d=ue(t,c),{collapsed:f,toggleCollapsed:p,setCollapsed:m}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&m(!d)}),[c,d,m]),(0,u.jsxs)("li",{className:(0,a.A)("menu__list-item",{"menu__list-item--collapsed":f}),children:[(0,u.jsx)(ne,{role:"button",className:(0,a.A)(ce.dropdownNavbarItemMobile,"menu__link menu__link--sublist menu__link--sublist-caret",n),...s,onClick:e=>{e.preventDefault(),p()},children:s.children??s.label}),(0,u.jsx)(ie.N,{lazy:!0,as:"ul",className:"menu__list",collapsed:f,children:t.map(((e,t)=>(0,r.createElement)(_e,{mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active",...e,key:t})))})]})}function pe(e){let{mobile:t=!1,...n}=e;const r=t?fe:de;return(0,u.jsx)(r,{...n})}var me=n(2131);function ge(e){let{width:t=20,height:n=20,...r}=e;return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0,...r,children:(0,u.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 be=n(418);const ye={navbarSearchContainer:"navbarSearchContainer_Bca1"};function ve(e){let{children:t,className:n}=e;return(0,u.jsx)("div",{className:(0,a.A)(n,ye.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 Ee={default:oe,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:r,queryString:a="",...o}=e;const{i18n:{currentLocale:i,locales:c,localeConfigs:d}}=(0,se.A)(),f=(0,me.o)(),{search:p,hash:m}=(0,l.zy)(),g=[...n,...c.map((e=>{const n=`${`pathname://${f.createUrl({locale:e,fullyQualified:!1})}`}${p}${m}${a}`;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,u.jsx)(pe,{...o,mobile:t,label:(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(ge,{className:he}),h]}),items:g})},search:function(e){let{mobile:t,className:n}=e;return t?null:(0,u.jsx)(ve,{className:n,children:(0,u.jsx)(be.A,{})})},dropdown:pe,html:function(e){let{value:t,className:n,mobile:r=!1,isDropdownItem:o=!1}=e;const i=o?"li":"div";return(0,u.jsx)(i,{className:(0,a.A)({navbar__item:!r&&!o,"menu__list-item":r},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:r,...a}=e;const{activeDoc:o}=(0,we.zK)(r),i=(0,ke.QB)(t,r),l=o?.path===i?.path;return null===i||i.unlisted&&!l?null:(0,u.jsx)(oe,{exact:!0,...a,isActive:()=>l||!!o?.sidebar&&o.sidebar===i.sidebar,label:n??i.id,to:i.path})},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:r,...a}=e;const{activeDoc:o}=(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,u.jsx)(oe,{exact:!0,...a,isActive:()=>o?.sidebar===t,label:n??i.label,to:i.path})},docsVersion:function(e){let{label:t,to:n,docsPluginId:r,...a}=e;const o=(0,ke.Vd)(r)[0],i=t??o.label,l=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(o).path;return(0,u.jsx)(oe,{...a,label:i,to:l})},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:r,dropdownItemsBefore:a,dropdownItemsAfter:o,...i}=e;const{search:c,hash:d}=(0,l.zy)(),f=(0,we.zK)(n),p=(0,we.jh)(n),{savePreferredVersionName:m}=(0,xe.g1)(n),g=[...a,...p.map((e=>{const t=f.alternateDocVersions[e.name]??Se(e);return{label:e.label,to:`${t.path}${c}${d}`,isActive:()=>e===f.activeVersion,onClick:()=>m(e.name)}})),...o],h=(0,ke.Vd)(n)[0],b=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,y=t&&g.length>1?void 0:Se(h).path;return g.length<=1?(0,u.jsx)(oe,{...i,mobile:t,label:b,to:y,isActive:r?()=>!1:void 0}):(0,u.jsx)(pe,{...i,mobile:t,label:b,to:y,items:g,isActive:r?()=>!1:void 0})}};function _e(e){let{type:t,...n}=e;const r=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),a=Ee[r];if(!a)throw new Error(`No NavbarItem component found for type "${t}".`);return(0,u.jsx)(a,{...n})}function Ce(){const e=(0,N.M)(),t=(0,w.p)().navbar.items;return(0,u.jsx)("ul",{className:"menu__list",children:t.map(((t,n)=>(0,r.createElement)(_e,{mobile:!0,...t,onClick:()=>e.toggle(),key:n})))})}function Ae(e){return(0,u.jsx)("button",{...e,type:"button",className:"clean-btn navbar-sidebar__back",children:(0,u.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=M();return(0,u.jsxs)(u.Fragment,{children:[!e&&(0,u.jsx)(Ae,{onClick:()=>t.hide()}),t.content]})}function Ne(){const e=(0,N.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,u.jsx)(D,{header:(0,u.jsx)(Q,{}),primaryMenu:(0,u.jsx)(Ce,{}),secondaryMenu:(0,u.jsx)(Te,{})}):null}const je={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function Le(e){return(0,u.jsx)("div",{role:"presentation",...e,className:(0,a.A)("navbar-sidebar__backdrop",e.className)})}function Pe(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:o}}=(0,w.p)(),i=(0,N.M)(),{navbarRef:l,isNavbarVisible:d}=function(e){const[t,n]=(0,r.useState)(e),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(o.current=e.getBoundingClientRect().height)}),[]);return(0,j.Mq)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i=l?n(!1):i+c{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return a.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return(0,u.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,a.A)("navbar","navbar--fixed-top",n&&[je.navbarHideable,!d&&je.navbarHidden],{"navbar--dark":"dark"===o,"navbar--primary":"primary"===o,"navbar-sidebar--show":i.shown}),children:[t,(0,u.jsx)(Le,{onClick:i.toggle}),(0,u.jsx)(Ne,{})]})}var Oe=n(440);const Re={errorBoundaryError:"errorBoundaryError_a6uf",errorBoundaryFallback:"errorBoundaryFallback_VBag"};function Ie(e){return(0,u.jsx)("button",{type:"button",...e,children:(0,u.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 Me(e){let{error:t}=e;const n=(0,Oe.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,u.jsx)("p",{className:Re.errorBoundaryError,children:n})}class De extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}const Fe="right";function ze(e){let{width:t=30,height:n=30,className:r,...a}=e;return(0,u.jsx)("svg",{className:r,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true",...a,children:(0,u.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"})})}function $e(){const{toggle:e,shown:t}=(0,N.M)();return(0,u.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,u.jsx)(ze,{})})}const Be={colorModeToggle:"colorModeToggle_DEke"};function Ue(e){let{items:t}=e;return(0,u.jsx)(u.Fragment,{children:t.map(((e,t)=>(0,u.jsx)(De,{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,u.jsx)(_e,{...e})},t)))})}function He(e){let{left:t,right:n}=e;return(0,u.jsxs)("div",{className:"navbar__inner",children:[(0,u.jsx)("div",{className:"navbar__items",children:t}),(0,u.jsx)("div",{className:"navbar__items navbar__items--right",children:n})]})}function Ve(){const e=(0,N.M)(),t=(0,w.p)().navbar.items,[n,r]=function(e){function t(e){return"left"===(e.position??Fe)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),a=t.find((e=>"search"===e.type));return(0,u.jsx)(He,{left:(0,u.jsxs)(u.Fragment,{children:[!e.disabled&&(0,u.jsx)($e,{}),(0,u.jsx)(Y,{}),(0,u.jsx)(Ue,{items:n})]}),right:(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(Ue,{items:r}),(0,u.jsx)(G,{className:Be.colorModeToggle}),!a&&(0,u.jsx)(ve,{children:(0,u.jsx)(be.A,{})})]})})}function We(){return(0,u.jsx)(Pe,{children:(0,u.jsx)(Ve,{})})}function Ge(e){let{item:t}=e;const{to:n,href:r,label:a,prependBaseUrlToHref:o,...i}=t,l=(0,X.A)(n),s=(0,X.A)(r,{forcePrependBaseUrl:!0});return(0,u.jsxs)(Z.A,{className:"footer__link-item",...r?{href:o?s:r}:{to:l},...i,children:[a,r&&!(0,J.A)(r)&&(0,u.jsx)(te.A,{})]})}function qe(e){let{item:t}=e;return t.html?(0,u.jsx)("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):(0,u.jsx)("li",{className:"footer__item",children:(0,u.jsx)(Ge,{item:t})},t.href??t.to)}function Ye(e){let{column:t}=e;return(0,u.jsxs)("div",{className:"col footer__col",children:[(0,u.jsx)("div",{className:"footer__title",children:t.title}),(0,u.jsx)("ul",{className:"footer__items clean-list",children:t.items.map(((e,t)=>(0,u.jsx)(qe,{item:e},t)))})]})}function Ke(e){let{columns:t}=e;return(0,u.jsx)("div",{className:"row footer__links",children:t.map(((e,t)=>(0,u.jsx)(Ye,{column:e},t)))})}function Qe(){return(0,u.jsx)("span",{className:"footer__link-separator",children:"\xb7"})}function Ze(e){let{item:t}=e;return t.html?(0,u.jsx)("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):(0,u.jsx)(Ge,{item:t})}function Xe(e){let{links:t}=e;return(0,u.jsx)("div",{className:"footer__links text--center",children:(0,u.jsx)("div",{className:"footer__links",children:t.map(((e,n)=>(0,u.jsxs)(r.Fragment,{children:[(0,u.jsx)(Ze,{item:e}),t.length!==n+1&&(0,u.jsx)(Qe,{})]},n)))})})}function Je(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?(0,u.jsx)(Ke,{columns:t}):(0,u.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,u.jsx)(et.A,{className:(0,a.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,u.jsx)(Z.A,{href:t.href,className:tt.footerLogoLink,target:t.target,children:(0,u.jsx)(nt,{logo:t})}):(0,u.jsx)(nt,{logo:t})}function at(e){let{copyright:t}=e;return(0,u.jsx)("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function ot(e){let{style:t,links:n,logo:r,copyright:o}=e;return(0,u.jsx)("footer",{className:(0,a.A)("footer",{"footer--dark":"dark"===t}),children:(0,u.jsxs)("div",{className:"container container-fluid",children:[n,(r||o)&&(0,u.jsxs)("div",{className:"footer__bottom text--center",children:[r&&(0,u.jsx)("div",{className:"margin-bottom--sm",children:r}),o]})]})})}function it(){const{footer:e}=(0,w.p)();if(!e)return null;const{copyright:t,links:n,logo:r,style:a}=e;return(0,u.jsx)(ot,{style:a,links:n&&n.length>0&&(0,u.jsx)(Je,{links:n}),logo:r&&(0,u.jsx)(rt,{logo:r}),copyright:t&&(0,u.jsx)(at,{copyright:t})})}const lt=r.memo(it),st=(0,L.fM)([F.a,k.oq,j.Tv,xe.VQ,i.Jx,function(e){let{children:t}=e;return(0,u.jsx)(P.y_,{children:(0,u.jsx)(N.e,{children:(0,u.jsx)(R,{children:t})})})}]);function ct(e){let{children:t}=e;return(0,u.jsx)(st,{children:t})}var ut=n(1107);function dt(e){let{error:t,tryAgain:n}=e;return(0,u.jsx)("main",{className:"container margin-vert--xl",children:(0,u.jsx)("div",{className:"row",children:(0,u.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,u.jsx)(ut.A,{as:"h1",className:"hero__title",children:(0,u.jsx)(s.A,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed",children:"This page crashed."})}),(0,u.jsx)("div",{className:"margin-vert--lg",children:(0,u.jsx)(Ie,{onClick:n,className:"button button--primary shadow--lw"})}),(0,u.jsx)("hr",{}),(0,u.jsx)("div",{className:"margin-vert--md",children:(0,u.jsx)(Me,{error:t})})]})})})}const ft={mainWrapper:"mainWrapper_z2l0"};function pt(e){const{children:t,noFooter:n,wrapperClassName:r,title:l,description:s}=e;return(0,b.J)(),(0,u.jsxs)(ct,{children:[(0,u.jsx)(i.be,{title:l,description:s}),(0,u.jsx)(v,{}),(0,u.jsx)(T,{}),(0,u.jsx)(We,{}),(0,u.jsx)("div",{id:d,className:(0,a.A)(h.G.wrapper.main,ft.mainWrapper,r),children:(0,u.jsx)(o.A,{fallback:e=>(0,u.jsx)(dt,{...e}),children:t})}),!n&&(0,u.jsx)(lt,{})]})}},3465:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});n(6540);var r=n(8774),a=n(6025),o=n(4586),i=n(6342),l=n(1122),s=n(4848);function c(e){let{logo:t,alt:n,imageClassName:r}=e;const o={light:(0,a.A)(t.src),dark:(0,a.A)(t.srcDark||t.src)},i=(0,s.jsx)(l.A,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?(0,s.jsx)("div",{className:r,children:i}):i}function u(e){const{siteConfig:{title:t}}=(0,o.A)(),{navbar:{title:n,logo:l}}=(0,i.p)(),{imageClassName:u,titleClassName:d,...f}=e,p=(0,a.A)(l?.href||"/"),m=n?"":t,g=l?.alt??m;return(0,s.jsxs)(r.A,{to:p,...f,...l?.target&&{target:l.target},children:[l&&(0,s.jsx)(c,{logo:l,alt:g,imageClassName:u}),null!=n&&(0,s.jsx)("b",{className:d,children:n})]})}},1463:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});n(6540);var r=n(5260),a=n(4848);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return(0,a.jsxs)(r.A,{children:[t&&(0,a.jsx)("meta",{name:"docusaurus_locale",content:t}),n&&(0,a.jsx)("meta",{name:"docusaurus_version",content:n}),o&&(0,a.jsx)("meta",{name:"docusaurus_tag",content:o}),i&&(0,a.jsx)("meta",{name:"docsearch:language",content:i}),n&&(0,a.jsx)("meta",{name:"docsearch:version",content:n}),o&&(0,a.jsx)("meta",{name:"docsearch:docusaurus_tag",content:o})]})}},1122:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});var r=n(6540),a=n(4164),o=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 c(e){let{className:t,children:n}=e;const c=(0,o.A)(),{colorMode:u}=(0,i.G)();return(0,s.jsx)(s.Fragment,{children:(c?"dark"===u?["dark"]:["light"]:["light","dark"]).map((e=>{const o=n({theme:e,className:(0,a.A)(t,l.themedComponent,l[`themedComponent--${e}`])});return(0,s.jsx)(r.Fragment,{children:o},e)}))})}function u(e){const{sources:t,className:n,alt:r,...a}=e;return(0,s.jsx)(c,{className:n,children:e=>{let{theme:n,className:o}=e;return(0,s.jsx)("img",{src:t[n],alt:r,className:o,...a})}})}},1422:(e,t,n)=>{"use strict";n.d(t,{N:()=>b,u:()=>c});var r=n(6540),a=n(8193),o=n(205),i=n(3109),l=n(4848);const s="ease-in-out";function c(e){let{initialState:t}=e;const[n,a]=(0,r.useState)(t??!1),o=(0,r.useCallback)((()=>{a((e=>!e))}),[]);return{collapsed:n,setCollapsed:a,toggleCollapsed:o}}const u={display:"none",overflow:"hidden",height:"0px"},d={display:"block",overflow:"visible",height:"auto"};function f(e,t){const n=t?u:d;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function p(e){let{collapsibleRef:t,collapsed:n,animation:a}=e;const o=(0,r.useRef)(!1);(0,r.useEffect)((()=>{const e=t.current;function r(){const t=e.scrollHeight,n=a?.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 ${a?.easing??s}`,height:`${t}px`}}function l(){const t=r();e.style.transition=t.transition,e.style.height=t.height}if(!o.current)return f(e,n),void(o.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(l(),requestAnimationFrame((()=>{e.style.height=u.height,e.style.overflow=u.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{l()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,a])}function m(e){if(!a.A.canUseDOM)return e?u:d}function g(e){let{as:t="div",collapsed:n,children:a,animation:o,onCollapseTransitionEnd:i,className:s,disableSSRStyle:c}=e;const u=(0,r.useRef)(null);return p({collapsibleRef:u,collapsed:n,animation:o}),(0,l.jsx)(t,{ref:u,style:c?void 0:m(n),onTransitionEnd:e=>{"height"===e.propertyName&&(f(u.current,n),i?.(n))},className:s,children:a})}function h(e){let{collapsed:t,...n}=e;const[a,i]=(0,r.useState)(!t),[s,c]=(0,r.useState)(t);return(0,o.A)((()=>{t||i(!0)}),[t]),(0,o.A)((()=>{a&&c(t)}),[a,t]),a?(0,l.jsx)(g,{...n,collapsed:s}):null}function b(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),a=n(2303),o=n(9466),i=n(9532),l=n(6342),s=n(4848);const c=(0,o.Wf)("docusaurus.announcement.dismiss"),u=(0,o.Wf)("docusaurus.announcement.id"),d=()=>"true"===c.get(),f=e=>c.set(String(e)),p=r.createContext(null);function m(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,l.p)(),t=(0,a.A)(),[n,o]=(0,r.useState)((()=>!!t&&d()));(0,r.useEffect)((()=>{o(d())}),[]);const i=(0,r.useCallback)((()=>{f(!0),o(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=u.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;u.set(t),r&&f(!1),!r&&d()||o(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return(0,s.jsx)(p.Provider,{value:n,children:t})}function g(){const e=(0,r.useContext)(p);if(!e)throw new i.dV("AnnouncementBarProvider");return e}},5293:(e,t,n)=>{"use strict";n.d(t,{G:()=>b,a:()=>h});var r=n(6540),a=n(8193),o=n(9532),i=n(9466),l=n(6342),s=n(4848);const c=r.createContext(void 0),u="theme",d=(0,i.Wf)(u),f={light:"light",dark:"dark"},p=e=>e===f.dark?f.dark:f.light,m=e=>a.A.canUseDOM?p(document.documentElement.getAttribute("data-theme")):p(e),g=e=>{d.set(p(e))};function h(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.p)(),[a,o]=(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:a=!0}=r;t?(o(t),a&&g(t)):(o(n?window.matchMedia("(prefers-color-scheme: dark)").matches?f.dark:f.light:e),d.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",p(a))}),[a]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==u)return;const t=d.get();null!==t&&i(p(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:a,setColorMode:i,get isDarkTheme(){return a===f.dark},setLightTheme(){i(f.light)},setDarkTheme(){i(f.dark)}})),[a,i])}();return(0,s.jsx)(c.Provider,{value:n,children:t})}function b(){const e=(0,r.useContext)(c);if(null==e)throw new o.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:()=>b,g1:()=>v});var r=n(6540),a=n(4070),o=n(7065),i=n(6342),l=n(1754),s=n(9532),c=n(9466),u=n(4848);const d=e=>`docs-preferred-version-${e}`,f={save:(e,t,n)=>{(0,c.Wf)(d(e),{persistence:t}).set(n)},read:(e,t)=>(0,c.Wf)(d(e),{persistence:t}).get(),clear:(e,t)=>{(0,c.Wf)(d(e),{persistence:t}).del()}},p=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const m=r.createContext(null);function g(){const e=(0,a.Gy)(),t=(0,i.p)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[o,l]=(0,r.useState)((()=>p(n)));(0,r.useEffect)((()=>{l(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function a(e){const t=f.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(f.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,a(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[o,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){f.save(e,t,n),l((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function h(e){let{children:t}=e;const n=g();return(0,u.jsx)(m.Provider,{value:n,children:t})}function b(e){let{children:t}=e;return l.C5?(0,u.jsx)(h,{children:t}):(0,u.jsx)(u.Fragment,{children:t})}function y(){const e=(0,r.useContext)(m);if(!e)throw new s.dV("DocsPreferredVersionContextProvider");return e}function v(e){void 0===e&&(e=o.W);const t=(0,a.ht)(e),[n,i]=y(),{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:()=>c});var r=n(6540),a=n(9532),o=n(4848);const i=Symbol("EmptyContext"),l=r.createContext(i);function s(e){let{children:t,name:n,items:a}=e;const i=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return(0,o.jsx)(l.Provider,{value:i,children:t})}function c(){const e=(0,r.useContext)(l);if(e===i)throw new a.dV("DocsSidebarProvider");return e}},2252:(e,t,n)=>{"use strict";n.d(t,{n:()=>l,r:()=>s});var r=n(6540),a=n(9532),o=n(4848);const i=r.createContext(null);function l(e){let{children:t,version:n}=e;return(0,o.jsx)(i.Provider,{value:n,children:t})}function s(){const e=(0,r.useContext)(i);if(null===e)throw new a.dV("DocsVersionProvider");return e}},9876:(e,t,n)=>{"use strict";n.d(t,{e:()=>p,M:()=>m});var r=n(6540),a=n(5600),o=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 c=n(6342),u=n(4848);const d=r.createContext(void 0);function f(){const e=function(){const e=(0,a.YL)(),{items:t}=(0,c.p)().navbar;return 0===t.length&&!e.component}(),t=(0,o.l)(),n=!e&&"mobile"===t,[i,l]=(0,r.useState)(!1);s((()=>{if(i)return l(!1),!1}));const u=(0,r.useCallback)((()=>{l((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&l(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:u,shown:i})),[e,n,u,i])}function p(e){let{children:t}=e;const n=f();return(0,u.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:()=>c,YL:()=>s,y_:()=>l});var r=n(6540),a=n(9532),o=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,o.jsx)(i.Provider,{value:n,children:t})}function s(){const e=(0,r.useContext)(i);if(!e)throw new a.dV("NavbarSecondaryMenuContentProvider");return e[0]}function c(e){let{component:t,props:n}=e;const o=(0,r.useContext)(i);if(!o)throw new a.dV("NavbarSecondaryMenuContentProvider");const[,l]=o,s=(0,a.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:()=>a,J:()=>o});var r=n(6540);const a="navigation-with-keyboard";function o(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},4581:(e,t,n)=>{"use strict";n.d(t,{l:()=>l});var r=n(6540),a=n(8193);const o={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(!a.A.canUseDOM)throw new Error("getWindowSize() should only be called after React hydration");return window.innerWidth>e?o.desktop:o.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"}}},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:()=>y,C5:()=>f,$S:()=>g,cC:()=>p,B5:()=>C,Vd:()=>S,QB:()=>_,fW:()=>E,OF:()=>x,Y:()=>w});var r=n(6540),a=n(6347),o=n(2831),i=n(4070),l=n(5597),s=n(2252),c=n(6588);function u(e){return Array.from(new Set(e))}var d=n(9169);const f=!!i.Gy;function p(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,a.zy)(),t=(0,c.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),b=(e,t)=>e.some((e=>y(e,t)));function y(e,t){return"link"===e.type?h(e.href,t):"category"===e.type&&(h(e.href,t)||b(e.items,t))}function v(e,t){switch(e.type){case"category":return y(e,t)||e.items.some((e=>v(e,t)));case"link":return!e.unlisted||y(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 a=[];return function e(t){for(const o of t)if("category"===o.type&&((0,d.ys)(o.href,n)||e(o.items))||"link"===o.type&&(0,d.ys)(o.href,n)){return r&&"category"!==o.type||a.unshift(o),!0}return!1}(t),a}function x(){const e=(0,c.t)(),{pathname:t}=(0,a.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),a=(0,i.r7)(e);return(0,r.useMemo)((()=>u([t,n,a].filter(Boolean))),[t,n,a])}function E(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,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- ${u(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function C(e){let{route:t}=e;const n=(0,a.zy)(),r=(0,s.r)(),i=t.routes,l=i.find((e=>(0,a.B6)(n.pathname,e)));if(!l)return null;const c=l.sidebar,u=c?r.docsSidebars[c]:void 0;return{docElement:(0,o.v)(i),sidebarName:c,sidebarItems:u}}function A(e){return e.filter((e=>!("category"===e.type||"link"===e.type)||!!m(e)))}},1213:(e,t,n)=>{"use strict";n.d(t,{e3:()=>f,be:()=>u,Jx:()=>p});var r=n(6540),a=n(4164),o=n(5260),i=n(6803),l=n(6025),s=n(4586);var c=n(4848);function u(e){let{title:t,description:n,keywords:r,image:a,children:i}=e;const u=function(e){const{siteConfig:t}=(0,s.A)(),{title:n,titleDelimiter:r}=t;return e?.trim().length?`${e.trim()} ${r} ${n}`:n}(t),{withBaseUrl:d}=(0,l.h)(),f=a?d(a,{absolute:!0}):void 0;return(0,c.jsxs)(o.A,{children:[t&&(0,c.jsx)("title",{children:u}),t&&(0,c.jsx)("meta",{property:"og:title",content:u}),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}),f&&(0,c.jsx)("meta",{property:"og:image",content:f}),f&&(0,c.jsx)("meta",{name:"twitter:image",content:f}),i]})}const d=r.createContext(void 0);function f(e){let{className:t,children:n}=e;const i=r.useContext(d),l=(0,a.A)(i,t);return(0,c.jsxs)(d.Provider,{value:l,children:[(0,c.jsx)(o.A,{children:(0,c.jsx)("html",{className:l})}),n]})}function p(e){let{children:t}=e;const n=(0,i.A)(),r=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const o=`plugin-id-${n.plugin.id}`;return(0,c.jsx)(f,{className:(0,a.A)(r,o),children:t})}},9532:(e,t,n)=>{"use strict";n.d(t,{Be:()=>c,ZC:()=>l,_q:()=>i,dV:()=>s,fM:()=>u});var r=n(6540),a=n(205),o=n(4848);function i(e){const t=(0,r.useRef)(e);return(0,a.A)((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function l(e){const t=(0,r.useRef)();return(0,a.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 c(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function u(e){return t=>{let{children:n}=t;return(0,o.jsx)(o.Fragment,{children:e.reduceRight(((e,t)=>(0,o.jsx)(t,{children:e})),n)})}}},9169:(e,t,n)=>{"use strict";n.d(t,{Dt:()=>l,ys:()=>i});var r=n(6540),a=n(8328),o=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,o.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 a(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(a).flatMap((e=>e.routes??[])))}(n)}({routes:a.A,baseUrl:e})),[e])}},3104:(e,t,n)=>{"use strict";n.d(t,{Mq:()=>f,Tv:()=>c,gk:()=>p});var r=n(6540),a=n(8193),o=n(2303),i=(n(205),n(9532)),l=n(4848);const s=r.createContext(void 0);function c(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 u(){const e=(0,r.useContext)(s);if(null==e)throw new i.dV("ScrollControllerProvider");return e}const d=()=>a.A.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function f(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=u(),a=(0,r.useRef)(d()),o=(0,i._q)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=d();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[o,n,...t])}function p(){const e=(0,r.useRef)(null),t=(0,o.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 a=document.documentElement.scrollTop;(n&&a>e||!n&&at&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},2967:(e,t,n)=>{"use strict";n.d(t,{Cy:()=>r,tU:()=>a});n(4586);const r="default";function a(e,t){return`docs-${e}-${t}`}},9466:(e,t,n)=>{"use strict";n.d(t,{Wf:()=>s});n(6540);const r="localStorage";function a(e){let{key:t,oldValue:n,newValue:r,storage:a}=e;if(n===r)return;const o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,a),window.dispatchEvent(o)}function o(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=o(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),a({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),a({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),a=n(6347),o=n(440);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:l}}=(0,r.A)(),{pathname:s}=(0,a.zy)(),c=(0,o.applyTrailingSlash)(s,{trailingSlash:n,baseUrl:e}),u=l===i?e:e.replace(`/${l}/`,"/"),d=c.replace(e,"");return{createUrl:function(e){let{locale:n,fullyQualified:r}=e;return`${r?t:""}${function(e){return e===i?`${u}`:`${u}${e}/`}(n)}${d}`}}}},5062:(e,t,n)=>{"use strict";n.d(t,{$:()=>i});var r=n(6540),a=n(6347),o=n(9532);function i(e){const t=(0,a.zy)(),n=(0,o.ZC)(t),i=(0,o._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:()=>a});var r=n(4586);function a(){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 a(e){return e.endsWith("/")?e:`${e}/`}function o(e){return(0,r.removeSuffix)(e,"/")}t.addTrailingSlash=a,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?a(s):o(s));var s;return e.replace(i,l)},t.addLeadingSlash=function(e){return(0,r.addPrefix)(e,"/")},t.removeTrailingSlash=o},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 a=n(2983);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}}),Object.defineProperty(t,"addTrailingSlash",{enumerable:!0,get:function(){return a.addTrailingSlash}}),Object.defineProperty(t,"addLeadingSlash",{enumerable:!0,get:function(){return a.addLeadingSlash}}),Object.defineProperty(t,"removeTrailingSlash",{enumerable:!0,get:function(){return a.removeTrailingSlash}});var o=n(2566);Object.defineProperty(t,"addPrefix",{enumerable:!0,get:function(){return o.addPrefix}}),Object.defineProperty(t,"removeSuffix",{enumerable:!0,get:function(){return o.removeSuffix}}),Object.defineProperty(t,"addSuffix",{enumerable:!0,get:function(){return o.addSuffix}}),Object.defineProperty(t,"removePrefix",{enumerable:!0,get:function(){return o.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:()=>C,yJ:()=>p,sC:()=>T,AO:()=>f});var r=n(8168);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r=0;f--){var p=i[f];"."===p?o(i,f):".."===p?(o(i,f),d++):d&&(o(i,f),d--)}if(!c)for(;d--;d)i.unshift("..");!c||""===i[0]||i[0]&&a(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 c(e){return"/"===e.charAt(0)?e.substr(1):e}function u(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 f(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function p(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.A)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!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,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=p(e,t,g(),w.location);u.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},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),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={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]||a}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var c=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var a=p(n);a&&a!==m&&e(t,a,r)}var i=u(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,a,o,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 c=[n,r,a,o,i,l],u=0;(s=new Error(t.replace(/%s/g,(function(){return c[u++]})))).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,a;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 a(e,t,n){return en?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}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=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),c=o.querySelector(r.barSelector),u=r.speed,d=r.easing;return o.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(c,i(e,u,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){s(o,{transition:"all "+u+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),u)}),u)):setTimeout(t,u)})),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)*a(Math.random()*t,.1,.95)),t=a(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");u(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),l=e?"-100":o(n.status||0),c=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&p(a),c!=document.body&&u(c,"nprogress-custom-parent"),c.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&&p(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,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function c(e,t){return("string"==typeof e?e:f(e)).indexOf(" "+t+" ")>=0}function u(e,t){var n=f(e),r=n+t;c(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=f(e);c(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function f(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function p(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},7022:()=>{!function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},parameter:{pattern:/(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/,alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var a=["comment","function-name","for-or-select","assign-left","parameter","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=r.variable[1].inside,i=0;i{Prism.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},Prism.languages.webmanifest=Prism.languages.json},9700:()=>{!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,l=i.length;-1!==n.code.indexOf(a=t(r,l));)++l;return i[l]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(l){for(var s=0;s=o.length);s++){var c=l[s];if("string"==typeof c||c.content&&"string"==typeof c.content){var u=o[a],d=n.tokenStack[u],f="string"==typeof c?c:c.content,p=t(r,u),m=f.indexOf(p);if(m>-1){++a;var g=f.substring(0,m),h=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),b=f.substring(m+p.length),y=[];g&&y.push.apply(y,i([g])),y.push(h),b&&y.push.apply(y,i([b])),"string"==typeof c?l.splice.apply(l,[s,1].concat(y)):c.content=y}}else c.content&&i(c.content)}return l}(n.tokens)}}}})}(Prism)},3554:()=>{!function(e){var t=/\/\*[\s\S]*?\*\/|\/\/.*|#(?!\[).*/,n=[{pattern:/\b(?:false|true)\b/i,alias:"boolean"},{pattern:/(::\s*)\b[a-z_]\w*\b(?!\s*\()/i,greedy:!0,lookbehind:!0},{pattern:/(\b(?:case|const)\s+)\b[a-z_]\w*(?=\s*[;=])/i,greedy:!0,lookbehind:!0},/\b(?:null)\b/i,/\b[A-Z_][A-Z0-9_]*\b(?!\s*\()/],r=/\b0b[01]+(?:_[01]+)*\b|\b0o[0-7]+(?:_[0-7]+)*\b|\b0x[\da-f]+(?:_[\da-f]+)*\b|(?:\b\d+(?:_\d+)*\.?(?:\d+(?:_\d+)*)?|\B\.\d+)(?:e[+-]?\d+)?/i,a=/|\?\?=?|\.{3}|\??->|[!=]=?=?|::|\*\*=?|--|\+\+|&&|\|\||<<|>>|[?~]|[/^|%*&<>.+-]=?/,o=/[{}\[\](),:;]/;e.languages.php={delimiter:{pattern:/\?>$|^<\?(?:php(?=\s)|=)?/i,alias:"important"},comment:t,variable:/\$+(?:\w+\b|(?=\{))/,package:{pattern:/(namespace\s+|use\s+(?:function\s+)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,lookbehind:!0,inside:{punctuation:/\\/}},"class-name-definition":{pattern:/(\b(?:class|enum|interface|trait)\s+)\b[a-z_]\w*(?!\\)\b/i,lookbehind:!0,alias:"class-name"},"function-definition":{pattern:/(\bfunction\s+)[a-z_]\w*(?=\s*\()/i,lookbehind:!0,alias:"function"},keyword:[{pattern:/(\(\s*)\b(?:array|bool|boolean|float|int|integer|object|string)\b(?=\s*\))/i,alias:"type-casting",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|object|self|static|string)\b(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|never|object|self|static|string|void)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/\b(?:array(?!\s*\()|bool|float|int|iterable|mixed|object|string|void)\b/i,alias:"type-declaration",greedy:!0},{pattern:/(\|\s*)(?:false|null)\b|\b(?:false|null)(?=\s*\|)/i,alias:"type-declaration",greedy:!0,lookbehind:!0},{pattern:/\b(?:parent|self|static)(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(\byield\s+)from\b/i,lookbehind:!0},/\bclass\b/i,{pattern:/((?:^|[^\s>:]|(?:^|[^-])>|(?:^|[^:]):)\s*)\b(?:abstract|and|array|as|break|callable|case|catch|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|enum|eval|exit|extends|final|finally|fn|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|match|namespace|never|new|or|parent|print|private|protected|public|readonly|require|require_once|return|self|static|switch|throw|trait|try|unset|use|var|while|xor|yield|__halt_compiler)\b/i,lookbehind:!0}],"argument-name":{pattern:/([(,]\s*)\b[a-z_]\w*(?=\s*:(?!:))/i,lookbehind:!0},"class-name":[{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self|\s+static))\s+|\bcatch\s*\()\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/(\|\s*)\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/\b[a-z_]\w*(?!\\)\b(?=\s*\|)/i,greedy:!0},{pattern:/(\|\s*)(?:\\?\b[a-z_]\w*)+\b/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(?:\\?\b[a-z_]\w*)+\b(?=\s*\|)/i,alias:"class-name-fully-qualified",greedy:!0,inside:{punctuation:/\\/}},{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self\b|\s+static\b))\s+|\bcatch\s*\()(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*\$)/i,alias:"type-declaration",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-declaration"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*::)/i,alias:["class-name-fully-qualified","static-context"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/([(,?]\s*)[a-z_]\w*(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-hint"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b[a-z_]\w*(?!\\)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:["class-name-fully-qualified","return-type"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:n,function:{pattern:/(^|[^\\\w])\\?[a-z_](?:[\w\\]*\w)?(?=\s*\()/i,lookbehind:!0,inside:{punctuation:/\\/}},property:{pattern:/(->\s*)\w+/,lookbehind:!0},number:r,operator:a,punctuation:o};var i={pattern:/\{\$(?:\{(?:\{[^{}]+\}|[^{}]+)\}|[^{}])+\}|(^|[^\\{])\$+(?:\w+(?:\[[^\r\n\[\]]+\]|->\w+)?)/,lookbehind:!0,inside:e.languages.php},l=[{pattern:/<<<'([^']+)'[\r\n](?:.*[\r\n])*?\1;/,alias:"nowdoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<'[^']+'|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<'?|[';]$/}}}},{pattern:/<<<(?:"([^"]+)"[\r\n](?:.*[\r\n])*?\1;|([a-z_]\w*)[\r\n](?:.*[\r\n])*?\2;)/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<"?|[";]$/}},interpolation:i}},{pattern:/`(?:\\[\s\S]|[^\\`])*`/,alias:"backtick-quoted-string",greedy:!0},{pattern:/'(?:\\[\s\S]|[^\\'])*'/,alias:"single-quoted-string",greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,alias:"double-quoted-string",greedy:!0,inside:{interpolation:i}}];e.languages.insertBefore("php","variable",{string:l,attribute:{pattern:/#\[(?:[^"'\/#]|\/(?![*/])|\/\/.*$|#(?!\[).*$|\/\*(?:[^*]|\*(?!\/))*\*\/|"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*')+\](?=\s*[a-z$#])/im,greedy:!0,inside:{"attribute-content":{pattern:/^(#\[)[\s\S]+(?=\]$)/,lookbehind:!0,inside:{comment:t,string:l,"attribute-class-name":[{pattern:/([^:]|^)\b[a-z_]\w*(?!\\)\b/i,alias:"class-name",greedy:!0,lookbehind:!0},{pattern:/([^:]|^)(?:\\?\b[a-z_]\w*)+/i,alias:["class-name","class-name-fully-qualified"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:n,number:r,operator:a,punctuation:o}},delimiter:{pattern:/^#\[|\]$/,alias:"punctuation"}}}}),e.hooks.add("before-tokenize",(function(t){if(/<\?/.test(t.code)){e.languages["markup-templating"].buildPlaceholders(t,"php",/<\?(?:[^"'/#]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|(?:\/\/|#(?!\[))(?:[^?\n\r]|\?(?!>))*(?=$|\?>|[\r\n])|#\[|\/\*(?:[^*]|\*(?!\/))*(?:\*\/|$))*?(?:\?>|$)/g)}})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"php")}))}(Prism)},2022:(e,t,n)=>{var r={"./prism-bash":7022,"./prism-json":2514,"./prism-php":3554};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=2022},2694:(e,t,n)=>{"use strict";var r=n(6925);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,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:o,resetWarningCache:a};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),a=n(9982);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n