From b5b3b6cbbd4082721cd3f2face6ecde352ca4312 Mon Sep 17 00:00:00 2001 From: Jenkins Date: Thu, 16 May 2024 17:24:14 +0000 Subject: [PATCH] Update documentation --- 404.html | 12 +++++----- Waku-NodeOperator.pdf | Bin 0 -> 98836 bytes ...tyles.c35f164e.css => styles.539c5141.css} | 2 +- ...rator-7fabb782473f2619b0b05dc209f12f53.pdf | Bin 0 -> 98836 bytes ...cture-c96184127d80feae83e3f85471c5112a.png | Bin 0 -> 88922 bytes assets/js/1f1f54c7.3e32bfbb.js | 1 - assets/js/1f1f54c7.5f12efa7.js | 1 + ...1beae.30097b0e.js => 2f51beae.805c3453.js} | 2 +- assets/js/406e0176.52445de5.js | 1 - assets/js/406e0176.849f2378.js | 1 + assets/js/4aba8864.2a78a1c0.js | 1 - assets/js/4aba8864.449560fb.js | 1 + assets/js/606377f0.580ec420.js | 1 - assets/js/606377f0.753fc738.js | 1 + ...e315a.0aae848c.js => 6c6e315a.741b14f0.js} | 2 +- assets/js/6e8bfb6f.bf5d76ca.js | 1 + assets/js/6e8bfb6f.fc30110e.js | 1 - assets/js/7c28fd94.0e9f43e3.js | 1 - assets/js/7c28fd94.b39bfc8f.js | 1 + assets/js/80a3009a.a9c45f09.js | 1 + assets/js/80a3009a.cbca04d0.js | 1 - assets/js/80ec2a43.411fafd5.js | 1 + assets/js/80ec2a43.8724ba59.js | 1 - assets/js/8a655033.0ca2bbe1.js | 1 + assets/js/8a655033.e68ea003.js | 1 - assets/js/935f2afb.6b05d487.js | 1 + assets/js/935f2afb.8b3c9a0d.js | 1 - ...b8792.24d52410.js => a44b8792.283e071b.js} | 2 +- assets/js/b551b2b5.0fbd8316.js | 1 + assets/js/b99d0044.2d548166.js | 1 - assets/js/b99d0044.8e944340.js | 1 + assets/js/c764ec94.5884ee09.js | 1 - assets/js/c764ec94.db763f0f.js | 1 + assets/js/c9ea0dcf.0032e3c1.js | 1 + assets/js/c9ea0dcf.f1cadf12.js | 1 - ...74e9c.d07c54f9.js => f7974e9c.92d2b8a1.js} | 2 +- assets/js/fb5ea66b.59c6536a.js | 1 + assets/js/fb5ea66b.c3732c53.js | 1 - assets/js/main.0266b0a1.js | 14 ++++++++++++ ...CENSE.txt => main.0266b0a1.js.LICENSE.txt} | 0 assets/js/main.c09ff7fb.js | 14 ------------ assets/js/runtime~main.1ad26c97.js | 1 - assets/js/runtime~main.49e12451.js | 1 + build.json | 10 ++++----- guides/js-waku/configure-discovery/index.html | 12 +++++----- guides/js-waku/debug-waku-dapp/index.html | 12 +++++----- guides/js-waku/faq/index.html | 12 +++++----- guides/js-waku/index.html | 12 +++++----- guides/js-waku/light-send-receive/index.html | 12 +++++----- guides/js-waku/manage-filter/index.html | 12 +++++----- guides/js-waku/message-encryption/index.html | 12 +++++----- guides/js-waku/run-waku-nodejs/index.html | 12 +++++----- .../store-retrieve-messages/index.html | 12 +++++----- guides/js-waku/use-waku-create-app/index.html | 12 +++++----- guides/js-waku/use-waku-react/index.html | 12 +++++----- guides/nwaku/build-source/index.html | 12 +++++----- guides/nwaku/config-methods/index.html | 12 +++++----- guides/nwaku/config-options/index.html | 12 +++++----- guides/nwaku/configure-discovery/index.html | 12 +++++----- guides/nwaku/configure-nwaku/index.html | 12 +++++----- guides/nwaku/faq/index.html | 12 +++++----- guides/nwaku/find-node-address/index.html | 21 ++++++++++++++++++ guides/nwaku/run-docker-compose/index.html | 14 ++++++------ guides/nwaku/run-docker/index.html | 12 +++++----- guides/nwaku/run-node/index.html | 12 +++++----- img/architecture.png | Bin 0 -> 88922 bytes img/graph-use-case.jpeg | Bin 0 -> 285591 bytes img/railgun-use-case.jpeg | Bin 0 -> 1017512 bytes index.html | 14 ++++++------ learn/concepts/content-topics/index.html | 12 +++++----- learn/concepts/discv5/index.html | 12 +++++----- learn/concepts/dns-discovery/index.html | 14 ++++++------ learn/concepts/network-domains/index.html | 12 +++++----- learn/concepts/peer-discovery/index.html | 12 +++++----- learn/concepts/peer-exchange/index.html | 14 ++++++------ learn/concepts/protocols/index.html | 12 +++++----- learn/concepts/static-peers/index.html | 12 +++++----- learn/concepts/transports/index.html | 12 +++++----- learn/faq/index.html | 12 +++++----- learn/glossary/index.html | 12 +++++----- learn/research/index.html | 12 +++++----- learn/security-features/index.html | 12 +++++----- learn/waku-network/index.html | 12 +++++----- learn/waku-vs-libp2p/index.html | 12 +++++----- privacy-policy/index.html | 12 +++++----- .../benchmarks/postgres-adoption/index.html | 12 +++++----- research/index.html | 14 ++++++------ .../capped-bandwidth/index.html | 12 +++++----- .../incentivisation/index.html | 12 +++++----- .../maximum-bandwidth/index.html | 12 +++++----- .../message-propagation/index.html | 12 +++++----- .../rln-key-benchmarks/index.html | 12 +++++----- rules-of-engagement/index.html | 12 +++++----- search-index.json | 2 +- sitemap.xml | 2 +- terms/index.html | 12 +++++----- 96 files changed, 350 insertions(+), 328 deletions(-) create mode 100644 Waku-NodeOperator.pdf rename assets/css/{styles.c35f164e.css => styles.539c5141.css} (53%) create mode 100644 assets/files/Waku-NodeOperator-7fabb782473f2619b0b05dc209f12f53.pdf create mode 100644 assets/images/architecture-c96184127d80feae83e3f85471c5112a.png delete mode 100644 assets/js/1f1f54c7.3e32bfbb.js create mode 100644 assets/js/1f1f54c7.5f12efa7.js rename assets/js/{2f51beae.30097b0e.js => 2f51beae.805c3453.js} (88%) delete mode 100644 assets/js/406e0176.52445de5.js create mode 100644 assets/js/406e0176.849f2378.js delete mode 100644 assets/js/4aba8864.2a78a1c0.js create mode 100644 assets/js/4aba8864.449560fb.js delete mode 100644 assets/js/606377f0.580ec420.js create mode 100644 assets/js/606377f0.753fc738.js rename assets/js/{6c6e315a.0aae848c.js => 6c6e315a.741b14f0.js} (62%) create mode 100644 assets/js/6e8bfb6f.bf5d76ca.js delete mode 100644 assets/js/6e8bfb6f.fc30110e.js delete mode 100644 assets/js/7c28fd94.0e9f43e3.js create mode 100644 assets/js/7c28fd94.b39bfc8f.js create mode 100644 assets/js/80a3009a.a9c45f09.js delete mode 100644 assets/js/80a3009a.cbca04d0.js create mode 100644 assets/js/80ec2a43.411fafd5.js delete mode 100644 assets/js/80ec2a43.8724ba59.js create mode 100644 assets/js/8a655033.0ca2bbe1.js delete mode 100644 assets/js/8a655033.e68ea003.js create mode 100644 assets/js/935f2afb.6b05d487.js delete mode 100644 assets/js/935f2afb.8b3c9a0d.js rename assets/js/{a44b8792.24d52410.js => a44b8792.283e071b.js} (64%) create mode 100644 assets/js/b551b2b5.0fbd8316.js delete mode 100644 assets/js/b99d0044.2d548166.js create mode 100644 assets/js/b99d0044.8e944340.js delete mode 100644 assets/js/c764ec94.5884ee09.js create mode 100644 assets/js/c764ec94.db763f0f.js create mode 100644 assets/js/c9ea0dcf.0032e3c1.js delete mode 100644 assets/js/c9ea0dcf.f1cadf12.js rename assets/js/{f7974e9c.d07c54f9.js => f7974e9c.92d2b8a1.js} (50%) create mode 100644 assets/js/fb5ea66b.59c6536a.js delete mode 100644 assets/js/fb5ea66b.c3732c53.js create mode 100644 assets/js/main.0266b0a1.js rename assets/js/{main.c09ff7fb.js.LICENSE.txt => main.0266b0a1.js.LICENSE.txt} (100%) delete mode 100644 assets/js/main.c09ff7fb.js delete mode 100644 assets/js/runtime~main.1ad26c97.js create mode 100644 assets/js/runtime~main.49e12451.js create mode 100644 guides/nwaku/find-node-address/index.html create mode 100644 img/architecture.png create mode 100644 img/graph-use-case.jpeg create mode 100644 img/railgun-use-case.jpeg diff --git a/404.html b/404.html index a2c7fa6..185b75d 100644 --- a/404.html +++ b/404.html @@ -4,9 +4,9 @@ Page Not Found | Waku Documentation - - - + + +
@@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}
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.

- - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}
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/Waku-NodeOperator.pdf b/Waku-NodeOperator.pdf new file mode 100644 index 0000000000000000000000000000000000000000..040b8c61b39a8b9a875a05746a9086bfba553b2b GIT binary patch literal 98836 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

o511H=KEfSE0K#b(p1(@Te>p&) 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,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}[data-theme=dark],html[data-theme=dark]{--ifm-color-scheme:dark}:root,[data-theme=light]{--ifm-color-scheme:light}code,pre code{--lsd-typography-generic-font-family:monospace}.button,.dropdown__link,.footer__item,.text--truncate{white-space:nowrap}.toggleButton_dl49,html{-webkit-tap-highlight-color:transparent}*,.buttonGroup_Qu4e button,.dropdownNavbarItem_o23I,.events .theme-doc-breadcrumbs .breadcrumbs__item--active,.mdx-event-info__container,.root_xZfc,.toggle_K23S{box-sizing:border-box}.clean-list,.containsTaskList_mC6p,.dropdown__menu,.menu__list,.root_N57j ul li{list-style:none}:root{--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:#0000;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-radius:0.4rem;--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-weight-light:300;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 #0000001a;--ifm-global-shadow-md:0 5px 40px #0003;--ifm-global-shadow-tl:0 12px 28px 0 #0003,0 2px 4px 0 #0000001a;--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-table-cell-padding:0.75rem;--ifm-table-background:#0000;--ifm-table-stripe-background:#00000008;--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-color:var(--ifm-font-color-base);--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-color:var(--ifm-color-white);--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-sidebar-width:83vw;--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active)}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:#0000}html{-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;text-size-adjust:100%;background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);text-rendering:optimizelegibility}body{background-color:rgb(var(--lsd-surface-primary));height:auto!important}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.blog-archive-page .main-wrapper main>section,.margin-top--none,.margin-vert--none,.tabItem_LNqP{margin-top:0!important}.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid #0000001a;border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit;color:rgb(var(--lsd-text-primary))}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);overflow:auto;padding:var(--ifm-pre-padding)}pre code{background-color:initial;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}.sub1,h1{font-size:var(--ifm-h1-font-size)}.sub2,h2{font-size:var(--ifm-h2-font-size)}.sub3,h3{font-size:var(--ifm-h3-font-size)}.sub4,h4{font-size:var(--ifm-h4-font-size)}.sub5,h5{font-size:var(--ifm-h5-font-size)}.sub6,h6,small{font-size:var(--ifm-h6-font-size)}.container_lyt7,.container_lyt7>svg,img{max-width:100%}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading));letter-spacing:-1.5px}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul,.tabList__CuJ{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary,.wordWrapButtonEnabled_EoeP .wordWrapButtonIcon_Bwma{color:var(--ifm-color-primary)}.text--secondary,[data-theme=dark] .root_JWD1>div>div{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.mdx-cta-section .mdx-cta-section--align-center *,.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.alert__heading,.mdx-hero-title--uppercase,.text--uppercase,table td strong,table th{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--truncate{overflow:hidden;text-overflow:ellipsis}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:#3578e526;--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:#ebedf026;--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:#00a40026;--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:#54c7ec26;--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:#ffba0026;--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:#fa383e26;--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.admonitionHeading_JPfy,.events .theme-doc-breadcrumbs .breadcrumbs__link{text-transform:capitalize}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);overflow:hidden;width:var(--ifm-avatar-photo-size)}.card--full-height,.navbar__logo img{height:100%}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:any-link:hover,.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;-webkit-user-select:none;user-select:none}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:#0000;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column;overflow:hidden}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer,.mdx-timeline-item__description{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.breadcrumbs__item,.close:hover,.table-of-contents__link--active code{opacity:.7}.close:focus,.theme-code-block-highlighted-line .codeLineNumber_Tfdd:before{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.admonitionIcon_BGV6,.root_JWD1>span svg{vertical-align:middle}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}#nprogress,.dropdown__menu,.navWrapper_ybYI,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color);text-decoration:none}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor #0000;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%);display:none}.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after,.menu__list-item-collapsible>a[aria-expanded=false]>svg{transform:rotate(90deg)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.docItemContainer_hrrU article>:first-child,.docItemContainer_hrrU header+*,.footer__item{margin-top:0}.admonitionContent_iozl>:last-child,.footer__items,.tabItem_Ymn6>:last-child{margin-bottom:0}.main-wrapper>main,.table-of-contents,[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.external-link,.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;top:0;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;left:0}.menu__link{color:var(--ifm-menu-color);flex:1;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color);text-decoration:none}.menu__caret:before,.menu__link--sublist-caret:after{content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:1.25rem}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.icon_S7Kx,.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.announcementBarContent_xLdY,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.blog-wrapper>.container>.row>aside>nav>ul li,.navbar__items--center .navbar__brand,a[class^=sidebarLogo_]{margin:0}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:#ffffff1a;--ifm-navbar-search-input-placeholder-color:#ffffff80;color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:#ffffff0d;--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{-webkit-appearance:none;appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:.9rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.cursor-pointer,.pills__item,.tabs__item{cursor:pointer}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);position:fixed;transform:translate3d(-100%,0,0);transition-property:opacity,visibility,transform;visibility:hidden;width:var(--ifm-navbar-sidebar-width)}.theme-admonition,table{overflow:auto}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:#0009;position:fixed;right:0;transition-property:opacity,visibility;visibility:hidden}.footer,.row{position:relative}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);position:relative;text-align:left;top:-.5rem}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination__link:hover{text-decoration:none}.pagination-nav{grid-gap:var(--ifm-spacing-horizontal);display:grid;gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.footer>div,.grid{grid-template-columns:repeat(24,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover);text-decoration:none}.blog-wrapper>.container>.row>aside>nav>div:first-child,.blog-wrapper>.container>.row>aside>nav>ul li a{border-left:1px solid #0000;font-size:var(--lsd-subtitle2-fontSize)!important;font-weight:var(--lsd-subtitle2-fontWeight)!important;line-height:var(--lsd-subtitle2-lineHeight)!important}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"« "}.pagination-nav__link--next .pagination-nav__label:after{content:" »"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.pills__item{border-radius:.5rem;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar__left-items>.navbar__item:first-of-type,.tabs,:not(.containsTaskList_mC6p>li)>.containsTaskList_mC6p{padding-left:0}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.mdx-cta-section .mdx-cta-section--align-left *,table th{text-align:left}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto}.tabs__item{border-bottom:3px solid #0000;border-radius:var(--ifm-global-radius);display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:#ffffff0d;--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:#ffffff1a;--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:#ffffff12;--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec}:root{--docusaurus-progress-bar-color:var(--ifm-color-primary);--content-padding:16px;--container-max-width:1440px;--pagination-nav-margin-top:96px;--ifm-navbar-link-color:rgb(var(--lsd-text-primary));--ifm-navbar-background-color:rgb(var(--lsd-surface-primary));--ifm-dropdown-link-color:rgb(var(--lsd-text-primary));--ifm-dropdown-hover-background-color:rgb(var(--lsd-surface-secondary));--ifm-background-color:rgb(var(--lsd-surface-primary));--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-primary:rgb(var(--lsd-theme-primary));--ifm-color-secondary:rgb(var(--lsd-theme-secondary));--prism-background-color:rgb(var(--lsd-theme-primary));--ifm-color-gray-0:rgb(var(--lsd-surface-primary));--ifm-color-gray-100:#f8f8fa;--ifm-color-gray-200:#f7f7f8;--ifm-color-gray-300:#eeeef0;--ifm-color-gray-400:#c0c0c2;--ifm-color-gray-500:#828285;--ifm-color-gray-600:#474747;--ifm-color-gray-700:#373738;--ifm-color-gray-800:#1a1a1a;--ifm-color-gray-900:#151515;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-font-color-base-inverse:var(--ifm-color-black);--docusaurus-highlighted-code-line-bg:#ffffff26;--ifm-card-background-color:var(--ifm-color-gray-100)!important;--ifm-alert-foreground-color:var(--ifm-color-gray-700);--ifm-button-background-color:rgb(var(--lsd-surface-primary));--ifm-global-border-width:1px;--ifm-global-radius:0.6rem;--ifm-hover-overlay:#0000000d;--ifm-font-family-base:var(--lsd-typography-generic-font-family);--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--lgs-font-family-secondary:Georgia,"Times New Roman",serif;--ifm-font-size-base:100%;--ifm-line-height-base:1.625;--ifm-font-size-secondary:100%;--ifm-line-height-secondary:1.5;--ifm-font-weight-light:400;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:400;--ifm-font-weight-bold:600;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-h1-font-size:var(--lsd-h1-fontSize);--ifm-h2-font-size:var(--lsd-h2-fontSize);--ifm-h3-font-size:var(--lsd-h3-fontSize);--ifm-h4-font-size:var(--lsd-h4-fontSize);--ifm-h5-font-size:var(--lsd-h5-fontSize);--ifm-h6-font-size:var(--lsd-h6-fontSize);--ifm-global-spacing:24px;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:0.75rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:24px;--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-code-background:rgb(var(--lsd-text-primary))!important;--ifm-pre-padding:1.125rem;--ifm-link-decoration:none;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-border-left-width:3px;--ifm-blockquote-shadow:none;--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-button-padding-vertical:0.4rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-border-radius:var(--ifm-global-radius);--ifm-card-horizontal-spacing:var(--ifm-spacing-horizontal);--ifm-card-vertical-spacing:var(--ifm-spacing-vertical);--ifm-footer-link-horizontal-spacing:0;--ifm-footer-padding-horizontal:var(--content-padding);--ifm-footer-padding-vertical:24px;--ifm-footer-background-color:#0000;--ifm-menu-link-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-color:rgb(var(--lsd-text-primary),0.6);--ifm-menu-color-background-active:#0000;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-height:64px;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-padding-horizontal:var(--content-padding);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)/3);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:100vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pills-spacing:0.125rem;--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem;--ifm-alert-background-color:#0000;--ifm-color-secondary-contrast-background:#0000;--ifm-color-success-contrast-background:#0000;--ifm-color-info-contrast-background:#0000;--ifm-color-warning-contrast-background:#0000;--ifm-color-danger-contrast-background:#0000;--ifm-alert-border-radius:none;--note:#d4d5d8;--tip:#6ace4b;--caution:#ddaa39;--danger:#e46967;--info:#68b1d0;--ifm-color-secondary-dark:var(--note);--ifm-color-secondary-light:var(--note);--ifm-color-success-dark:var(--tip);--ifm-color-success-light:var(--tip);--ifm-color-info-dark:var(--info);--ifm-color-info-light:var(--info);--ifm-color-warning-dark:var(--caution);--ifm-color-warning-light:var(--caution);--ifm-color-danger-dark:var(--danger);--ifm-color-danger-light:var(--danger);--ifm-footer-link-color:rgb(var(--lsd-text-primary));--ifm-color-content-secondary:rgb(var(--lsd-text-primary));--ifm-hero-background-color:#f8f8fa;--ifm-hero-text-color:var(--ifm-color-black);--desktop-footer-gap:200px;--mobile-footer-gap:144px;--doc-grid-gap:16px;--ifm-table-background:#0000!important;--ifm-table-stripe-background:#0000!important;--ifm-pre-border-radius:0!important;--ifm-code-font-size:100%!important;background-color:#0000!important;--doc-sidebar-width:16.66vw!important;--doc-sidebar-max-width:320px;--ifm-navbar-item-padding-vertical:8px;--ifm-navbar-item-padding-horizontal:12px;--docusaurus-announcement-bar-height:auto;--card-height:188px;--mobile-width:253px;--mobile-height:176px;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300);--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}body,html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;height:100%}main{min-height:calc(100vh - var(--ifm-navbar-height) - var(--content-padding))}svg *{fill:rgb(var(--lsd-text-primary))}.grid{display:grid;gap:16px}.table-of-contents__link--active,.table-of-contents__link:hover{color:rgb(var(--lsd-text-primary))!important}h1{font-size:var(--lsd-h1-fontSize);font-weight:var(--lsd-h1-fontWeight);line-height:var(--lsd-h1-lineHeight)}h1,h2,h3,h4{font-family:var(--lsd-typography-generic-font-family)}h2{font-size:var(--lsd-h2-fontSize);font-weight:var(--lsd-h2-fontWeight);line-height:var(--lsd-h2-lineHeight)}h3{font-size:var(--lsd-h3-fontSize);font-weight:var(--lsd-h3-fontWeight);line-height:var(--lsd-h3-lineHeight)}h4{font-size:var(--lsd-h4-fontSize);font-weight:var(--lsd-h4-fontWeight);line-height:var(--lsd-h4-lineHeight)}code{background:#ffffff26;border-radius:0;color:rgb(var(--lsd-text-primary));background:rgba(var(--lsd-theme-primary),.1)}pre code{font-family:var(--lsd-typography-generic-font-family)!important;font-size:var(--lsd-body1-fontSize)!important;font-weight:var(--lsd-body1-fontWeight)!important;line-height:var(--lsd-body1-lineHeight)!important}.theme-doc-footer-edit-meta-row div[class*=lastUpdated_] b,table td strong,table th{font-weight:400!important}.alert,.card,.theme-code-block{box-shadow:none!important}.menu__list-item-collapsible>a,.navbar{box-shadow:none}.sans{font-family:var(--lgs-font-family-secondary);line-height:var(--ifm-line-height-secondary)}.blog-wrapper--index [itemprop=blogPost] .markdown,.external-link,.footer__bottom,.footer__copyright,.menu__list-item .menu__link,.theme-doc-footer-edit-meta-row div[class*=lastUpdated_],table{font-size:var(--lsd-body2-fontSize)!important;font-weight:var(--lsd-body2-fontWeight)!important;line-height:var(--lsd-body2-lineHeight)!important;font-family:var(--lsd-typography-generic-font-family)!important}.markdown a,.markdown a:hover,article a,article a:hover{text-decoration:underline;text-decoration-color:inherit;text-decoration-color:rgba(var(--lsd-text-primary),.6);text-underline-offset:.3rem}.card{padding:var(--ifm-spacing-vertical) var(--ifm-spacing-horizontal);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.table-of-contents__left-border{border:none!important}.menu__link{align-items:center;display:flex;justify-content:space-between}.menu__link span{color:rgba(var(--lsd-text-primary),.6)}.theme-edit-this-page{align-items:center;display:flex;gap:12px}.menuExternalLink_NmtK,.navbar__inner,.navbar__item{align-items:center}.dropdown__link:hover{color:rgb(var(--lsd-text-secondary))}.blog-wrapper>.container>.row>aside>nav>ul li a:hover,.breadcrumbs__item--active,.footerLogoLink_BH7S:hover,.hash-link:focus,.theme-code-block:hover .buttonGroup_Qu4e button,:hover>.hash-link{opacity:1}.breadcrumbs__item:not(:last-child):after{background:none;content:"/";opacity:1}.breadcrumbs__link{background:#0000!important;padding:0}.navbar{height:var(--ifm-navbar-height)}.menu__link--active,.menu__list-item-collapsible--active>:not(a[href="#"]){box-shadow:inset 1px 0 0 rgb(var(--lsd-border-primary))}.navbar__logo,a[class^=sidebarLogo_] img{height:40px}.dropdown__link--active{color:rgb(var(--lsd-text-secondary))!important;background-color:#0000}.row{margin:0}.theme-doc-version-banner *,.theme-doc-version-banner:hover *{color:#fff;text-decoration-color:#fff!important}.blog-wrapper main>section article ul li .lsd-tag>span,.blog-wrapper main>section article ul li .lsd-tag>span>span,.menu__link--active span,.theme-doc-version-badge{color:rgb(var(--lsd-text-primary))}.navbar__left-items>a:not(:last-child){margin-right:1.25rem}.navbar__left-items>a:not(:last-child)[href^="/"]{margin-right:1.75rem}.menu__link--sublist-caret:after{background:none;content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTQgOS41My45NC45NEw4IDcuNDE3bDMuMDYgMy4wNTMuOTQtLjk0LTQtNC00IDRaIiBmaWxsPSIjZmZmIi8+PC9zdmc+);filter:unset;height:unset;min-width:unset;width:unset}.menu__list-item--collapsed>.menu__link--sublist-caret:after{transform:rotate(0)!important}.menu__link--active{border-radius:0}.dropdown__menu,.pagination-nav__link{border:1px solid rgb(var(--lsd-border-primary))}.table-of-contents a{padding-left:16px}.table-of-contents__link--active{border-left:1px solid rgb(var(--lsd-border-primary));padding-left:16px}.navbar__item{display:inline-flex;padding:0}.mdx-accordion-item,.navbar__link--active{border-bottom:1px solid rgb(var(--lsd-border-primary))}.dropdown__menu{background:rgb(var(--lsd-surface-primary));border-radius:0;margin-right:-1px;margin-top:6px;padding:0;transition-duration:0ms}.dropdown__link,.dropdown__link:hover{background-color:#0000}.dropdown__link{border-radius:0;margin:0;padding:5px 11px;text-decoration:none}.dropdown__link *{text-decoration:inherit!important}.content_knG7 a,.dropdown__link:hover,.footerLink_sh7M,.footer__item a{text-decoration:underline}.blog-wrapper .breadcrumbs__item,.blog-wrapper--index h2[itemprop=headline]>a,.events .breadcrumbs__item,.events .breadcrumbs__link{text-decoration:none}.margin-left-8,.mdx-jpd__external-link-icon{margin-left:8px}.pagination-nav{margin-top:var(--pagination-nav-margin-top)!important}.pagination-nav__link{align-items:center;border-radius:0;display:flex;gap:18px;padding:10px 14px}.theme-doc-version-badge,table td,table th,table thead>tr{border:1px solid rgb(var(--lsd-border-primary))}.pagination-nav__link--next{grid-column:2/3;text-align:right;justify-content:flex-end}.events .pagination-nav,.events aside,.footer__item a svg,.menu__caret,.pagination-nav__label:after,.pagination-nav__label:before,.theme-doc-footer-edit-meta-row div[class*=lastUpdated_] small{display:none}.theme-back-to-top-button{display:none!important}.footer__link-item,.tag_NdBD{display:inline-block}.lsd-collapse__content{padding:24px}.theme-doc-version-badge{background:#0000;margin-bottom:16px;padding:4px 8px}.navbar__right-items{align-items:center;display:flex}table{border-collapse:collapse;margin-bottom:var(--ifm-spacing-vertical);display:table;table-layout:fixed;width:100%}table td{color:var(--ifm-table-cell-color)}.theme-doc-footer{margin-bottom:96px}.theme-doc-footer-edit-meta-row div[class*=lastUpdated_]{font-style:normal;opacity:.7}.navbar-sidebar__item{padding-block:0;padding-inline:var(--content-padding)}.navbar-sidebar__back{align-items:center;display:flex;gap:16px;margin:24px 0!important;padding:0;width:100%!important}.theme-doc-sidebar-menu .menu__link{padding-left:var(--content-padding);padding-right:0}.menu__list-item-collapsible>a[aria-expanded=true]>svg{transform:rotate(180deg)}main[itemtype*=Blog]{margin-left:0}.mdx-ghc-subheader-text,main[itemtype*=Blog] .theme-doc-breadcrumbs{margin-bottom:40px}main[itemtype*=Blog] .blog-divider{background:rgb(var(--lsd-theme-primary));margin-block:40px}.events .theme-doc-markdown>h1{margin-bottom:16px!important}.events .theme-doc-breadcrumbs{display:block}.container{padding-inline:var(--content-padding)}.main-wrapper>.container{margin-bottom:80px!important;margin-top:0!important}.main-wrapper>main,.main-wrapper>main>.row,.main-wrapper>main>.row>.col{--ifm-spacing-horizontal:var(--content-padding);flex-basis:100%!important;flex:unset;margin:0;max-width:unset;width:100%!important}.footer{margin-bottom:18px;width:100%!important}.footer>div{display:grid;gap:1rem;margin:unset;max-width:unset;padding:16px 0}.footer__bottom{grid-column:1/12;grid-row:1/1;text-align:unset}#__docusaurus-base-url-issue-banner-container,.blog-archive-page .main-wrapper header .container p,.blog-wrapper main>section article ul li a:after,.blog-wrapper main>section article ul li a:before,.footer__bottom>div:first-of-type,.groups_p1lF .divider_eGUz:last-child,.hidden,.mdx-accordion-item>input,.modal_kLVz .closeButton_Rr0e,.theme-doc-toc-desktop,.themedImage_kfRS,.wrapper_SWrM .fullscreenButton_Bocn,[data-hidden-doc-sidebar=true] .theme-doc-sidebar-container,[data-theme=dark] .lightToggleIcon_K4TL,[data-theme=light] .darkToggleIcon_lKkA,html[data-announcement-bar-initially-dismissed=true] .announcementBar_mb4j{display:none}.footer__title{font-family:var(--lsd-typography-generic-font-family)!important;font-size:var(--lsd-label1-fontSize)!important;font-weight:var(--lsd-label1-fontWeight)!important;font-weight:var(--ifm-font-weight-normal);line-height:var(--lsd-label1-lineHeight)!important;margin-bottom:4px}.blog-wrapper main>section article ul li .lsd-tag>span,.blog-wrapper main>section article ul li .lsd-tag>span>span,.footer__item,.footer__item a{font-family:var(--lsd-typography-generic-font-family)!important;font-size:var(--lsd-label1-fontSize)!important;font-weight:var(--lsd-label1-fontWeight)!important;line-height:var(--lsd-label1-lineHeight)!important}.footer>div:first-child>.footer__links{display:grid;gap:12px;grid-column:13/25;grid-row:1/1;margin-bottom:0}.footer>div:nth-child(2)>.footer__links{display:grid;gap:2rem 1rem;grid-column:13/25;grid-row:1/1;grid-template-columns:repeat(2,1fr);margin-bottom:0}.footer__col{grid-template-columns:span 1}.blog-wrapper main>section article ul li a,.codeBlockStandalone_BRZX,.codeBlockStandalone_MEMb,.col.footer__col,.modal_kLVz>div>div:first-child,.noResults_mD2O,.root_N57j ul,.root_ONDG.empty_a7qb{padding:0}.footer__items{display:flex;flex-direction:row;flex-wrap:wrap;gap:.5rem}.footer__item{display:inline-flex}.footer__item:not(:last-child):after{content:"•";display:inline-block;margin-left:8px;text-decoration:none}.footer__logo{max-width:var(--ifm-footer-logo-max-width);margin:0!important}.navbar__inner{flex-direction:row}.hero--primary{--ifm-hero-background-color:rgb(var(--lsd-surface-primary));--ifm-hero-text-color:rgb(var(--lsd-text-primary))}.docusaurus-mermaid-container{margin-block:40px}.overflow-hidden{overflow:hidden}.hidden-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.hidden-scrollbar::-webkit-scrollbar{display:none;width:0}[class^=mdx-]{--lsd-h1-fontWeight:100;--lsd-h2-fontWeight:300;--lsd-h3-fontWeight:300;--lsd-h4-fontWeight:300;--lsd-h5-fontWeight:300;--lsd-h6-fontWeight:300;--lsd-subtitle1-fontWeight:300}.hidden,.mdx-hero-video .mdx-hero-video__placeholder{opacity:0;visibility:hidden}.blog-wrapper h1[itemprop=headline]{font-family:var(--lsd-typography-generic-font-family)!important;font-size:var(--lsd-h1-fontSize)!important;font-weight:var(--lsd-h1-fontWeight)!important;line-height:var(--lsd-h1-lineHeight)!important}.blog-wrapper>.container{display:flex;margin:0;max-width:unset;padding-inline:0;width:100%}.blog-wrapper>.container>.row,.mdx-roadmap,.mdx-scroll-buttons{width:100%}.blog-wrapper main>header h1{font-family:var(--lsd-typography-generic-font-family)!important;font-size:var(--lsd-h3-fontSize)!important;font-weight:var(--lsd-h3-fontWeight)!important;line-height:var(--lsd-h3-lineHeight)!important;margin-bottom:.5rem}.blog-wrapper>.container>.row>aside{max-width:unset}.blog-wrapper>.container>.row>aside>nav{padding-top:16px;top:var(--ifm-navbar-height)}.blog-wrapper>.container>.row>aside>nav>div:first-child{font-family:var(--lsd-typography-generic-font-family)!important;margin-bottom:0!important;padding:4px 0 4px 15px}.blog-wrapper>.container>.row>aside>nav>ul li a{box-sizing:border-box;display:block;font-family:var(--lsd-typography-generic-font-family)!important;opacity:.6;padding:4px 0 4px 2rem}.blog-wrapper--index>.container>.row>aside>nav>div:first-child,.blog-wrapper>.container>.row>aside>nav>ul li a[class*=sidebarItemLinkActive_]{border-color:rgb(var(--lsd-border-primary))}.blog-wrapper main article,.mdx-asset-card:not(.mdx-asset-card--downloadable) .mdx-asset-card__inner,.mdx-erc--with-preview .mdx-erc__preview-image{border-bottom:1px solid rgb(var(--lsd-border-primary))}.blog-wrapper--index h2[itemprop=headline]{font-family:var(--lsd-typography-generic-font-family)!important;font-size:var(--lsd-h4-fontSize)!important;font-weight:var(--lsd-h4-fontWeight)!important;line-height:var(--lsd-h4-lineHeight)!important}.blog-wrapper>.container>.row>main{margin-top:16px;max-width:unset}.blog-archive-page .main-wrapper header .container h1,.blog-wrapper article header h2,.blog-wrapper main>section article h2{font-family:var(--lsd-typography-generic-font-family)!important;font-size:var(--lsd-h3-fontSize)!important;font-weight:var(--lsd-h3-fontWeight)!important;line-height:var(--lsd-h3-lineHeight)!important}.blog-wrapper article footer{align-items:center;display:flex;flex-direction:row;justify-content:space-between;margin-top:24px!important}.blog-wrapper main article{margin-bottom:34px!important;padding-bottom:34px}.blog-wrapper main article:last-of-type{border-bottom:none!important}.blog-archive-page .main-wrapper{padding:2rem var(--content-padding)}.blog-archive-page .main-wrapper header{border-bottom:1px solid var(--ifm-hero-text-color);margin:0;padding:0 0 1rem}.blog-archive-page .main-wrapper header .container{margin:0;padding:0!important}.blog-archive-page .main-wrapper main>section .container{margin:0;max-width:unset;padding:0}.blog-archive-page .main-wrapper main>section .container>.row{margin-top:64px}.blog-archive-page .main-wrapper main>section .container>.row>.col{margin:0!important;max-width:unset;padding:0}.blog-archive-page .main-wrapper main>section .container>.row>.col h3{font-family:var(--lsd-typography-generic-font-family)!important;font-size:var(--lsd-h5-fontSize)!important;font-weight:var(--lsd-h5-fontWeight)!important;line-height:var(--lsd-h5-lineHeight)!important}.blog-archive-page .main-wrapper main>section .container>.row>.col a{font-family:var(--lsd-typography-generic-font-family)!important;font-size:var(--lsd-body1-fontSize)!important;font-weight:var(--lsd-body1-fontWeight)!important;line-height:var(--lsd-body1-lineHeight)!important}.blog-archive-page .main-wrapper main>section .container>.row>.col ul{margin:1rem 0 0;padding:0 0 0 1.5rem}.blog-wrapper main>section article{border-bottom:none;padding:0}.blog-wrapper main>section article ul,.mdx-app-card__name{margin-top:1rem}.blog-wrapper main>section article ul li{margin:0 .5rem 0 0!important;padding:0!important}.blog-wrapper main>section article ul li .lsd-tag{height:28px;padding:3px 11px}.header-github-link:hover,.mdx-event-card__label,.mdx-event-info__label{opacity:.6}.header-github-link:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E") no-repeat;content:"";display:flex;height:24px;width:24px}html[data-theme=dark] .header-github-link:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23fff' d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E") no-repeat}.yt-video{height:360px;max-width:100%;width:640px}.nav_cMpg,.root_QACb{margin:0 auto;max-width:var(--container-max-width)}.errorBoundaryError_a6uf{color:red;white-space:pre-wrap}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}[data-theme=dark] .themedImage--dark_OvIx,[data-theme=light] .themedImage--light_BL8e,html:not([data-theme]) .themedImage--light_BL8e{display:initial}.icon_S7Kx.s_AZDZ svg{width:10px}.icon_S7Kx.m_thRi svg{width:20px}.icon_S7Kx.l_WHPt svg{width:40px}[data-theme=dark] .icon_S7Kx.fill_hNhN,[data-theme=dark] .icon_S7Kx.fill_hNhN *{fill:var(--ifm-color-white)}[data-theme=dark] .icon_S7Kx.stroke_N8dm svg,[data-theme=dark] .icon_S7Kx.stroke_N8dm svg *{stroke:var(--ifm-color-white)}[data-theme=light] .icon_S7Kx.fill_hNhN,[data-theme=light] .icon_S7Kx.fill_hNhN *{fill:var(--ifm-color-black)}[data-theme=light] .icon_S7Kx.stroke_N8dm svg,[data-theme=light] .icon_S7Kx.stroke_N8dm svg *{stroke:var(--ifm-color-black)}.backdrop_Ifvc{background:rgb(var(--lsd-surface-primary));z-index:201}.backdrop_Ifvc,.navWrapper_ybYI{height:100%;left:0;opacity:0;position:fixed;top:0;visibility:hidden;width:100%}.navWrapper_ybYI{background:#0000;z-index:203}.navWrapper_ybYI>*{pointer-events:auto}.nav_cMpg{align-items:center;background:rgb(var(--lsd-surface-primary));display:flex;flex-direction:row;height:var(--ifm-navbar-height);justify-content:space-between;padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.visible_ynAX{opacity:1!important;visibility:visible!important}.codeBlockContent_ugSV,.wrapper_SWrM{position:relative}.wrapper_SWrM:not(.active_qZD5) .fullscreenButton_Bocn{background:rgb(var(--lsd-surface-primary));bottom:8px;position:absolute;right:8px;transition:.3s}.root_QACb{padding:0;width:100%}.skipToContent_fXgn{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem;z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_fXgn:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_CVFx{line-height:0;padding:0}.content_knG7{font-size:85%;padding:5px 0;text-align:center}.content_knG7 a{color:inherit}.announcementBar_mb4j{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}.announcementBarPlaceholder_vyr4{flex:0 0 10px}.announcementBarClose_gvF7{align-self:stretch;flex:0 0 30px}.iconExternalLink_nPIU{margin-left:.3rem}.footerLogoLink_BH7S{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.copyButtonCopied_YovB .copyButtonIcon_ZL7v,.l-modal,.mdx-hero-video--loading .mdx-hero-video__video{opacity:0}.firstRow_ar1q{border-top:1px solid rgb(var(--lsd-text-primary));margin-bottom:96px!important}.mdx-cta-section,.secondRow__ww3{border-top:1px solid rgb(var(--lsd-border-primary))}.firstRow_ar1q,.secondRow__ww3{display:flex;flex-direction:row}.backToTop_wDfN{bottom:16px;left:16px;position:absolute}.l-modal,.l-modal__backdrop{position:fixed;top:0;left:0}.backToTop_wDfN,.footerLink_sh7M{width:-moz-fit-content;width:fit-content}.footerLink_sh7M{height:-moz-fit-content;height:fit-content}.toggle_K23S{border:1px solid rgb(var(--lsd-border-primary));height:32px;width:32px}.toggle_K23S svg{height:14px;width:14px}.toggleButton_dl49{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.dropdownNavbarItem_o23I,.l-modal__content,.mdx-asset-card{border:1px solid rgb(var(--lsd-border-primary))}.toggleButton_dl49:hover{background:var(--ifm-color-emphasis-200)}.toggleButtonDisabled_AAS_{cursor:not-allowed}.darkNavbarColorModeToggle_X3D1:hover{background:var(--ifm-color-gray-800)}.l-modal{height:100vh;transition:.3s;visibility:hidden;width:100%;z-index:9999}.l-modal__container{display:grid;gap:1rem;grid-template-columns:repeat(24,1fr);margin:0 auto;max-width:1376px;overflow:auto}.l-modal--open{opacity:1;visibility:visible}.l-modal__content{background:rgb(var(--lsd-surface-primary));grid-column:8/19;height:-moz-fit-content;height:fit-content;margin:64px 0;max-height:80vh;padding:7px;z-index:9998}.groups_p1lF,.root_ONDG{max-height:60vh;overflow-y:auto}.l-modal__backdrop{background-color:rgba(var(--lsd-surface-primary),.6);height:100%;width:100%;z-index:9997}.modal_kLVz .header_QwCa{align-items:center;display:flex;flex-direction:row;gap:.5rem}.root_EFVO{padding:32px;text-align:center}.root_ONDG{padding:24px}.title_uwS_{font-size:.75rem!important}.item_RHYF{align-items:center;display:flex;flex-direction:row;margin-top:1rem}.item_RHYF .itemTitle_jtAv{flex-grow:1;overflow:hidden;padding-left:1rem;text-overflow:ellipsis;white-space:nowrap}.linkContent__x3v,.root_JWD1{align-items:center;display:flex}.item_RHYF .itemTitle_jtAv mark,.root_JWD1 mark{background:none;color:inherit}.root_xZfc{padding:8px 8px 0;position:relative;width:100%}.collapse_LWBd button,.textField_af43{width:100%!important}.textField_af43 button svg{height:auto;max-height:100%!important;width:14px}.root_N57j>div:first-child{color:#828285;padding:0 24px}.root_N57j>div:first-child,.root_N57j>div:first-child *{font-size:.75rem}.root_N57j ul li{margin-top:1rem}.root_JWD1{padding:0 24px}.root_JWD1>div{margin-left:1rem}.mdx-cta-button:hover,.mdx-cta-button:hover *,.root_Ooa0{text-decoration:none!important}.root_Ooa0.level1_fpUf{display:block;padding-left:32px}.icon_sZn2{height:auto;width:16px}.icon_sZn2.fill_fkan,.icon_sZn2.fill_fkan *{fill:currentColor}.icon_sZn2.stroke_j3wH,.icon_sZn2.stroke_j3wH *{stroke:currentColor}[data-theme=light] .icon_sZn2{color:#000}[data-theme=dark] .icon_sZn2{color:#fff}.mdx-feature-list__title,.root_ltHz{padding:24px 0}.groups_p1lF{display:flex;flex-direction:column;gap:16px}[data-theme=dark] .divider_eGUz>div{opacity:.1}[data-theme=dark] .topBar_Dtew button{background-color:var(--ifm-button-color)}.linkContent__x3v{gap:6px;text-decoration:none}.linkContent__x3v:hover{text-decoration:underline;text-decoration-color:rgba(var(--lsd-text-primary),.6);text-underline-offset:.3rem}.externalLinkIcon_Qfue{width:8px}.externalLinkIcon_Qfue svg,.root_TTsz.fullWidth_HBtH{height:auto;width:100%}.dropdownNavbarItem_o23I{height:28px;padding:6px 12px}.navbarHideable_OoEf{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_zoxl{transform:translate3d(0,calc(-100% - 2px),0)}.rightSection_CLeF{align-items:center;display:flex;justify-content:flex-end;white-space:nowrap}.iconButtonGroup_ktNv button:not(:last-child){border-right:1px solid!important;margin-right:-1px!important}.mainWrapper_z2l0{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.mdx-accordion-item__header{align-items:center;display:flex;flex-direction:row;gap:0 16px;justify-content:space-between;min-height:88px;padding:16px 0}.mdx-accordion-item__header,.mdx-accordion-item__header *{cursor:pointer}.mdx-accordion-item__content-wrapper{height:auto;overflow:hidden}.mdx-accordion-item__content{height:0}.mdx-accordion-item--open .mdx-accordion-item__content{height:auto;padding-bottom:1.875rem;padding-top:6px}.mdx-app-card{align-items:flex-start;display:flex;flex-direction:column;padding:1.5rem 0}.mdx-app-card__logo{height:40px;width:auto}.mdx-app-card__description{margin-top:1.5rem}.mdx-app-card__link{margin-top:1.5rem;width:100%}.mdx-app-card__link button{padding:10px 16px;width:100%}.mdx-app-card__link button>span{align-items:center;display:block;display:flex;flex-direction:row;justify-content:space-between;width:100%}.root_TTsz{display:inline-block;font-size:0!important;position:relative}.root_TTsz.fullHeight_ls1u{height:100%;width:auto}.root_TTsz .content_feMR{height:100%;left:0;position:absolute;top:0;width:100%}.root_TTsz:not(.keep_Y9Ea) .root_TTsz{height:auto;width:auto}.root_TTsz:not(.keep_Y9Ea) .content_feMR{height:100%;left:unset;position:relative;top:unset;width:100%}.mdx-asset-card{align-items:flex-start;border-bottom:none;display:flex;flex-direction:column;min-height:144px;text-decoration:none!important;width:216px}.mdx-asset-card__inner{padding:16px 16px 32px;width:100%}.mdx-asset-card__title,.mdx-event-profile-list__container h2,.mdx-event-profile__role,.mdx-ghc__challenge-labels,.mdx-ghc__issue-title{margin-bottom:16px}.mdx-asset-card__image img{height:100%;object-fit:contain;object-position:center center;width:100%}.mdx-asset-card__downloadables{align-items:flex-start;display:flex;flex-direction:row;justify-content:stretch;width:100%}.mdx-asset-card__downloadables>*{flex-grow:1;font-size:12px;text-decoration:none!important;text-underline-offset:unset!important}.mdx-asset-card__downloadables>* button{justify-content:space-between;text-decoration:none;width:100%}.mdx-asset-card__downloadables>:first-child button{border-left:none}.mdx-asset-card__downloadables>:last-child button,.mdx-asset-card__downloadables>:not(:last-child) button{border-right:none}.mdx-box{padding-bottom:var(--mdx-box-bottom);padding-top:var(--mdx-box-top)}.mdx-cta-button,.mdx-section-header--with-description .mdx-section-header__extra{margin-top:2rem}.mdx-cta-button button,.mdx-cta-button button span{font-size:inherit;font-weight:inherit;line-height:inherit}.mdx-cta-button .lsd-button--large{padding:9px 39px}.mdx-cta-button .lsd-button--small{padding:5px 11px}.mdx-cta-section{display:grid;padding:24px 0 0}.mdx-cta-section .mdx-cta-section__link,.mdx-jpd__job-link{display:block;width:-moz-fit-content;width:fit-content}.mdx-cta-section .mdx-cta-section--align-center .mdx-cta-button{margin-inline:auto}.mdx-cta-section .mdx-cta-section--align-right *{text-align:right}.mdx-cta-section .mdx-cta-section--align-right .mdx-cta-button,.mdx-logo-carousel .mdx-section-header__extra{margin-left:auto}.mdx-cta-section--no-border{border-top:none!important}.mdx-cta-section--title-only .mdx-cta-section__title{font-family:var(--lsd-typography-generic-font-family);font-size:var(--lsd-h5-fontSize);font-weight:var(--lsd-h5-fontWeight);font-weight:300;line-height:var(--lsd-h5-lineHeight);max-width:886px}.mdx-cta-section--title-button .mdx-cta-section__title{font-family:var(--lsd-typography-generic-font-family);font-size:var(--lsd-display4-fontSize);font-weight:var(--lsd-display4-fontWeight);font-weight:300;line-height:var(--lsd-display4-lineHeight);max-width:886px}.mdx-cta-section--full-width .mdx-cta-section__container{display:grid;gap:0 1rem;grid-template-columns:repeat(2,1fr)}.mdx-cta-section--full-width .mdx-cta-section__title{font-family:var(--lsd-typography-generic-font-family);font-size:var(--lsd-h5-fontSize);font-weight:var(--lsd-h5-fontWeight);line-height:var(--lsd-h5-lineHeight)}.mdx-cta-section--full-width .mdx-cta-section__description,.mdx-ns__description{font-family:var(--lsd-typography-generic-font-family);font-size:var(--lsd-h3-fontSize);font-weight:var(--lsd-h3-fontWeight);line-height:var(--lsd-h3-lineHeight)}.mdx-cta-section--full-width .mdx-cta-section__link{grid-area:2/2/3/3}.mdx-cta-section--simple .mdx-cta-section__title{font-family:var(--lsd-typography-generic-font-family);font-size:var(--lsd-h5-fontSize);font-weight:var(--lsd-h5-fontWeight);line-height:var(--lsd-h5-lineHeight)}.mdx-cta-section--simple .mdx-cta-section__description{font-family:var(--lsd-typography-generic-font-family);font-size:var(--lsd-h2-fontSize);font-weight:var(--lsd-h2-fontWeight);line-height:var(--lsd-h2-lineHeight);margin-top:2rem}.mdx-cta-section--list{display:grid;gap:0 1rem;grid-template-columns:1fr 1fr}.mdx-cta-section--list .mdx-cta-section__container{grid-column:1/2}.mdx-cta-section--list .mdx-cta-section__title{font-family:var(--lsd-typography-generic-font-family);font-size:var(--lsd-h5-fontSize);font-weight:var(--lsd-h5-fontWeight);line-height:var(--lsd-h5-lineHeight)}.mdx-cta-section--list .mdx-cta-section__description{font-family:var(--lsd-typography-generic-font-family);font-size:var(--lsd-h1-fontSize);font-weight:var(--lsd-h1-fontWeight);line-height:var(--lsd-h1-lineHeight);margin-top:2rem}.mdx-cta-section--list .mdx-cta-section__list{display:flex;flex-direction:column;gap:1.5rem 0;grid-column:2/3}.mdx-erc--with-preview .mdx-erc__icon,.mdx-ns__inner .mdx-ns__toast .lsd-toast__close-button{display:none}.mdx-cta-section--list .mdx-cta-section__list>:not(:first-child),.mdx-feature-list__feature,.mdx-showcase-card{border-top:1px solid rgb(var(--lsd-border-primary))}.mdx-cta-section--list .mdx-cta-section__list>a{display:block;text-decoration:none}.mdx-erc,.mdx-ghc__issue-title-link,.mdx-ghc__view-on-github-link,.mdx-hero-action button:hover,.mdx-hero-action button:hover *,.mdx-hero-action:hover,.mdx-hero-action:hover *{text-decoration:none!important}.mdx-cta-section--list .mdx-cta-section__list .mdx-cta-section__list-item>.mdx-cta-section__item-title{background-color:rgb(var(--lsd-surface-secondary));border-radius:1rem;color:rgb(var(--lsd-text-secondary));display:inline-block;margin-top:1.5rem;padding:3px 11px}.mdx-cta-section--list .mdx-cta-section__list .mdx-cta-section__list-item>.mdx-cta-section__item-description{margin-top:1rem}.mdx-doc-metadata{display:flex;flex-direction:row;line-height:0;margin-bottom:2.5rem}.mdx-doc-metadata>span:not(:last-child):after{content:"•";display:inline-block;margin-inline:.75rem}.markdown h1+.mdx-doc-metadata,.markdown header+.mdx-doc-metadata{margin-top:calc(var(--ifm-h1-vertical-rhythm-bottom)*-1*var(--ifm-leading) + 1rem)}.mdx-erc{align-items:flex-start;border:1px solid rgb(var(--lsd-border-primary));display:flex;flex-direction:row;min-height:144px}.mdx-erc__icon{padding:16px 16px 16px 8px}.mdx-erc__inner{flex-grow:1;padding:16px}.mdx-erc:hover .mdx-erc__title{text-decoration:underline!important}.mdx-erc__logo,.mdx-erc__logo svg{height:32px!important;width:32px!important}.mdx-erc__title{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;margin-top:32px;max-height:calc(var(--lsd-body1-lineHeight)*2);overflow:hidden}.mdx-erc__description{margin-top:8px}.mdx-erc--with-preview{display:flex;flex-direction:column}.mdx-erc--with-preview .mdx-erc__preview-image{height:100%;object-fit:cover;width:100%}.mdx-erc--with-preview .mdx-erc__inner{display:grid;gap:0 16px;grid-template-columns:32px auto;grid-template-rows:auto auto;padding:16px}.mdx-erc--with-preview .mdx-erc__logo{align-self:center;grid-column:1;grid-row:1/span 2}.mdx-erc--with-preview .mdx-erc__title{-webkit-line-clamp:1;-webkit-box-orient:vertical;margin-top:0;max-height:calc(var(--lsd-body1-lineHeight)*1)}.mdx-erc--with-preview .mdx-erc__description{margin-top:4px}.mdx-feature-list{border-top:1px solid rgb(var(--lsd-surface-secondary));position:relative}.mdx-feature-list__feature-index{align-items:center;background:rgb(var(--lsd-surface-secondary));border-radius:100%;color:rgb(var(--lsd-text-secondary))!important;display:inline-flex;height:1.875rem;justify-content:center;padding:.5rem;width:1.875rem}.mdx-feature-list__list{display:grid;grid-template-columns:repeat(2,1fr)}.mdx-event-profile__info,.mdx-feature-list__feature-inner{display:flex;flex-direction:column}.mdx-feature-list__feature-title{margin-top:1rem}.mdx-feature-list__header{align-items:center;display:flex;flex-direction:row;gap:2rem}.mdx-feature-list--cta-bottom .mdx-feature-list__extra{margin-top:3.5rem;padding:0 1rem}.mdx-event-cta-section__container,.mdx-ghc__container{border-top:1px solid rgb(var(--lsd-border-primary));padding-top:24px}.mdx-ghc__issue-title-link:hover,.mdx-ghc__view-on-github-link:hover{text-decoration:underline!important}.mdx-ghc__header,.mdx-jpd__header{margin-bottom:40px;margin-top:16px}.mdx-ghc__challenge-label{border:1px solid rgb(var(--lsd-border-primary));border-radius:20px;margin-right:8px;padding:4px 8px}.mdx-ghc__view-on-github-link{display:block;margin-bottom:56px;margin-top:40px;width:-moz-fit-content;width:fit-content}.mdx-ghc__participant-photo{border:1px solid rgb(var(--lsd-border-secondary));border-radius:100%;margin-left:-4px;width:24px}.mdx-ghc__participant-photo-container{align-items:center;direction:rtl;display:flex;justify-content:flex-end;padding-left:4px}.mdx-ghc__comment-count{margin-left:4px}.mdx-ghc__issue-content-grid{align-items:center;display:grid;grid-template-columns:82px 135px 82px 1fr;margin-top:24px;row-gap:12px}.mdx-scroll-buttons>div{display:flex;flex-direction:row;justify-content:flex-end;width:100%}.mdx-hero{--hero-max-height:1080px;display:flex;flex-direction:column;height:calc(100vh - var(--ifm-navbar-height) - 8px);max-height:var(--hero-max-height);position:relative}.mdx-hero-action--large button{padding:10px 64px}.mdx-hero-actions{align-items:center;display:flex;flex-direction:row;gap:0 1rem;margin-top:2rem;position:relative;z-index:98}.mdx-hero-description{margin-top:18px;max-width:1260px;position:relative;text-shadow:1px 1px 6px rgba(var(--lsd-surface-primary),1);z-index:-2}.mdx-hero-info{border-bottom:1px solid rgb(var(--lsd-surface-secondary));display:flex;flex-direction:column;justify-content:end;padding:32px 0;transition:margin-bottom .05s ease-in-out}.mdx-profile-card,.mdx-profile-card__avatar{border:1px solid rgb(var(--lsd-border-primary))}.mdx-timeline-item,.mdx-timeline-item__border{border-bottom:1px solid rgb(var(--lsd-border-primary))}.mdx-hero-model{--mdx-hero-model-wrapper-scale:1;position:absolute;transform:translateX(calc(-50vw - var(--container-max-width)*-1/2 + var(--content-padding)*4*-1/2));width:100vw;z-index:0}.mdx-hero-model .mdx-hero-model--inner{left:0;position:relative;top:0;width:100%;z-index:0}.mdx-hero-model .mdx-hero-model--inner canvas{pointer-events:unset!important}.mdx-hero-model--top{top:300px}.mdx-hero-model--bottom{top:calc(var(--logos-hero-info-height) - 10px)}.mdx-hero-model--bottom .mdx-hero-model--shade{bottom:10vh;height:40vh}.mdx-hero-model--ascii{filter:grayscale(100%);opacity:.65}.mdx-hero-model--ascii table,.mdx-hero-model--ascii table *{border:none!important;color:rgb(var(--lsd-text-primary));font-family:monospace}.mdx-hero-model--shade{background:linear-gradient(0deg,rgb(var(--lsd-surface-primary)) 37%,rgb(var(--lsd-surface-primary)) 0,rgba(var(--lsd-surface-primary),0) 100%);bottom:0;height:30vh;left:0;position:absolute;width:100%}.mdx-hero-title{font-size:70px!important;line-height:100%!important}.mdx-hero-video{--hero-video-height:120%;--hero-video-min-height:100vh;--hero-video-offset-y:-150px;--hero-video-scale:1.70951586;--hero-video-height-mobile:120%;--hero-video-min-height-mobile:100vh;--hero-video-offset-y-mobile:-50px;--hero-video-scale-mobile:1.70951586;display:grid;flex-grow:1;grid-template-columns:1fr;grid-template-rows:1fr;pointer-events:none;position:relative}.mdx-hero-video>*{align-items:center;display:flex;flex-direction:column;grid-column:1/1;grid-row:1/1;height:var(--hero-video-height);justify-content:center;left:0;min-height:var(--hero-video-min-height);position:absolute;top:0;transform:translateY(var(--hero-video-offset-y));width:100%}.mdx-hero-video img{object-fit:contain}.mdx-hero-video img,.mdx-hero-video video{height:100%;max-width:calc(var(--container-max-width)*var(--hero-video-scale));object-position:top;transform-origin:top center;width:auto}.mdx-hero-video--loading .mdx-hero-video__placeholder{opacity:1;visibility:visible}.mdx-jpd__single-job-department-container{border-top:1px solid rgb(var(--lsd-border-primary));padding-top:8px}.mdx-jpd__department-title{font-size:12px!important;line-height:16px!important}.mdx-jpd__job-title-container{align-items:center;display:flex;padding-bottom:8px}.mdx-jpd__job-list{list-style-type:none;margin:0;padding:8px 0 24px}.mdx-jpd__job-list-item{padding:14px 0}.mdx-jpd__job-link,.mdx-jpd__job-link:hover{text-decoration:none!important}.mdx-event-card__title:hover,.mdx-jpd__job-link:hover .mdx-jpd__job-title,.mdx-social-card:hover{text-decoration:underline!important}.mdx-logo-carousel .mdx-section-header__title{flex-basis:100%}.mdx-logo-carousel .mdx-logo-carousel__inner{margin-top:100px}.mdx-logo-carousel .mdx-logo-carousel__item{flex-shrink:0}.mdx-logo-carousel .mdx-logo-carousel__logo{height:56px;width:auto}.mdx-ns__inner form{margin-top:40px;width:100%}.mdx-ns__inner .mdx-ns__inputs{align-items:center;display:flex;flex-direction:row;gap:16px;width:100%}.mdx-ns__inner .mdx-ns__inputs>*{flex-grow:1}.mdx-ns__inner .mdx-ns__submit-button{margin-top:40px}.mdx-ns__inner .mdx-ns__toast{margin-bottom:24px;margin-top:-16px;width:100%}.mdx-profile-card{align-items:flex-start;display:flex;flex-direction:column;height:var(--card-height);justify-content:space-between;padding:1rem}.mdx-profile-card__profile{display:flex;flex-direction:column;gap:20px}.mdx-profile-card__avatar{border-radius:50%}.mdx-profile-card__avatar,.mdx-profile-card__avatar svg,.mdx-social-card__logo,.mdx-social-card__logo svg{height:40px!important;width:40px!important}.mdx-profile-card__avatar svg rect{fill:unset!important}.mdx-profile-card__buttons{display:flex;flex-direction:row;gap:8px;width:100%}.mdx-profile-card__link{height:-moz-fit-content;height:fit-content;max-width:calc(50% - 4px);position:relative;text-decoration:none}.mdx-event-card,.mdx-event-profile,.mdx-social-card{text-decoration:none!important}.mdx-timeline-item{display:flex;flex:0 0 auto;flex-direction:column;gap:1rem;justify-content:space-between;min-height:306px;padding-bottom:23px;scroll-snap-align:start!important;width:236px}.mdx-timeline-item__header{align-items:flex-start;display:flex;flex-direction:column;gap:1rem}.mdx-timeline-item__period-container{position:relative;width:100%}.mdx-timeline-item__border{height:50%;left:0;position:absolute;top:0;width:calc(100% + 1rem);z-index:-1}.mdx-timeline-item--border-dashed .mdx-timeline-item__border{border-bottom-style:dashed}.mdx-timeline-item__period{border-radius:10rem;display:inline-block;padding:3px 12px}.docItemContainer_hrrU .tocMobile_imaF:not(:first-of-type),.docSidebarContainer_b6E3,.mdx-roadmap__timeline .mdx-grid-item:last-child .mdx-timeline-item__border,.mdx-timeline-item__item:last-child .mdx-timeline-item__border,.sidebarLogo_Ydl9{display:none}.mdx-timeline-item__period--filled{background-color:rgb(var(--lsd-surface-secondary));border:1px solid rgb(var(--lsd-border-secondary));color:rgb(var(--lsd-text-secondary))!important}.mdx-timeline-item__period--transparent{background-color:rgb(var(--lsd-surface-primary));border:1px solid rgb(var(--lsd-border-primary));color:rgb(var(--lsd-text-primary))!important}.mdx-roadmap__timeline{margin-top:6.25rem}.mdx-roadmap__timeline-item{height:100%}.scrollToBottom_NE5w{--offset-y:-2rem;background:rgb(var(--lsd-surface-primary))!important;opacity:1;position:absolute;top:min(100*var(--vh) - var(--ifm-navbar-height),var(--maxTop) - var(--ifm-navbar-height));transform:translateY(-2rem);transform:translateY(calc(-100% + var(--offset-y)));transition:.2s ease-in-out;z-index:100}.scrollToBottom_NE5w.hide_q_kn{opacity:0;transform:translateY(calc(-100% + var(--offset-y) - .625rem))}.mdx-section-header{border-top:1px solid rgb(var(--lsd-border-primary));display:flex;flex-direction:row;gap:1rem;padding-top:24px;width:100%}.mdx-section-header>*{flex-basis:50%}.mdx-section-header__title{display:flex;flex-direction:row;gap:2rem}.mdx-showcase-card__inner{display:flex;flex-direction:column;gap:1.5rem;padding-top:1.5rem}.mdx-showcase-card__logo{height:auto;width:58px}.mdx-showcase-card__index{align-items:center;background-color:rgb(var(--lsd-surface-secondary));border-radius:50%;color:rgb(var(--lsd-text-secondary))!important;display:flex;flex-direction:row;height:30px;justify-content:center;width:30px}.mdx-showcase-card__description{margin-top:-.125rem;padding-top:.5rem}.mdx-showcase-card--large .mdx-showcase-card__logo{width:58px}.mdx-showcase-card--small .mdx-showcase-card__logo{width:34px}.mdx-showcase-card--border-solid .mdx-showcase-card__description{border-top:1px solid rgb(var(--lsd-border-primary));padding-top:1rem}.mdx-social-card{align-items:flex-start;border:1px solid rgb(var(--lsd-border-primary));display:flex;flex-direction:column;justify-content:space-between;min-height:144px;padding:1rem}.mdx-event-banner__thumbnail,.mdx-event-card__thumbnail{aspect-ratio:5/1;border:1px solid rgba(var(--lsd-border-primary),.2)}.mdx-social-card__row{display:flex;justify-content:space-between;width:100%}.mdx-event-card{display:flex;flex-direction:column;gap:24px}.mdx-event-card__row,.mdx-event-profile__row{display:flex;gap:8px;justify-content:space-between;width:100%}.mdx-event-card__info{border-top:1px solid rgba(var(--lsd-border-primary),.2);display:flex;flex-direction:column;gap:16px;padding:16px 16px 16px 0;width:100%}.mdx-event-card__info *,.mdx-event-info__content{white-space:pre-wrap}.mdx-event-card-list__button{display:block;margin:0 auto}.mdx-event-banner__thumbnail{margin-bottom:32px}.mdx-event-info__container{align-self:stretch;background:rgba(var(--lsd-theme-primary),.05);border-top:1px solid rgba(var(--lsd-border-primary));display:flex;flex:1 0 0;flex-direction:column;gap:16px;height:100%;padding:16px}.mdx-event-about__container{display:grid;gap:16px;grid-template-columns:repeat(12,1fr)}.mdx-event-about__container h2{grid-column:1/2;margin-top:0!important}.mdx-event-about__container span{grid-column:5/13}.mdx-event-profile{display:flex;flex-direction:column;gap:16px}.mdx-event-profile__image{aspect-ratio:1/1}.mdx-event-profile__title{margin-bottom:8px}.mdx-event-profile__social{align-items:center;display:flex;gap:8px}.mdx-event-cta__container h2{margin-bottom:32px;margin-top:0!important}.mdx-event-cta__button{height:70px!important;width:100%!important}.mdx-event-cta__button>span{align-items:center;display:flex;height:100%;justify-content:space-between}.mdx-event-cta-section__container h2{margin-bottom:16px;margin-top:0!important}.mdx-event-cta-section__container h3{margin-top:24px!important}.mdx-event-cta-section__cta{height:40px!important;width:160px!important}.mdx-event-cta-section__description{margin-bottom:32px!important;white-space:pre-wrap}.mdx-event-cta-section__form{display:flex;flex-direction:column;gap:40px}.mdx-event-cta-section__input-fields{display:flex;gap:16px}.mdx-event-header__container{display:flex;flex-direction:column;gap:24px}.mdx-event-header__container h1{margin-bottom:0!important}.breadcrumbsContainer_RLvU{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:24px}.codeBlockContainer_Ckt0{background:var(--prism-background-color);border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw)}.codeBlockContainer_Ckt0,.codeBlockContainer_EB2s{color:var(--prism-color);margin-bottom:var(--ifm-leading)}.codeBlockContainer_EB2s{background:#0000;border-radius:0}.codeBlockContent_biex{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_Ktv7{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlock_TWhw,.codeBlock_bY9V{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockTitle_Ktv7+.codeBlockContent_biex .codeBlock_bY9V,.codeBlockTitle_sjMo+.codeBlockContent_ugSV .codeBlock_TWhw{border-top-left-radius:0;border-top-right-radius:0}.codeBlockLines_LDrR,.codeBlockLines_e6Vv{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.buttonGroup_Qu4e button,.buttonGroup__atx button{color:var(--prism-color);line-height:0;transition:opacity var(--ifm-transition-fast) ease-in-out}.codeBlockLinesWithNumbering_bsRF,.codeBlockLinesWithNumbering_o6Pm{display:table;padding:var(--ifm-pre-padding) 0}.buttonGroup_Qu4e,.buttonGroup__atx{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup__atx button{align-items:center;background:var(--prism-background-color);border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;opacity:0;padding:.4rem}.buttonGroup__atx button:focus-visible,.buttonGroup__atx button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup__atx button{opacity:.4}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_lJS_{counter-increment:a;display:table-row}.codeLineNumber_Tfdd{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:sticky;text-align:right;width:1%}.codeLineNumber_Tfdd:before{content:counter(a);opacity:.4}.codeLineContent_feaV{padding-right:var(--ifm-pre-padding)}.theme-code-block:hover .copyButtonCopied_YovB{opacity:1!important}.copyButtonIcons_an20{align-items:center;display:flex;justify-content:center;position:relative}.copyButtonIcon_ZL7v,.copyButtonSuccessIcon_P2h8{fill:currentColor;height:14px;opacity:inherit;transition:all var(--ifm-transition-fast) ease;width:14px}.copyButtonSuccessIcon_P2h8{color:#00d600;opacity:0}.copyButtonCopied_YovB .copyButtonSuccessIcon_P2h8{opacity:1;transition-delay:75ms}.wordWrapButtonIcon_Bwma{height:1.2rem;width:1.2rem}.codeBlockTitle_sjMo{background:var(--prism-background-color);border-bottom:1px solid var(--ifm-color-primary);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.buttonGroup_Qu4e button{align-items:center;background:var(--prism-background-color);border:1px solid rgb(var(--lsd-border-primary));display:flex;height:28px;justify-content:center;opacity:0;width:28px}.buttonGroup_Qu4e button:focus-visible,.buttonGroup_Qu4e button:hover{opacity:1!important}.anchorWithStickyNavbar_LWe7{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorWithHideOnScrollNavbar_WYt5{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);-webkit-user-select:none;user-select:none}.hash-link:before{content:"#"}.img_ev3q{height:auto}.admonition_ntHH{border:1px solid var(--ifm-alert-border-color);display:flex;gap:18px;margin-bottom:24px;padding:18px}.admonitionHeading_JPfy{font-size:1.25rem!important;font-weight:400;line-height:1.5rem!important;margin-bottom:.3rem}.admonitionHeading_JPfy code{text-transform:none}.admonitionIcon_BGV6{display:inline-block}.admonitionIcon_BGV6 svg{display:inline-block;height:16px;width:16px}.admonitionIcon_BGV6 svg *{stroke:none!important;fill:var(--ifm-alert-border-color)}.admonitionContent_iozl{display:block;margin-top:12px}.root_UH70,.tagWithCount_gIvh{align-items:center;display:flex}.tag_dtsN{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_dtsN:hover{--docusaurus-tag-list-border:var(--ifm-link-color);text-decoration:none}.tagRegular_SGIC{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_gIvh{border-left:0;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_gIvh:after,.tagWithCount_gIvh:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_gIvh:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_gIvh:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_gIvh span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.root_UH70{flex-direction:row}.tags_LT8x{display:inline;margin:0 0 0 1rem!important;padding:0!important}.tag_NdBD:not(:first-child){margin-left:.5rem}.tag_NdBD a{margin:0!important;padding:0!important}.lastUpdated_vwxv{font-size:smaller;font-style:italic;margin-top:.2rem}.tableOfContents_bqdL{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.tocCollapsibleButton_dxRj{align-items:center;border:1px solid rgb(var(--lsd-border-primary));display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButtonExpanded_TSyC:after,.tocCollapsibleExpanded_zTjk{transform:none}.tocCollapsible_ROek{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleContent_Qsjj>ul{border-left:none;border:1px solid rgb(var(--lsd-border-primary))!important;border-top:none!important;font-size:15px;padding:.2rem 0}.tocCollapsibleContent_Qsjj ul li{margin:.4rem .8rem}.tocCollapsibleContent_Qsjj a{display:block;-webkit-text-decoration:var(--ifm-link-text-decoration);text-decoration:var(--ifm-link-text-decoration)}.badge_AsjZ{background:#0000}.docItemGrid_SzoZ{display:grid;gap:16px;grid-template-columns:repeat(14,1fr)}.gap1_XuuQ{grid-column:span 1}.toc_pP_5{grid-column:span 4}.tocMobile_imaF{margin-bottom:2rem;margin-top:-.5rem}.tocMobile_imaF>div{display:block!important;margin:0}.docItemContainer_hrrU h1{margin-bottom:40px!important}.docItemContainer_hrrU h2,.docItemContainer_hrrU h3{margin-top:32px!important}.backToTopButton_sjWU{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.backToTopButton_sjWU:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_xfvO{opacity:1;transform:scale(1);visibility:visible}.docMainContainer_gTbr,.docPage__5DB{display:flex;width:100%}.docPage__5DB{flex:1 0}.docsWrapper_BCFX{display:flex;flex:1 0 auto}.root_jG9K{align-items:center;display:flex;flex-direction:column;padding:1rem!important;width:100%}.root_jG9K>div{max-width:796px!important;width:100%}.root_jG9K>div>div{align-items:flex-start;display:flex;flex-direction:column;gap:1rem;padding:0!important}.root_jG9K a{margin-top:2.5rem}@media (min-width:0px){.mdx-box{--mdx-box-top:var(--mdx-box-top-xs);--mdx-box-bottom:var(--mdx-box-bottom-xs)}}@media (min-width:576px){.mdx-box{--mdx-box-top:var(--mdx-box-top-sm);--mdx-box-bottom:var(--mdx-box-bottom-sm)}}@media (min-width:768px){.blog-archive-page .main-wrapper main>section .container>.row{display:grid;gap:64px 24px;grid-template-columns:repeat(24,1fr)}.blog-archive-page .main-wrapper main>section .container>.row>.col{grid-column:span 12;margin:0!important;max-width:unset;padding:0 8.3333333333% 0 0}.mdx-box{--mdx-box-top:var(--mdx-box-top-md);--mdx-box-bottom:var(--mdx-box-bottom-md)}.mdx-scroll-buttons__button--with-label{gap:12px;min-width:83px;padding:5px 11px 5px 9px!important;width:auto!important}.mdx-scroll-buttons__button--with-label:first-of-type,.mdx-scroll-buttons__button--with-label:last-of-type{justify-content:flex-start}.mdx-scroll-buttons--spaced>div{gap:0 1rem;justify-content:space-between}.mdx-scroll-buttons--spaced>div>button:not(:last-child){border-right:1px solid rgb(var(--lsd-border-primary))!important}}@media (min-width:997px){.main-wrapper .container{padding-bottom:calc(var(--desktop-footer-gap) - var(--ifm-footer-padding-vertical))!important}.main-wrapper>div{display:grid;gap:1rem;grid-template-columns:repeat(16,42px)}.main-wrapper>div aside{border:none;grid-column:1/5;padding-left:var(--content-padding);width:auto}.main-wrapper>div main{grid-column:6/17;max-width:none}.navbar__inner{display:flex;flex-direction:row;justify-content:flex-start}.navbar__left{flex-basis:8.3333333333%;flex:0 1 auto}.navbar__left-items{flex:1 0;margin:auto}nav.menu{padding-top:16px}.navbar .lsd-icon-button--medium{height:28px!important;width:28px!important}.blog-wrapper>.container>.row{display:grid;gap:16px;grid-template-columns:repeat(24,1fr)}.blog-wrapper>.container>.row>aside{grid-column:1/5}.blog-wrapper>.container>.row>main{grid-column:6/20}.blog-wrapper:not(.blog-wrapper--index)>.container>.row>div:last-child{grid-column:21/25;max-width:unset}.wrapper_SWrM:not(.active_qZD5) .fullscreenButton_Bocn{background:rgb(var(--lsd-surface-primary));bottom:8px;display:flex;opacity:0;position:absolute;right:8px;transition:.3s;visibility:hidden}.wrapper_SWrM:not(.active_qZD5):hover .fullscreenButton_Bocn{opacity:1;visibility:visible}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_gvF7,.announcementBarPlaceholder_vyr4{flex-basis:50px}.searchBox_ZlJk{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.mdx-box{--mdx-box-top:var(--mdx-box-top-lg);--mdx-box-bottom:var(--mdx-box-bottom-lg)}.mdx-feature-list--bottom-aligned .mdx-feature-list__feature{min-height:332px}.mdx-feature-list--bottom-aligned .mdx-feature-list__feature-description{display:flex;flex:1 0;flex-direction:column;justify-content:flex-end}.mdx-feature-list--top-aligned .mdx-feature-list__feature-description{margin-top:136px}.mdx-feature-list__feature{padding:1rem;position:relative}.mdx-feature-list__feature-inner{height:100%;padding:.5rem}.mdx-feature-list__feature-border{background:rgb(var(--lsd-border-primary));height:calc(100% - 2rem);position:absolute;right:0;top:1rem;width:1px}.mdx-feature-list__feature:nth-child(odd){padding-left:0}.mdx-feature-list__feature:nth-child(2n){padding-right:0}.mdx-feature-list__feature:nth-child(2n) .mdx-feature-list__feature-border,.tocMobile_ITEo{display:none}.lastUpdated_vwxv{text-align:right}.docItemGrid_SzoZ{display:grid;gap:var(--doc-grid-gap);grid-template-columns:repeat(11,1fr)}.docItemCol_F52z{grid-column:span 11}.menuHtmlItem_M9Kj{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_NjKY{flex-grow:1;padding-top:16px}@supports (scrollbar-gutter:stable){.menu_NjKY{scrollbar-gutter:stable}}.menuWithAnnouncementBar_U5pk{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_UEyd{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height)}.sidebarWithHideableNavbar__00c{padding-top:0!important}.sidebarHidden_F1ZE{opacity:0;visibility:hidden}.sidebarLogo_Ydl9{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);text-decoration:none!important}.sidebarLogo_Ydl9 img{height:2rem;margin-right:.5rem}.expandButton_m80_{align-items:center;background-color:var(--docusaurus-collapse-button-bg);display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}.expandButton_m80_:focus,.expandButton_m80_:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.expandButtonIcon_BlDH{transform:rotate(0)}[dir=rtl] .expandButtonIcon_BlDH{transform:rotate(180deg)}.docSidebarContainer_b6E3{border-right:1px solid var(--ifm-toc-border-color);-webkit-clip-path:inset(0);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_b3ry{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_Xe31{height:100%;max-height:100vh;position:sticky;top:0}.docMainContainer_gTbr{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_Uz_u{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_czyv{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}}@media (min-width:997px)and (max-width:1199px){.events .main-wrapper>div aside{grid-column:1/1}.events .main-wrapper>div main{grid-column:1/17}}@media (min-width:1200px){.main-wrapper>div,.navbar__inner{display:grid;grid-template-columns:repeat(24,1fr);grid-template-columns:repeat(24,1fr)}.main-wrapper>div{gap:1rem}.main-wrapper>div aside{border:none;grid-column:1/5;width:auto}.main-wrapper>div main{grid-column:6/25;max-width:none}.theme-doc-toc-desktop{top:calc(var(--ifm-navbar-height))!important}.navbar__inner{gap:16px;padding:0}.navbar__left{align-items:center;display:flex;flex-direction:row;grid-column:1/6}.navbar__left-items{grid-column:6/20}.navbar__right-items{flex-direction:row;gap:16px;grid-column:20/25;justify-content:flex-end}.blog-archive-page .main-wrapper main>section .container>.row{display:grid;gap:64px 24px;grid-template-columns:repeat(24,1fr)}.blog-archive-page .main-wrapper main>section .container>.row>.col{grid-column:span 8;margin:0!important;max-width:unset;padding:0 12.5% 0 0}.mdx-box{--mdx-box-top:var(--mdx-box-top-xl);--mdx-box-bottom:var(--mdx-box-bottom-xl)}.docItemGrid_SzoZ{display:grid;gap:var(--doc-grid-gap);grid-template-columns:repeat(19,1fr)}.docItemCol_F52z{grid-column:span 14}.tocMobile_imaF{display:none}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:1440px)and (min-width:992px){.mdx-hero-model{transform:translateX(calc((var(--content-padding) + 0)*-3));width:calc(100vw + var(--content-padding))}}@media (max-width:1199px){:root{--container-max-width:912px}.main-wrapper main>.container{padding-bottom:calc(var(--desktop-footer-gap) - var(--ifm-footer-padding-vertical) - var(--doc-grid-gap))!important}.header-github-link:before{margin-right:16px}.toc_pP_5{display:none}}@media (max-width:997px);@media (max-width:996px){.navbar-sidebar__close,.navbar__toggle{border:1px solid rgb(var(--lsd-border-primary))}.mdx-cta-section__title,.mdx-section-header__title,.navbar-sidebar:not(.navbar-sidebar--show-secondary) .menu__link>div{font-size:var(--lsd-subtitle2-fontSize)!important;font-weight:var(--lsd-subtitle2-fontWeight)!important;line-height:var(--lsd-subtitle2-lineHeight)!important}.blog-wrapper h1[itemprop=headline],.mdx-cta-button .lsd-button--large,.mdx-cta-section__description,.mdx-cta-section__title,.mdx-hero-description,.mdx-section-header__description,.mdx-section-header__title,.navbar-sidebar:not(.navbar-sidebar--show-secondary) .menu__link>div{font-family:var(--lsd-typography-generic-font-family)!important}.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0;padding-bottom:0!important;--ifm-footer-padding-horizontal:var(--content-padding)}.desktop,.footer__link-separator,.navbar__item,.navbar__left-items{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item,.main-wrapper>div,.mdx-cta-section--full-width .mdx-cta-section__container,.mdx-cta-section--list,.tocMobile_imaF{display:block}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid,.root_xZfc{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.mdx-section-header,.pills--block,.tabs--block{flex-direction:column}:root{--ifm-background-color:rgb(var(--lsd-surface-primary))}.navbar__color-mode-toggle{display:none!important}.main-wrapper main>.container{padding-bottom:calc(var(--mobile-footer-gap) - var(--ifm-footer-padding-vertical) - var(--doc-grid-gap))!important}.grid{grid-template-columns:repeat(2,1fr)}.footer-grid,.l-modal__container,.mdx-feature-list__list,.mdx-profile-card{grid-template-columns:1fr}.navbar{display:flex;height:56px}.navbar__toggle{align-items:center;box-sizing:border-box;display:flex;height:32px;justify-content:center;margin:0;width:32px}.navbar__toggle svg{height:14px;width:14px}.theme-admonition{display:block!important}.navbar-sidebar:not(.navbar-sidebar--show-secondary) .menu{padding-inline:0}.navbar-sidebar:not(.navbar-sidebar--show-secondary) .menu__list{display:flex;flex-direction:column;gap:8px;padding:var(--content-padding)}.navbar-sidebar:not(.navbar-sidebar--show-secondary) .menu__link{border-left:none;padding-left:0}.navbar-sidebar:not(.navbar-sidebar--show-secondary) .menu__link>div{text-decoration:none}.navbar-sidebar:not(.navbar-sidebar--show-secondary) .footer{margin-top:3rem;padding:0!important}.navbar-sidebar:not(.navbar-sidebar--show-secondary) .footer>div{display:flex!important;flex-direction:column!important;gap:32px!important}.colorModeToggle_GSaI,.dropdownNavbarItem_o23I,.l-modal__backdrop,.navbar-sidebar:not(.navbar-sidebar--show-secondary) .footer>button,.tableOfContents_bqdL{display:none}.navbar-sidebar:not(.navbar-sidebar--show-secondary) .footer .container.container-fluid{margin-bottom:16px!important;padding-inline:var(--content-padding)}.navbar-sidebar:not(.navbar-sidebar--show-secondary) .footer .container.container-fluid>.footer__links{gap:0!important}.navbar-sidebar:not(.navbar-sidebar--show-secondary) .footer>div[class*=secondRow]{margin:var(--content-padding)}.navbar-sidebar:not(.navbar-sidebar--show-secondary) .footer .footer__links{gap:16px!important}.navbar-sidebar__brand{height:60px;padding-block:0}.navbar-sidebar__brand>button{height:32px;width:32px}.navbar-sidebar__brand>button:first-of-type{margin-left:auto;margin-right:0!important}.navbar-sidebar__brand>button:not(:last-of-type){border-right:none}.navbar-sidebar__close{align-items:center;display:flex;justify-content:center;margin-left:unset}.blog-divider{margin-block:32px!important}.blog-wrapper main{padding-inline:var(--content-padding)}.blog-wrapper article footer{align-items:flex-start;flex-direction:column}.blog-wrapper article footer .read-more-link{margin-top:24px}.blog-wrapper article footer .read-more-link,.blog-wrapper article footer .read-more-link button{flex-basis:100%;width:100%}.blog-wrapper h1[itemprop=headline]{font-size:var(--lsd-h2-fontSize)!important;font-weight:var(--lsd-h2-fontWeight)!important;line-height:var(--lsd-h2-lineHeight)!important}.wrapper_SWrM>div{overflow:visible!important}.nav_cMpg{height:56px}.backToTop_wDfN{bottom:16px;left:16px;margin-top:76px!important;position:relative}.l-modal{overflow:hidden;width:100vw}.l-modal__container{display:grid;height:100vh;max-width:unset;min-height:-webkit-fill-available;width:100%}.docItemGrid_SzoZ,.mdx-showcase{grid-template-columns:repeat(2,1fr)}.root_ONDG,.root_ltHz{height:100%;overflow:auto}.l-modal__content{border:none;grid-column:1/2;grid-row:1/2;height:100%;margin:0;max-height:100vh;overflow:hidden}.modal_kLVz .header_QwCa{padding:12px 16px}.modal_kLVz .closeButton_Rr0e{display:block;height:2rem;width:2rem}.root_EFVO{padding:40px 24px}.root_ONDG{max-height:100%;padding:24px 24px 64px}.groups_p1lF{max-height:unset;overflow:auto}.root_ltHz{padding:24px 0 64px}.searchBox_ZlJk{position:absolute;right:var(--ifm-navbar-padding-horizontal)}.mdx-cta-button .lsd-button--large{font-size:var(--lsd-label2-fontSize)!important;font-weight:var(--lsd-label2-fontWeight)!important;line-height:var(--lsd-label2-lineHeight)!important;padding:5px 11px}.mdx-cta-section{padding:16px 0 0}.mdx-cta-section--title-button .mdx-cta-section__title{font-family:var(--lsd-typography-generic-font-family);font-size:var(--lsd-h4-fontSize);font-weight:var(--lsd-h4-fontWeight);line-height:var(--lsd-h4-lineHeight)}.mdx-feature-list .mdx-feature-list__title,.mdx-feature-list__feature .mdx-feature-list__feature-index{font-size:var(--lsd-subtitle2-fontSize);font-weight:var(--lsd-subtitle2-fontWeight);line-height:var(--lsd-subtitle2-lineHeight);font-family:var(--lsd-typography-generic-font-family)}.mdx-cta-section--full-width .mdx-cta-section__description,.mdx-cta-section--simple .mdx-cta-section__description{margin-top:1.5rem}.mdx-cta-section--list .mdx-cta-section__list,.mdx-roadmap__timeline{margin-top:4rem}.mdx-cta-section--list .mdx-cta-section__list>*{border-top:1px solid rgb(var(--lsd-border-primary))}.mdx-cta-section--list .mdx-cta-section__list .mdx-cta-section__list-item>.mdx-cta-section__item-title{font-size:.875rem!important;line-height:1.25rem!important}.mdx-cta-section--list .mdx-cta-section__list .mdx-cta-section__list-item>.mdx-cta-section__item-description{font-family:var(--lsd-typography-generic-font-family)!important;font-size:var(--lsd-h4-fontSize)!important;font-weight:var(--lsd-h4-fontWeight)!important;line-height:var(--lsd-h4-lineHeight)!important}.mdx-cta-section__description{font-size:var(--lsd-h4-fontSize)!important;font-weight:var(--lsd-h4-fontWeight)!important;line-height:var(--lsd-h4-lineHeight)!important}.mdx-feature-list .mdx-feature-list__title{padding:1rem 0}.mdx-feature-list--cta-bottom .mdx-feature-list__extra{margin-top:2rem;padding:0}.mdx-feature-list__feature{border:none;border-top:1px solid rgb(var(--lsd-border-primary));padding:1.5rem 0}.mdx-feature-list__feature .mdx-feature-list__feature-index{height:1.625rem;width:1.625rem}.mdx-feature-list__feature .mdx-feature-list__feature-title{font-family:var(--lsd-typography-generic-font-family);font-size:var(--lsd-h4-fontSize);font-weight:var(--lsd-h4-fontWeight);line-height:var(--lsd-h4-lineHeight);margin-top:1rem}.mdx-feature-list__feature .mdx-feature-list__feature-description{font-family:var(--lsd-typography-generic-font-family);font-size:var(--lsd-body1-fontSize);font-weight:var(--lsd-body1-fontWeight);line-height:var(--lsd-body1-lineHeight);margin-top:3rem}.mdx-feature-list__feature:nth-child(odd) .mdx-feature-list__feature-inner{border:none}.mdx-hero-action{text-decoration:none!important}.mdx-hero-action button{padding:6px 12px!important}.mdx-hero-actions{align-items:center;display:flex;flex-direction:row;justify-content:stretch;margin-top:1.5rem;width:100%;z-index:0}.mdx-hero-actions>*{flex-basis:50%}.mdx-hero-actions>a,.mdx-hero-actions>a>button{display:block;width:100%}.mdx-hero-description{font-size:var(--lsd-subtitle1-fontSize)!important;font-weight:var(--lsd-subtitle1-fontWeight)!important;line-height:var(--lsd-subtitle1-lineHeight)!important;margin-top:12px}.mdx-hero-info{padding:24px 0}.mdx-hero-model--top{top:calc(var(--logos-hero-info-height)/ 1 - 10px)}.mdx-hero-model{transform:translate(-12px);width:calc(100vw - 20px)}.mdx-hero-model--shade{bottom:0;height:90vh!important}.mdx-hero-title{font-size:28px!important}.mdx-hero-video>*{height:var(--hero-video-height-mobile);min-height:var(--hero-video-min-height-mobile);transform:translateY(var(--hero-video-offset-y-mobile))}.mdx-hero-video img,.mdx-hero-video video{max-width:calc((100vw - 32px)*var(--hero-video-scale-mobile))}.mdx-logo-carousel .mdx-logo-carousel__inner{margin-top:64px}.mdx-timeline-item{width:204px}.scrollToBottom_NE5w{--offset-y:-1rem}.mdx-section-header__description{font-size:var(--lsd-h4-fontSize)!important;font-weight:var(--lsd-h4-fontWeight)!important;line-height:var(--lsd-h4-lineHeight)!important}.mdx-showcase{gap:1.5rem 1rem}.mdx-showcase-card__name{font-size:1.375rem!important;line-height:1.75rem!important}.mdx-showcase-card__description{margin-top:1rem}.mdx-showcase-card__logo{height:auto;width:34px}.docItemContainer_F8PC{padding:0 .3rem}.docItemGrid_SzoZ{display:grid;padding-left:0}.docItemCol_F52z{grid-column:span 2}}@media (max-width:767px){.blog-archive-page .main-wrapper main>section .container>.row{margin-top:0}.blog-archive-page .main-wrapper main>section .container>.row .col{margin-top:40px!important}.mdx-scroll-buttons>div{justify-content:flex-end}.mdx-scroll-buttons>div>button:not(:last-child){border-right:none!important}.mdx-scroll-buttons .mdx-scroll-buttons__label{display:none}.mdx-ns__description{font-family:var(--lsd-typography-generic-font-family);font-size:var(--lsd-h4-fontSize);font-weight:var(--lsd-h4-fontWeight);line-height:var(--lsd-h4-lineHeight)}.mdx-ns__inner form{margin-top:40px}.mdx-ns__inner .mdx-ns__inputs{flex-direction:column;gap:24px}.mdx-ns__inner .mdx-ns__inputs>*{width:100%}.mdx-ns__inner .mdx-ns__submit-button{margin-top:24px}.mdx-profile-card{flex:0 0 var(--mobile-width);height:var(--mobile-height);scroll-snap-align:start!important;width:var(--mobile-width)}.mdx-profile-card__profile{gap:16px}.mdx-profile-card__name{font-family:var(--lsd-typography-generic-font-family)!important;font-size:var(--lsd-h5-fontSize)!important;font-weight:var(--lsd-h5-fontWeight)!important;line-height:var(--lsd-h5-lineHeight)!important}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}}@media (max-width:575px){.footer__links,.mdx-event-profile-list__container .mdx-grid>.mdx-grid__content{gap:24px!important}:root{--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-button-size-multiplier:1.25;--ifm-button-padding-horizontal:calc(var(--ifm-button-size-multiplier)*var(--ifm-spacing-horizontal));--ifm-button-padding-vertical:calc(var(--ifm-button-size-multiplier)*var(--ifm-spacing-vertical));--ifm-alert-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-alert-padding-vertical:calc(var(--ifm-spacing-vertical)*2)}.markdown>h2{--ifm-h2-font-size:1.75rem}.markdown h4{--ifm-h4-font-size:1.25rem!important}.footer>div{display:flex!important;flex-direction:column;gap:72px!important}.footer__links{display:flex!important;flex-direction:column!important}.col.footer__col{margin-bottom:0!important}.navbar__left{display:flex}.events-cta-sections .mdx-grid__content{gap:64px!important}.footer{--ifm-footer-padding-horizontal:0}.firstRow_ar1q{padding-inline:var(--content-padding)!important}.secondRow__ww3{margin-inline:var(--content-padding)!important}.mdx-event-card-list__container{margin-bottom:48px}.mdx-event-about__container,.mdx-event-cta-section__input-fields{display:flex;flex-direction:column;gap:32px}.mdx-event-about__container span,.mdx-event-header__container p{font-size:14px!important;line-height:20px!important}.mdx-event-cta-section__input-fields>div{width:100%!important}.mdx-event-cta-section__container .mdx-event-cta-section__input-fields{margin-bottom:16px}.mdx-event-cta-section__container .mdx-event-cta-section__cta{margin-top:8px}.mdx-event-cta-section__container .mdx-event-cta-section__form{margin-bottom:-24px}.mdx-event-header__container h1{font-size:24px!important;line-height:32px!important}}@media (max-width:574px){.mdx-ghc__issue-content-grid{grid-template-columns:82px 1fr}}@media (hover:hover){.backToTopButton_sjWU:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}}@media print{.announcementBar_mb4j,.footer,.menu,.navbar,.pagination-nav,.table-of-contents,.tocMobile_ITEo{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_LDrR,.codeBlockLines_e6Vv{white-space:pre-wrap}} \ No newline at end of file +.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}[data-theme=dark],html[data-theme=dark]{--ifm-color-scheme:dark}:root,[data-theme=light]{--ifm-color-scheme:light}code,pre code{--lsd-typography-generic-font-family:monospace}.button,.dropdown__link,.footer__item,.text--truncate{white-space:nowrap}.toggleButton_dl49,html{-webkit-tap-highlight-color:transparent}*,.buttonGroup_Qu4e button,.dropdownNavbarItem_o23I,.events .theme-doc-breadcrumbs .breadcrumbs__item--active,.mdx-event-info__container,.root_xZfc,.toggle_K23S{box-sizing:border-box}.clean-list,.containsTaskList_mC6p,.dropdown__menu,.menu__list,.root_N57j ul li{list-style:none}:root{--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:#0000;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-radius:0.4rem;--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-weight-light:300;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 #0000001a;--ifm-global-shadow-md:0 5px 40px #0003;--ifm-global-shadow-tl:0 12px 28px 0 #0003,0 2px 4px 0 #0000001a;--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-table-cell-padding:0.75rem;--ifm-table-background:#0000;--ifm-table-stripe-background:#00000008;--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-color:var(--ifm-font-color-base);--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-color:var(--ifm-color-white);--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-sidebar-width:83vw;--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active)}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:#0000}html{-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;text-size-adjust:100%;background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);text-rendering:optimizelegibility}body{background-color:rgb(var(--lsd-surface-primary));height:auto!important}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.blog-archive-page .main-wrapper main>section,.margin-top--none,.margin-vert--none,.tabItem_LNqP{margin-top:0!important}.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid #0000001a;border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit;color:rgb(var(--lsd-text-primary))}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);overflow:auto;padding:var(--ifm-pre-padding)}pre code{background-color:initial;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}.sub1,h1{font-size:var(--ifm-h1-font-size)}.sub2,h2{font-size:var(--ifm-h2-font-size)}.sub3,h3{font-size:var(--ifm-h3-font-size)}.sub4,h4{font-size:var(--ifm-h4-font-size)}.sub5,h5{font-size:var(--ifm-h5-font-size)}.sub6,h6,small{font-size:var(--ifm-h6-font-size)}.container_lyt7,.container_lyt7>svg,img{max-width:100%}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading));letter-spacing:-1.5px}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul,.tabList__CuJ{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary,.wordWrapButtonEnabled_EoeP .wordWrapButtonIcon_Bwma{color:var(--ifm-color-primary)}.text--secondary,[data-theme=dark] .root_JWD1>div>div{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.mdx-cta-section .mdx-cta-section--align-center *,.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.alert__heading,.mdx-hero-title--uppercase,.text--uppercase,table td strong,table th{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--truncate{overflow:hidden;text-overflow:ellipsis}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:#3578e526;--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:#ebedf026;--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:#00a40026;--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:#54c7ec26;--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:#ffba0026;--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:#fa383e26;--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.admonitionHeading_JPfy,.events .theme-doc-breadcrumbs .breadcrumbs__link{text-transform:capitalize}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);overflow:hidden;width:var(--ifm-avatar-photo-size)}.card--full-height,.navbar__logo img{height:100%}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:any-link:hover,.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;-webkit-user-select:none;user-select:none}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:#0000;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column;overflow:hidden}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer,.mdx-timeline-item__description{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.breadcrumbs__item,.close:hover,.table-of-contents__link--active code{opacity:.7}.close:focus,.theme-code-block-highlighted-line .codeLineNumber_Tfdd:before{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.admonitionIcon_BGV6,.root_JWD1>span svg{vertical-align:middle}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}#nprogress,.dropdown__menu,.navWrapper_ybYI,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color);text-decoration:none}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor #0000;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%);display:none}.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after,.menu__list-item-collapsible>a[aria-expanded=false]>svg{transform:rotate(90deg)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.docItemContainer_hrrU article>:first-child,.docItemContainer_hrrU header+*,.footer__item{margin-top:0}.admonitionContent_iozl>:last-child,.footer__items,.tabItem_Ymn6>:last-child{margin-bottom:0}.main-wrapper>main,.table-of-contents,[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.external-link,.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;top:0;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;left:0}.menu__link{color:var(--ifm-menu-color);flex:1;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color);text-decoration:none}.menu__caret:before,.menu__link--sublist-caret:after{content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:1.25rem}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.icon_S7Kx,.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.announcementBarContent_xLdY,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.blog-wrapper>.container>.row>aside>nav>ul li,.navbar__items--center .navbar__brand,a[class^=sidebarLogo_]{margin:0}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:#ffffff1a;--ifm-navbar-search-input-placeholder-color:#ffffff80;color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:#ffffff0d;--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{-webkit-appearance:none;appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:.9rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.cursor-pointer,.pills__item,.tabs__item{cursor:pointer}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);position:fixed;transform:translate3d(-100%,0,0);transition-property:opacity,visibility,transform;visibility:hidden;width:var(--ifm-navbar-sidebar-width)}.theme-admonition,table{overflow:auto}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:#0009;position:fixed;right:0;transition-property:opacity,visibility;visibility:hidden}.footer,.row{position:relative}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);position:relative;text-align:left;top:-.5rem}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination__link:hover{text-decoration:none}.pagination-nav{grid-gap:var(--ifm-spacing-horizontal);display:grid;gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.footer>div,.grid{grid-template-columns:repeat(24,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover);text-decoration:none}.blog-wrapper>.container>.row>aside>nav>div:first-child,.blog-wrapper>.container>.row>aside>nav>ul li a{border-left:1px solid #0000;font-size:var(--lsd-subtitle2-fontSize)!important;font-weight:var(--lsd-subtitle2-fontWeight)!important;line-height:var(--lsd-subtitle2-lineHeight)!important}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"« "}.pagination-nav__link--next .pagination-nav__label:after{content:" »"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.pills__item{border-radius:.5rem;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar__left-items>.navbar__item:first-of-type,.tabs,:not(.containsTaskList_mC6p>li)>.containsTaskList_mC6p{padding-left:0}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.mdx-cta-section .mdx-cta-section--align-left *,table th{text-align:left}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto}.tabs__item{border-bottom:3px solid #0000;border-radius:var(--ifm-global-radius);display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:#ffffff0d;--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:#ffffff1a;--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:#ffffff12;--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec}:root{--docusaurus-progress-bar-color:var(--ifm-color-primary);--content-padding:16px;--container-max-width:1440px;--pagination-nav-margin-top:96px;--ifm-navbar-link-color:rgb(var(--lsd-text-primary));--ifm-navbar-background-color:rgb(var(--lsd-surface-primary));--ifm-dropdown-link-color:rgb(var(--lsd-text-primary));--ifm-dropdown-hover-background-color:rgb(var(--lsd-surface-secondary));--ifm-background-color:rgb(var(--lsd-surface-primary));--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-primary:rgb(var(--lsd-theme-primary));--ifm-color-secondary:rgb(var(--lsd-theme-secondary));--prism-background-color:rgb(var(--lsd-theme-primary));--ifm-color-gray-0:rgb(var(--lsd-surface-primary));--ifm-color-gray-100:#f8f8fa;--ifm-color-gray-200:#f7f7f8;--ifm-color-gray-300:#eeeef0;--ifm-color-gray-400:#c0c0c2;--ifm-color-gray-500:#828285;--ifm-color-gray-600:#474747;--ifm-color-gray-700:#373738;--ifm-color-gray-800:#1a1a1a;--ifm-color-gray-900:#151515;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-font-color-base-inverse:var(--ifm-color-black);--docusaurus-highlighted-code-line-bg:#ffffff26;--ifm-card-background-color:var(--ifm-color-gray-100)!important;--ifm-alert-foreground-color:var(--ifm-color-gray-700);--ifm-button-background-color:rgb(var(--lsd-surface-primary));--ifm-global-border-width:1px;--ifm-global-radius:0.6rem;--ifm-hover-overlay:#0000000d;--ifm-font-family-base:var(--lsd-typography-generic-font-family);--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--lgs-font-family-secondary:Georgia,"Times New Roman",serif;--ifm-font-size-base:100%;--ifm-line-height-base:1.625;--ifm-font-size-secondary:100%;--ifm-line-height-secondary:1.5;--ifm-font-weight-light:400;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:400;--ifm-font-weight-bold:600;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-h1-font-size:var(--lsd-h1-fontSize);--ifm-h2-font-size:var(--lsd-h2-fontSize);--ifm-h3-font-size:var(--lsd-h3-fontSize);--ifm-h4-font-size:var(--lsd-h4-fontSize);--ifm-h5-font-size:var(--lsd-h5-fontSize);--ifm-h6-font-size:var(--lsd-h6-fontSize);--ifm-global-spacing:24px;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:0.75rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:24px;--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-code-background:rgb(var(--lsd-text-primary))!important;--ifm-pre-padding:1.125rem;--ifm-link-decoration:none;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-border-left-width:3px;--ifm-blockquote-shadow:none;--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-button-padding-vertical:0.4rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-border-radius:var(--ifm-global-radius);--ifm-card-horizontal-spacing:var(--ifm-spacing-horizontal);--ifm-card-vertical-spacing:var(--ifm-spacing-vertical);--ifm-footer-link-horizontal-spacing:0;--ifm-footer-padding-horizontal:var(--content-padding);--ifm-footer-padding-vertical:24px;--ifm-footer-background-color:#0000;--ifm-menu-link-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-color:rgb(var(--lsd-text-primary),0.6);--ifm-menu-color-background-active:#0000;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-height:64px;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-padding-horizontal:var(--content-padding);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)/3);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:100vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pills-spacing:0.125rem;--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem;--ifm-alert-background-color:#0000;--ifm-color-secondary-contrast-background:#0000;--ifm-color-success-contrast-background:#0000;--ifm-color-info-contrast-background:#0000;--ifm-color-warning-contrast-background:#0000;--ifm-color-danger-contrast-background:#0000;--ifm-alert-border-radius:none;--note:#d4d5d8;--tip:#6ace4b;--caution:#ddaa39;--danger:#e46967;--info:#68b1d0;--ifm-color-secondary-dark:var(--note);--ifm-color-secondary-light:var(--note);--ifm-color-success-dark:var(--tip);--ifm-color-success-light:var(--tip);--ifm-color-info-dark:var(--info);--ifm-color-info-light:var(--info);--ifm-color-warning-dark:var(--caution);--ifm-color-warning-light:var(--caution);--ifm-color-danger-dark:var(--danger);--ifm-color-danger-light:var(--danger);--ifm-footer-link-color:rgb(var(--lsd-text-primary));--ifm-color-content-secondary:rgb(var(--lsd-text-primary));--ifm-hero-background-color:#f8f8fa;--ifm-hero-text-color:var(--ifm-color-black);--desktop-footer-gap:200px;--mobile-footer-gap:144px;--doc-grid-gap:16px;--ifm-table-background:#0000!important;--ifm-table-stripe-background:#0000!important;--ifm-pre-border-radius:0!important;--ifm-code-font-size:100%!important;background-color:#0000!important;--doc-sidebar-width:16.66vw!important;--doc-sidebar-max-width:320px;--ifm-navbar-item-padding-vertical:8px;--ifm-navbar-item-padding-horizontal:12px;--docusaurus-announcement-bar-height:auto;--card-height:188px;--mobile-width:253px;--mobile-height:176px;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300);--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}body,html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;height:100%}main{min-height:calc(100vh - var(--ifm-navbar-height) - var(--content-padding))}svg *{fill:rgb(var(--lsd-text-primary))}.grid{display:grid;gap:16px}.table-of-contents__link--active,.table-of-contents__link:hover{color:rgb(var(--lsd-text-primary))!important}h1{font-size:var(--lsd-h1-fontSize);font-weight:var(--lsd-h1-fontWeight);line-height:var(--lsd-h1-lineHeight)}h1,h2,h3,h4{font-family:var(--lsd-typography-generic-font-family)}h2{font-size:var(--lsd-h2-fontSize);font-weight:var(--lsd-h2-fontWeight);line-height:var(--lsd-h2-lineHeight)}h3{font-size:var(--lsd-h3-fontSize);font-weight:var(--lsd-h3-fontWeight);line-height:var(--lsd-h3-lineHeight)}h4{font-size:var(--lsd-h4-fontSize);font-weight:var(--lsd-h4-fontWeight);line-height:var(--lsd-h4-lineHeight)}code{background:#ffffff26;border-radius:0;color:rgb(var(--lsd-text-primary));background:rgba(var(--lsd-theme-primary),.1)}pre code{font-family:var(--lsd-typography-generic-font-family)!important;font-size:var(--lsd-body1-fontSize)!important;font-weight:var(--lsd-body1-fontWeight)!important;line-height:var(--lsd-body1-lineHeight)!important}.theme-doc-footer-edit-meta-row div[class*=lastUpdated_] b,table td strong,table th{font-weight:400!important}.alert,.card,.theme-code-block{box-shadow:none!important}.menu__list-item-collapsible>a,.navbar{box-shadow:none}.sans{font-family:var(--lgs-font-family-secondary);line-height:var(--ifm-line-height-secondary)}.blog-wrapper--index [itemprop=blogPost] .markdown,.external-link,.footer__bottom,.footer__copyright,.menu__list-item .menu__link,.theme-doc-footer-edit-meta-row div[class*=lastUpdated_],table{font-size:var(--lsd-body2-fontSize)!important;font-weight:var(--lsd-body2-fontWeight)!important;line-height:var(--lsd-body2-lineHeight)!important;font-family:var(--lsd-typography-generic-font-family)!important}.markdown a,.markdown a:hover,article a,article a:hover{text-decoration:underline;text-decoration-color:inherit;text-decoration-color:rgba(var(--lsd-text-primary),.6);text-underline-offset:.3rem}.card{padding:var(--ifm-spacing-vertical) var(--ifm-spacing-horizontal);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.table-of-contents__left-border{border:none!important}.menu__link{align-items:center;display:flex;justify-content:space-between}.menu__link span{color:rgba(var(--lsd-text-primary),.6)}.theme-edit-this-page{align-items:center;display:flex;gap:12px}.menuExternalLink_NmtK,.navbar__inner,.navbar__item{align-items:center}.dropdown__link:hover{color:rgb(var(--lsd-text-secondary))}.blog-wrapper>.container>.row>aside>nav>ul li a:hover,.breadcrumbs__item--active,.footerLogoLink_BH7S:hover,.hash-link:focus,.theme-code-block:hover .buttonGroup_Qu4e button,:hover>.hash-link{opacity:1}.breadcrumbs__item:not(:last-child):after{background:none;content:"/";opacity:1}.breadcrumbs__link{background:#0000!important;padding:0}.navbar{height:var(--ifm-navbar-height)}.menu__link--active,.menu__list-item-collapsible--active>:not(a[href="#"]){box-shadow:inset 1px 0 0 rgb(var(--lsd-border-primary))}.navbar__logo,a[class^=sidebarLogo_] img{height:40px}.dropdown__link--active{color:rgb(var(--lsd-text-secondary))!important;background-color:#0000}.row{margin:0}.theme-doc-version-banner *,.theme-doc-version-banner:hover *{color:#fff;text-decoration-color:#fff!important}.blog-wrapper main>section article ul li .lsd-tag>span,.blog-wrapper main>section article ul li .lsd-tag>span>span,.menu__link--active span,.theme-doc-version-badge{color:rgb(var(--lsd-text-primary))}.navbar__left-items>a:not(:last-child){margin-right:1.25rem}.navbar__left-items>a:not(:last-child)[href^="/"]{margin-right:1.75rem}.menu__link--sublist-caret:after{background:none;content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTQgOS41My45NC45NEw4IDcuNDE3bDMuMDYgMy4wNTMuOTQtLjk0LTQtNC00IDRaIiBmaWxsPSIjZmZmIi8+PC9zdmc+);filter:unset;height:unset;min-width:unset;width:unset}.menu__list-item--collapsed>.menu__link--sublist-caret:after{transform:rotate(0)!important}.menu__link--active{border-radius:0}.dropdown__menu,.pagination-nav__link{border:1px solid rgb(var(--lsd-border-primary))}.table-of-contents a{padding-left:16px}.table-of-contents__link--active{border-left:1px solid rgb(var(--lsd-border-primary));padding-left:16px}.navbar__item{display:inline-flex;padding:0}.mdx-accordion-item,.navbar__link--active{border-bottom:1px solid rgb(var(--lsd-border-primary))}.dropdown__menu{background:rgb(var(--lsd-surface-primary));border-radius:0;margin-right:-1px;margin-top:6px;padding:0;transition-duration:0ms}.dropdown__link,.dropdown__link:hover{background-color:#0000}.dropdown__link{border-radius:0;margin:0;padding:5px 11px;text-decoration:none}.dropdown__link *{text-decoration:inherit!important}.content_knG7 a,.dropdown__link:hover,.footerLink_sh7M,.footer__item a{text-decoration:underline}.blog-wrapper .breadcrumbs__item,.blog-wrapper--index h2[itemprop=headline]>a,.events .breadcrumbs__item,.events .breadcrumbs__link{text-decoration:none}.margin-left-8,.mdx-jpd__external-link-icon{margin-left:8px}.pagination-nav{margin-top:var(--pagination-nav-margin-top)!important}.pagination-nav__link{align-items:center;border-radius:0;display:flex;gap:18px;padding:10px 14px}.theme-doc-version-badge,table td,table th,table thead>tr{border:1px solid rgb(var(--lsd-border-primary))}.pagination-nav__link--next{grid-column:2/3;text-align:right;justify-content:flex-end}.events .pagination-nav,.events aside,.footer__item a svg,.menu__caret,.pagination-nav__label:after,.pagination-nav__label:before,.theme-doc-footer-edit-meta-row div[class*=lastUpdated_] small{display:none}.theme-back-to-top-button{display:none!important}.footer__link-item,.tag_NdBD{display:inline-block}.lsd-collapse__content{padding:24px}.theme-doc-version-badge{background:#0000;margin-bottom:16px;padding:4px 8px}.navbar__right-items{align-items:center;display:flex}table{border-collapse:collapse;margin-bottom:var(--ifm-spacing-vertical);display:table;table-layout:fixed;width:100%}table td{color:var(--ifm-table-cell-color)}.theme-doc-footer{margin-bottom:96px}.theme-doc-footer-edit-meta-row div[class*=lastUpdated_]{font-style:normal;opacity:.7}.navbar-sidebar__item{padding-block:0;padding-inline:var(--content-padding)}.navbar-sidebar__back{align-items:center;display:flex;gap:16px;margin:24px 0!important;padding:0;width:100%!important}.theme-doc-sidebar-menu .menu__link{padding-left:var(--content-padding);padding-right:0}.menu__list-item-collapsible>a[aria-expanded=true]>svg{transform:rotate(180deg)}main[itemtype*=Blog]{margin-left:0}.mdx-ghc-subheader-text,main[itemtype*=Blog] .theme-doc-breadcrumbs{margin-bottom:40px}main[itemtype*=Blog] .blog-divider{background:rgb(var(--lsd-theme-primary));margin-block:40px}.events .theme-doc-markdown>h1{margin-bottom:16px!important}.events .theme-doc-breadcrumbs{display:block}.container{padding-inline:var(--content-padding)}.main-wrapper>.container{margin-bottom:80px!important;margin-top:0!important}.main-wrapper>main,.main-wrapper>main>.row,.main-wrapper>main>.row>.col{--ifm-spacing-horizontal:var(--content-padding);flex-basis:100%!important;flex:unset;margin:0;max-width:unset;width:100%!important}.footer{margin-bottom:18px;width:100%!important}.footer>div{display:grid;gap:1rem;margin:unset;max-width:unset;padding:16px 0}.footer__bottom{grid-column:1/12;grid-row:1/1;text-align:unset}#__docusaurus-base-url-issue-banner-container,.blog-archive-page .main-wrapper header .container p,.blog-wrapper main>section article ul li a:after,.blog-wrapper main>section article ul li a:before,.footer__bottom>div:first-of-type,.groups_p1lF .divider_eGUz:last-child,.hidden,.mdx-accordion-item>input,.modal_kLVz .closeButton_Rr0e,.theme-doc-toc-desktop,.themedImage_kfRS,.wrapper_SWrM .fullscreenButton_Bocn,[data-hidden-doc-sidebar=true] .theme-doc-sidebar-container,[data-theme=dark] .lightToggleIcon_K4TL,[data-theme=light] .darkToggleIcon_lKkA,html[data-announcement-bar-initially-dismissed=true] .announcementBar_mb4j{display:none}.footer__title{font-family:var(--lsd-typography-generic-font-family)!important;font-size:var(--lsd-label1-fontSize)!important;font-weight:var(--lsd-label1-fontWeight)!important;font-weight:var(--ifm-font-weight-normal);line-height:var(--lsd-label1-lineHeight)!important;margin-bottom:4px}.blog-wrapper main>section article ul li .lsd-tag>span,.blog-wrapper main>section article ul li .lsd-tag>span>span,.footer__item,.footer__item a{font-family:var(--lsd-typography-generic-font-family)!important;font-size:var(--lsd-label1-fontSize)!important;font-weight:var(--lsd-label1-fontWeight)!important;line-height:var(--lsd-label1-lineHeight)!important}.footer>div:first-child>.footer__links{display:grid;gap:12px;grid-column:13/25;grid-row:1/1;margin-bottom:0}.footer>div:nth-child(2)>.footer__links{display:grid;gap:2rem 1rem;grid-column:13/25;grid-row:1/1;grid-template-columns:repeat(2,1fr);margin-bottom:0}.footer__col{grid-template-columns:span 1}.blog-wrapper main>section article ul li a,.codeBlockStandalone_BRZX,.codeBlockStandalone_MEMb,.col.footer__col,.modal_kLVz>div>div:first-child,.noResults_mD2O,.root_N57j ul,.root_ONDG.empty_a7qb{padding:0}.footer__items{display:flex;flex-direction:row;flex-wrap:wrap;gap:.5rem}.footer__item{display:inline-flex}.footer__item:not(:last-child):after{content:"•";display:inline-block;margin-left:8px;text-decoration:none}.footer__logo{max-width:var(--ifm-footer-logo-max-width);margin:0!important}.navbar__inner{flex-direction:row}.hero--primary{--ifm-hero-background-color:rgb(var(--lsd-surface-primary));--ifm-hero-text-color:rgb(var(--lsd-text-primary))}.docusaurus-mermaid-container{margin-block:40px}.overflow-hidden{overflow:hidden}.hidden-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.hidden-scrollbar::-webkit-scrollbar{display:none;width:0}[class^=mdx-]{--lsd-h1-fontWeight:100;--lsd-h2-fontWeight:300;--lsd-h3-fontWeight:300;--lsd-h4-fontWeight:300;--lsd-h5-fontWeight:300;--lsd-h6-fontWeight:300;--lsd-subtitle1-fontWeight:300}.hidden,.mdx-hero-video .mdx-hero-video__placeholder{opacity:0;visibility:hidden}.blog-wrapper h1[itemprop=headline]{font-family:var(--lsd-typography-generic-font-family)!important;font-size:var(--lsd-h1-fontSize)!important;font-weight:var(--lsd-h1-fontWeight)!important;line-height:var(--lsd-h1-lineHeight)!important}.blog-wrapper>.container{display:flex;margin:0;max-width:unset;padding-inline:0;width:100%}.blog-wrapper>.container>.row,.mdx-roadmap,.mdx-scroll-buttons,.two-items{width:100%}.blog-wrapper main>header h1{font-family:var(--lsd-typography-generic-font-family)!important;font-size:var(--lsd-h3-fontSize)!important;font-weight:var(--lsd-h3-fontWeight)!important;line-height:var(--lsd-h3-lineHeight)!important;margin-bottom:.5rem}.blog-wrapper>.container>.row>aside{max-width:unset}.blog-wrapper>.container>.row>aside>nav{padding-top:16px;top:var(--ifm-navbar-height)}.blog-wrapper>.container>.row>aside>nav>div:first-child{font-family:var(--lsd-typography-generic-font-family)!important;margin-bottom:0!important;padding:4px 0 4px 15px}.blog-wrapper>.container>.row>aside>nav>ul li a{box-sizing:border-box;display:block;font-family:var(--lsd-typography-generic-font-family)!important;opacity:.6;padding:4px 0 4px 2rem}.blog-wrapper--index>.container>.row>aside>nav>div:first-child,.blog-wrapper>.container>.row>aside>nav>ul li a[class*=sidebarItemLinkActive_]{border-color:rgb(var(--lsd-border-primary))}.blog-wrapper main article,.mdx-asset-card:not(.mdx-asset-card--downloadable) .mdx-asset-card__inner,.mdx-erc--with-preview .mdx-erc__preview-image{border-bottom:1px solid rgb(var(--lsd-border-primary))}.blog-wrapper--index h2[itemprop=headline]{font-family:var(--lsd-typography-generic-font-family)!important;font-size:var(--lsd-h4-fontSize)!important;font-weight:var(--lsd-h4-fontWeight)!important;line-height:var(--lsd-h4-lineHeight)!important}.blog-wrapper>.container>.row>main{margin-top:16px;max-width:unset}.blog-archive-page .main-wrapper header .container h1,.blog-wrapper article header h2,.blog-wrapper main>section article h2{font-family:var(--lsd-typography-generic-font-family)!important;font-size:var(--lsd-h3-fontSize)!important;font-weight:var(--lsd-h3-fontWeight)!important;line-height:var(--lsd-h3-lineHeight)!important}.blog-wrapper article footer{align-items:center;display:flex;flex-direction:row;justify-content:space-between;margin-top:24px!important}.blog-wrapper main article{margin-bottom:34px!important;padding-bottom:34px}.blog-wrapper main article:last-of-type{border-bottom:none!important}.blog-archive-page .main-wrapper{padding:2rem var(--content-padding)}.blog-archive-page .main-wrapper header{border-bottom:1px solid var(--ifm-hero-text-color);margin:0;padding:0 0 1rem}.blog-archive-page .main-wrapper header .container{margin:0;padding:0!important}.blog-archive-page .main-wrapper main>section .container{margin:0;max-width:unset;padding:0}.blog-archive-page .main-wrapper main>section .container>.row{margin-top:64px}.blog-archive-page .main-wrapper main>section .container>.row>.col{margin:0!important;max-width:unset;padding:0}.blog-archive-page .main-wrapper main>section .container>.row>.col h3{font-family:var(--lsd-typography-generic-font-family)!important;font-size:var(--lsd-h5-fontSize)!important;font-weight:var(--lsd-h5-fontWeight)!important;line-height:var(--lsd-h5-lineHeight)!important}.blog-archive-page .main-wrapper main>section .container>.row>.col a{font-family:var(--lsd-typography-generic-font-family)!important;font-size:var(--lsd-body1-fontSize)!important;font-weight:var(--lsd-body1-fontWeight)!important;line-height:var(--lsd-body1-lineHeight)!important}.blog-archive-page .main-wrapper main>section .container>.row>.col ul{margin:1rem 0 0;padding:0 0 0 1.5rem}.blog-wrapper main>section article{border-bottom:none;padding:0}.blog-wrapper main>section article ul,.mdx-app-card__name{margin-top:1rem}.blog-wrapper main>section article ul li{margin:0 .5rem 0 0!important;padding:0!important}.blog-wrapper main>section article ul li .lsd-tag{height:28px;padding:3px 11px}.header-github-link:hover,.mdx-event-card__label,.mdx-event-info__label{opacity:.6}.header-github-link:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E") no-repeat;content:"";display:flex;height:24px;width:24px}html[data-theme=dark] .header-github-link:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23fff' d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E") no-repeat}.video-container{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:space-around}.yt-video{flex:1 1 auto;height:432px;max-width:100%}.nav_cMpg,.root_QACb{margin:0 auto;max-width:var(--container-max-width)}.case-study-container a{display:block;margin-bottom:20px;width:100%}.case-study-container a img,.externalLinkIcon_Qfue svg,.root_TTsz.fullWidth_HBtH{height:auto;width:100%}.errorBoundaryError_a6uf{color:red;white-space:pre-wrap}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}[data-theme=dark] .themedImage--dark_OvIx,[data-theme=light] .themedImage--light_BL8e,html:not([data-theme]) .themedImage--light_BL8e{display:initial}.icon_S7Kx.s_AZDZ svg{width:10px}.icon_S7Kx.m_thRi svg{width:20px}.icon_S7Kx.l_WHPt svg{width:40px}[data-theme=dark] .icon_S7Kx.fill_hNhN,[data-theme=dark] .icon_S7Kx.fill_hNhN *{fill:var(--ifm-color-white)}[data-theme=dark] .icon_S7Kx.stroke_N8dm svg,[data-theme=dark] .icon_S7Kx.stroke_N8dm svg *{stroke:var(--ifm-color-white)}[data-theme=light] .icon_S7Kx.fill_hNhN,[data-theme=light] .icon_S7Kx.fill_hNhN *{fill:var(--ifm-color-black)}[data-theme=light] .icon_S7Kx.stroke_N8dm svg,[data-theme=light] .icon_S7Kx.stroke_N8dm svg *{stroke:var(--ifm-color-black)}.backdrop_Ifvc{background:rgb(var(--lsd-surface-primary));z-index:201}.backdrop_Ifvc,.navWrapper_ybYI{height:100%;left:0;opacity:0;position:fixed;top:0;visibility:hidden;width:100%}.navWrapper_ybYI{background:#0000;z-index:203}.navWrapper_ybYI>*{pointer-events:auto}.nav_cMpg{align-items:center;background:rgb(var(--lsd-surface-primary));display:flex;flex-direction:row;height:var(--ifm-navbar-height);justify-content:space-between;padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.visible_ynAX{opacity:1!important;visibility:visible!important}.codeBlockContent_ugSV,.wrapper_SWrM{position:relative}.wrapper_SWrM:not(.active_qZD5) .fullscreenButton_Bocn{background:rgb(var(--lsd-surface-primary));bottom:8px;position:absolute;right:8px;transition:.3s}.root_QACb{padding:0;width:100%}.skipToContent_fXgn{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem;z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_fXgn:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_CVFx{line-height:0;padding:0}.content_knG7{font-size:85%;padding:5px 0;text-align:center}.content_knG7 a{color:inherit}.announcementBar_mb4j{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}.announcementBarPlaceholder_vyr4{flex:0 0 10px}.announcementBarClose_gvF7{align-self:stretch;flex:0 0 30px}.iconExternalLink_nPIU{margin-left:.3rem}.footerLogoLink_BH7S{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.copyButtonCopied_YovB .copyButtonIcon_ZL7v,.l-modal,.mdx-hero-video--loading .mdx-hero-video__video{opacity:0}.firstRow_ar1q{border-top:1px solid rgb(var(--lsd-text-primary));margin-bottom:96px!important}.mdx-cta-section,.secondRow__ww3{border-top:1px solid rgb(var(--lsd-border-primary))}.firstRow_ar1q,.secondRow__ww3{display:flex;flex-direction:row}.backToTop_wDfN{bottom:16px;left:16px;position:absolute}.l-modal,.l-modal__backdrop{position:fixed;top:0;left:0}.backToTop_wDfN,.footerLink_sh7M{width:-moz-fit-content;width:fit-content}.footerLink_sh7M{height:-moz-fit-content;height:fit-content}.toggle_K23S{border:1px solid rgb(var(--lsd-border-primary));height:32px;width:32px}.toggle_K23S svg{height:14px;width:14px}.toggleButton_dl49{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.dropdownNavbarItem_o23I,.l-modal__content,.mdx-asset-card{border:1px solid rgb(var(--lsd-border-primary))}.toggleButton_dl49:hover{background:var(--ifm-color-emphasis-200)}.toggleButtonDisabled_AAS_{cursor:not-allowed}.darkNavbarColorModeToggle_X3D1:hover{background:var(--ifm-color-gray-800)}.l-modal{height:100vh;transition:.3s;visibility:hidden;width:100%;z-index:9999}.l-modal__container{display:grid;gap:1rem;grid-template-columns:repeat(24,1fr);margin:0 auto;max-width:1376px;overflow:auto}.l-modal--open{opacity:1;visibility:visible}.l-modal__content{background:rgb(var(--lsd-surface-primary));grid-column:8/19;height:-moz-fit-content;height:fit-content;margin:64px 0;max-height:80vh;padding:7px;z-index:9998}.groups_p1lF,.root_ONDG{max-height:60vh;overflow-y:auto}.l-modal__backdrop{background-color:rgba(var(--lsd-surface-primary),.6);height:100%;width:100%;z-index:9997}.modal_kLVz .header_QwCa{align-items:center;display:flex;flex-direction:row;gap:.5rem}.root_EFVO{padding:32px;text-align:center}.root_ONDG{padding:24px}.title_uwS_{font-size:.75rem!important}.item_RHYF{align-items:center;display:flex;flex-direction:row;margin-top:1rem}.item_RHYF .itemTitle_jtAv{flex-grow:1;overflow:hidden;padding-left:1rem;text-overflow:ellipsis;white-space:nowrap}.linkContent__x3v,.root_JWD1{align-items:center;display:flex}.item_RHYF .itemTitle_jtAv mark,.root_JWD1 mark{background:none;color:inherit}.root_xZfc{padding:8px 8px 0;position:relative;width:100%}.collapse_LWBd button,.textField_af43{width:100%!important}.textField_af43 button svg{height:auto;max-height:100%!important;width:14px}.root_N57j>div:first-child{color:#828285;padding:0 24px}.root_N57j>div:first-child,.root_N57j>div:first-child *{font-size:.75rem}.root_N57j ul li{margin-top:1rem}.root_JWD1{padding:0 24px}.root_JWD1>div{margin-left:1rem}.mdx-cta-button:hover,.mdx-cta-button:hover *,.root_Ooa0{text-decoration:none!important}.root_Ooa0.level1_fpUf{display:block;padding-left:32px}.icon_sZn2{height:auto;width:16px}.icon_sZn2.fill_fkan,.icon_sZn2.fill_fkan *{fill:currentColor}.icon_sZn2.stroke_j3wH,.icon_sZn2.stroke_j3wH *{stroke:currentColor}[data-theme=light] .icon_sZn2{color:#000}[data-theme=dark] .icon_sZn2{color:#fff}.mdx-feature-list__title,.root_ltHz{padding:24px 0}.groups_p1lF{display:flex;flex-direction:column;gap:16px}[data-theme=dark] .divider_eGUz>div{opacity:.1}[data-theme=dark] .topBar_Dtew button{background-color:var(--ifm-button-color)}.linkContent__x3v{gap:6px;text-decoration:none}.linkContent__x3v:hover{text-decoration:underline;text-decoration-color:rgba(var(--lsd-text-primary),.6);text-underline-offset:.3rem}.externalLinkIcon_Qfue{width:8px}.dropdownNavbarItem_o23I{height:28px;padding:6px 12px}.navbarHideable_OoEf{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_zoxl{transform:translate3d(0,calc(-100% - 2px),0)}.rightSection_CLeF{align-items:center;display:flex;justify-content:flex-end;white-space:nowrap}.iconButtonGroup_ktNv button:not(:last-child){border-right:1px solid!important;margin-right:-1px!important}.mainWrapper_z2l0{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.mdx-accordion-item__header{align-items:center;display:flex;flex-direction:row;gap:0 16px;justify-content:space-between;min-height:88px;padding:16px 0}.mdx-accordion-item__header,.mdx-accordion-item__header *{cursor:pointer}.mdx-accordion-item__content-wrapper{height:auto;overflow:hidden}.mdx-accordion-item__content{height:0}.mdx-accordion-item--open .mdx-accordion-item__content{height:auto;padding-bottom:1.875rem;padding-top:6px}.mdx-app-card{align-items:flex-start;display:flex;flex-direction:column;padding:1.5rem 0}.mdx-app-card__logo{height:40px;width:auto}.mdx-app-card__description{margin-top:1.5rem}.mdx-app-card__link{margin-top:1.5rem;width:100%}.mdx-app-card__link button{padding:10px 16px;width:100%}.mdx-app-card__link button>span{align-items:center;display:block;display:flex;flex-direction:row;justify-content:space-between;width:100%}.root_TTsz{display:inline-block;font-size:0!important;position:relative}.root_TTsz.fullHeight_ls1u{height:100%;width:auto}.root_TTsz .content_feMR{height:100%;left:0;position:absolute;top:0;width:100%}.root_TTsz:not(.keep_Y9Ea) .root_TTsz{height:auto;width:auto}.root_TTsz:not(.keep_Y9Ea) .content_feMR{height:100%;left:unset;position:relative;top:unset;width:100%}.mdx-asset-card{align-items:flex-start;border-bottom:none;display:flex;flex-direction:column;min-height:144px;text-decoration:none!important;width:216px}.mdx-asset-card__inner{padding:16px 16px 32px;width:100%}.mdx-asset-card__title,.mdx-event-profile-list__container h2,.mdx-event-profile__role,.mdx-ghc__challenge-labels,.mdx-ghc__issue-title{margin-bottom:16px}.mdx-asset-card__image img{height:100%;object-fit:contain;object-position:center center;width:100%}.mdx-asset-card__downloadables{align-items:flex-start;display:flex;flex-direction:row;justify-content:stretch;width:100%}.mdx-asset-card__downloadables>*{flex-grow:1;font-size:12px;text-decoration:none!important;text-underline-offset:unset!important}.mdx-asset-card__downloadables>* button{justify-content:space-between;text-decoration:none;width:100%}.mdx-asset-card__downloadables>:first-child button{border-left:none}.mdx-asset-card__downloadables>:last-child button,.mdx-asset-card__downloadables>:not(:last-child) button{border-right:none}.mdx-box{padding-bottom:var(--mdx-box-bottom);padding-top:var(--mdx-box-top)}.mdx-cta-button,.mdx-section-header--with-description .mdx-section-header__extra{margin-top:2rem}.mdx-cta-button button,.mdx-cta-button button span{font-size:inherit;font-weight:inherit;line-height:inherit}.mdx-cta-button .lsd-button--large{padding:9px 39px}.mdx-cta-button .lsd-button--small{padding:5px 11px}.mdx-cta-section{display:grid;padding:24px 0 0}.mdx-cta-section .mdx-cta-section__link,.mdx-jpd__job-link{display:block;width:-moz-fit-content;width:fit-content}.mdx-cta-section .mdx-cta-section--align-center .mdx-cta-button{margin-inline:auto}.mdx-cta-section .mdx-cta-section--align-right *{text-align:right}.mdx-cta-section .mdx-cta-section--align-right .mdx-cta-button,.mdx-logo-carousel .mdx-section-header__extra{margin-left:auto}.mdx-cta-section--no-border{border-top:none!important}.mdx-cta-section--title-only .mdx-cta-section__title{font-family:var(--lsd-typography-generic-font-family);font-size:var(--lsd-h5-fontSize);font-weight:var(--lsd-h5-fontWeight);font-weight:300;line-height:var(--lsd-h5-lineHeight);max-width:886px}.mdx-cta-section--title-button .mdx-cta-section__title{font-family:var(--lsd-typography-generic-font-family);font-size:var(--lsd-display4-fontSize);font-weight:var(--lsd-display4-fontWeight);font-weight:300;line-height:var(--lsd-display4-lineHeight);max-width:886px}.mdx-cta-section--full-width .mdx-cta-section__container{display:grid;gap:0 1rem;grid-template-columns:repeat(2,1fr)}.mdx-cta-section--full-width .mdx-cta-section__title{font-family:var(--lsd-typography-generic-font-family);font-size:var(--lsd-h5-fontSize);font-weight:var(--lsd-h5-fontWeight);line-height:var(--lsd-h5-lineHeight)}.mdx-cta-section--full-width .mdx-cta-section__description,.mdx-ns__description{font-family:var(--lsd-typography-generic-font-family);font-size:var(--lsd-h3-fontSize);font-weight:var(--lsd-h3-fontWeight);line-height:var(--lsd-h3-lineHeight)}.mdx-cta-section--full-width .mdx-cta-section__link{grid-area:2/2/3/3}.mdx-cta-section--simple .mdx-cta-section__title{font-family:var(--lsd-typography-generic-font-family);font-size:var(--lsd-h5-fontSize);font-weight:var(--lsd-h5-fontWeight);line-height:var(--lsd-h5-lineHeight)}.mdx-cta-section--simple .mdx-cta-section__description{font-family:var(--lsd-typography-generic-font-family);font-size:var(--lsd-h2-fontSize);font-weight:var(--lsd-h2-fontWeight);line-height:var(--lsd-h2-lineHeight);margin-top:2rem}.mdx-cta-section--list{display:grid;gap:0 1rem;grid-template-columns:1fr 1fr}.mdx-cta-section--list .mdx-cta-section__container{grid-column:1/2}.mdx-cta-section--list .mdx-cta-section__title{font-family:var(--lsd-typography-generic-font-family);font-size:var(--lsd-h5-fontSize);font-weight:var(--lsd-h5-fontWeight);line-height:var(--lsd-h5-lineHeight)}.mdx-cta-section--list .mdx-cta-section__description{font-family:var(--lsd-typography-generic-font-family);font-size:var(--lsd-h1-fontSize);font-weight:var(--lsd-h1-fontWeight);line-height:var(--lsd-h1-lineHeight);margin-top:2rem}.mdx-cta-section--list .mdx-cta-section__list{display:flex;flex-direction:column;gap:1.5rem 0;grid-column:2/3}.mdx-erc--with-preview .mdx-erc__icon,.mdx-ns__inner .mdx-ns__toast .lsd-toast__close-button{display:none}.mdx-cta-section--list .mdx-cta-section__list>:not(:first-child),.mdx-feature-list__feature,.mdx-showcase-card{border-top:1px solid rgb(var(--lsd-border-primary))}.mdx-cta-section--list .mdx-cta-section__list>a{display:block;text-decoration:none}.mdx-erc,.mdx-ghc__issue-title-link,.mdx-ghc__view-on-github-link,.mdx-hero-action button:hover,.mdx-hero-action button:hover *,.mdx-hero-action:hover,.mdx-hero-action:hover *{text-decoration:none!important}.mdx-cta-section--list .mdx-cta-section__list .mdx-cta-section__list-item>.mdx-cta-section__item-title{background-color:rgb(var(--lsd-surface-secondary));border-radius:1rem;color:rgb(var(--lsd-text-secondary));display:inline-block;margin-top:1.5rem;padding:3px 11px}.mdx-cta-section--list .mdx-cta-section__list .mdx-cta-section__list-item>.mdx-cta-section__item-description{margin-top:1rem}.mdx-doc-metadata{display:flex;flex-direction:row;line-height:0;margin-bottom:2.5rem}.mdx-doc-metadata>span:not(:last-child):after{content:"•";display:inline-block;margin-inline:.75rem}.markdown h1+.mdx-doc-metadata,.markdown header+.mdx-doc-metadata{margin-top:calc(var(--ifm-h1-vertical-rhythm-bottom)*-1*var(--ifm-leading) + 1rem)}.mdx-erc{align-items:flex-start;border:1px solid rgb(var(--lsd-border-primary));display:flex;flex-direction:row;min-height:144px}.mdx-erc__icon{padding:16px 16px 16px 8px}.mdx-erc__inner{flex-grow:1;padding:16px}.mdx-erc:hover .mdx-erc__title{text-decoration:underline!important}.mdx-erc__logo,.mdx-erc__logo svg{height:32px!important;width:32px!important}.mdx-erc__title{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;margin-top:32px;max-height:calc(var(--lsd-body1-lineHeight)*2);overflow:hidden}.mdx-erc__description{margin-top:8px}.mdx-erc--with-preview{display:flex;flex-direction:column}.mdx-erc--with-preview .mdx-erc__preview-image{height:100%;object-fit:cover;width:100%}.mdx-erc--with-preview .mdx-erc__inner{display:grid;gap:0 16px;grid-template-columns:32px auto;grid-template-rows:auto auto;padding:16px}.mdx-erc--with-preview .mdx-erc__logo{align-self:center;grid-column:1;grid-row:1/span 2}.mdx-erc--with-preview .mdx-erc__title{-webkit-line-clamp:1;-webkit-box-orient:vertical;margin-top:0;max-height:calc(var(--lsd-body1-lineHeight)*1)}.mdx-erc--with-preview .mdx-erc__description{margin-top:4px}.mdx-feature-list{border-top:1px solid rgb(var(--lsd-surface-secondary));position:relative}.mdx-feature-list__feature-index{align-items:center;background:rgb(var(--lsd-surface-secondary));border-radius:100%;color:rgb(var(--lsd-text-secondary))!important;display:inline-flex;height:1.875rem;justify-content:center;padding:.5rem;width:1.875rem}.mdx-feature-list__list{display:grid;grid-template-columns:repeat(2,1fr)}.mdx-event-profile__info,.mdx-feature-list__feature-inner{display:flex;flex-direction:column}.mdx-feature-list__feature-title{margin-top:1rem}.mdx-feature-list__header{align-items:center;display:flex;flex-direction:row;gap:2rem}.mdx-feature-list--cta-bottom .mdx-feature-list__extra{margin-top:3.5rem;padding:0 1rem}.mdx-event-cta-section__container,.mdx-ghc__container{border-top:1px solid rgb(var(--lsd-border-primary));padding-top:24px}.mdx-ghc__issue-title-link:hover,.mdx-ghc__view-on-github-link:hover{text-decoration:underline!important}.mdx-ghc__header,.mdx-jpd__header{margin-bottom:40px;margin-top:16px}.mdx-ghc__challenge-label{border:1px solid rgb(var(--lsd-border-primary));border-radius:20px;margin-right:8px;padding:4px 8px}.mdx-ghc__view-on-github-link{display:block;margin-bottom:56px;margin-top:40px;width:-moz-fit-content;width:fit-content}.mdx-ghc__participant-photo{border:1px solid rgb(var(--lsd-border-secondary));border-radius:100%;margin-left:-4px;width:24px}.mdx-ghc__participant-photo-container{align-items:center;direction:rtl;display:flex;justify-content:flex-end;padding-left:4px}.mdx-ghc__comment-count{margin-left:4px}.mdx-ghc__issue-content-grid{align-items:center;display:grid;grid-template-columns:82px 135px 82px 1fr;margin-top:24px;row-gap:12px}.mdx-scroll-buttons>div{display:flex;flex-direction:row;justify-content:flex-end;width:100%}.mdx-hero{--hero-max-height:1080px;display:flex;flex-direction:column;height:calc(100vh - var(--ifm-navbar-height) - 8px);max-height:var(--hero-max-height);position:relative}.mdx-hero-action--large button{padding:10px 64px}.mdx-hero-actions{align-items:center;display:flex;flex-direction:row;gap:0 1rem;margin-top:2rem;position:relative;z-index:98}.mdx-hero-description{margin-top:18px;max-width:1260px;position:relative;text-shadow:1px 1px 6px rgba(var(--lsd-surface-primary),1);z-index:-2}.mdx-hero-info{border-bottom:1px solid rgb(var(--lsd-surface-secondary));display:flex;flex-direction:column;justify-content:end;padding:32px 0;transition:margin-bottom .05s ease-in-out}.mdx-profile-card,.mdx-profile-card__avatar{border:1px solid rgb(var(--lsd-border-primary))}.mdx-timeline-item,.mdx-timeline-item__border{border-bottom:1px solid rgb(var(--lsd-border-primary))}.mdx-hero-model{--mdx-hero-model-wrapper-scale:1;position:absolute;transform:translateX(calc(-50vw - var(--container-max-width)*-1/2 + var(--content-padding)*4*-1/2));width:100vw;z-index:0}.mdx-hero-model .mdx-hero-model--inner{left:0;position:relative;top:0;width:100%;z-index:0}.mdx-hero-model .mdx-hero-model--inner canvas{pointer-events:unset!important}.mdx-hero-model--top{top:300px}.mdx-hero-model--bottom{top:calc(var(--logos-hero-info-height) - 10px)}.mdx-hero-model--bottom .mdx-hero-model--shade{bottom:10vh;height:40vh}.mdx-hero-model--ascii{filter:grayscale(100%);opacity:.65}.mdx-hero-model--ascii table,.mdx-hero-model--ascii table *{border:none!important;color:rgb(var(--lsd-text-primary));font-family:monospace}.mdx-hero-model--shade{background:linear-gradient(0deg,rgb(var(--lsd-surface-primary)) 37%,rgb(var(--lsd-surface-primary)) 0,rgba(var(--lsd-surface-primary),0) 100%);bottom:0;height:30vh;left:0;position:absolute;width:100%}.mdx-hero-title{font-size:70px!important;line-height:100%!important}.mdx-hero-video{--hero-video-height:120%;--hero-video-min-height:100vh;--hero-video-offset-y:-150px;--hero-video-scale:1.70951586;--hero-video-height-mobile:120%;--hero-video-min-height-mobile:100vh;--hero-video-offset-y-mobile:-50px;--hero-video-scale-mobile:1.70951586;display:grid;flex-grow:1;grid-template-columns:1fr;grid-template-rows:1fr;pointer-events:none;position:relative}.mdx-hero-video>*{align-items:center;display:flex;flex-direction:column;grid-column:1/1;grid-row:1/1;height:var(--hero-video-height);justify-content:center;left:0;min-height:var(--hero-video-min-height);position:absolute;top:0;transform:translateY(var(--hero-video-offset-y));width:100%}.mdx-hero-video img{object-fit:contain}.mdx-hero-video img,.mdx-hero-video video{height:100%;max-width:calc(var(--container-max-width)*var(--hero-video-scale));object-position:top;transform-origin:top center;width:auto}.mdx-hero-video--loading .mdx-hero-video__placeholder{opacity:1;visibility:visible}.mdx-jpd__single-job-department-container{border-top:1px solid rgb(var(--lsd-border-primary));padding-top:8px}.mdx-jpd__department-title{font-size:12px!important;line-height:16px!important}.mdx-jpd__job-title-container{align-items:center;display:flex;padding-bottom:8px}.mdx-jpd__job-list{list-style-type:none;margin:0;padding:8px 0 24px}.mdx-jpd__job-list-item{padding:14px 0}.mdx-jpd__job-link,.mdx-jpd__job-link:hover{text-decoration:none!important}.mdx-event-card__title:hover,.mdx-jpd__job-link:hover .mdx-jpd__job-title,.mdx-social-card:hover{text-decoration:underline!important}.mdx-logo-carousel .mdx-section-header__title{flex-basis:100%}.mdx-logo-carousel .mdx-logo-carousel__inner{margin-top:100px}.mdx-logo-carousel .mdx-logo-carousel__item{flex-shrink:0}.mdx-logo-carousel .mdx-logo-carousel__logo{height:56px;width:auto}.mdx-ns__inner form{margin-top:40px;width:100%}.mdx-ns__inner .mdx-ns__inputs{align-items:center;display:flex;flex-direction:row;gap:16px;width:100%}.mdx-ns__inner .mdx-ns__inputs>*{flex-grow:1}.mdx-ns__inner .mdx-ns__submit-button{margin-top:40px}.mdx-ns__inner .mdx-ns__toast{margin-bottom:24px;margin-top:-16px;width:100%}.mdx-profile-card{align-items:flex-start;display:flex;flex-direction:column;height:var(--card-height);justify-content:space-between;padding:1rem}.mdx-profile-card__profile{display:flex;flex-direction:column;gap:20px}.mdx-profile-card__avatar{border-radius:50%}.mdx-profile-card__avatar,.mdx-profile-card__avatar svg,.mdx-social-card__logo,.mdx-social-card__logo svg{height:40px!important;width:40px!important}.mdx-profile-card__avatar svg rect{fill:unset!important}.mdx-profile-card__buttons{display:flex;flex-direction:row;gap:8px;width:100%}.mdx-profile-card__link{height:-moz-fit-content;height:fit-content;max-width:calc(50% - 4px);position:relative;text-decoration:none}.mdx-event-card,.mdx-event-profile,.mdx-social-card{text-decoration:none!important}.mdx-timeline-item{display:flex;flex:0 0 auto;flex-direction:column;gap:1rem;justify-content:space-between;min-height:306px;padding-bottom:23px;scroll-snap-align:start!important;width:236px}.mdx-timeline-item__header{align-items:flex-start;display:flex;flex-direction:column;gap:1rem}.mdx-timeline-item__period-container{position:relative;width:100%}.mdx-timeline-item__border{height:50%;left:0;position:absolute;top:0;width:calc(100% + 1rem);z-index:-1}.mdx-timeline-item--border-dashed .mdx-timeline-item__border{border-bottom-style:dashed}.mdx-timeline-item__period{border-radius:10rem;display:inline-block;padding:3px 12px}.docItemContainer_hrrU .tocMobile_imaF:not(:first-of-type),.docSidebarContainer_b6E3,.mdx-roadmap__timeline .mdx-grid-item:last-child .mdx-timeline-item__border,.mdx-timeline-item__item:last-child .mdx-timeline-item__border,.sidebarLogo_Ydl9{display:none}.mdx-timeline-item__period--filled{background-color:rgb(var(--lsd-surface-secondary));border:1px solid rgb(var(--lsd-border-secondary));color:rgb(var(--lsd-text-secondary))!important}.mdx-timeline-item__period--transparent{background-color:rgb(var(--lsd-surface-primary));border:1px solid rgb(var(--lsd-border-primary));color:rgb(var(--lsd-text-primary))!important}.mdx-roadmap__timeline{margin-top:6.25rem}.mdx-roadmap__timeline-item{height:100%}.scrollToBottom_NE5w{--offset-y:-2rem;background:rgb(var(--lsd-surface-primary))!important;opacity:1;position:absolute;top:min(100*var(--vh) - var(--ifm-navbar-height),var(--maxTop) - var(--ifm-navbar-height));transform:translateY(-2rem);transform:translateY(calc(-100% + var(--offset-y)));transition:.2s ease-in-out;z-index:100}.scrollToBottom_NE5w.hide_q_kn{opacity:0;transform:translateY(calc(-100% + var(--offset-y) - .625rem))}.mdx-section-header{border-top:1px solid rgb(var(--lsd-border-primary));display:flex;flex-direction:row;gap:1rem;padding-top:24px;width:100%}.mdx-section-header>*{flex-basis:50%}.mdx-section-header__title{display:flex;flex-direction:row;gap:2rem}.mdx-showcase-card__inner{display:flex;flex-direction:column;gap:1.5rem;padding-top:1.5rem}.mdx-showcase-card__logo{height:auto;width:58px}.mdx-showcase-card__index{align-items:center;background-color:rgb(var(--lsd-surface-secondary));border-radius:50%;color:rgb(var(--lsd-text-secondary))!important;display:flex;flex-direction:row;height:30px;justify-content:center;width:30px}.mdx-showcase-card__description{margin-top:-.125rem;padding-top:.5rem}.mdx-showcase-card--large .mdx-showcase-card__logo{width:58px}.mdx-showcase-card--small .mdx-showcase-card__logo{width:34px}.mdx-showcase-card--border-solid .mdx-showcase-card__description{border-top:1px solid rgb(var(--lsd-border-primary));padding-top:1rem}.mdx-social-card{align-items:flex-start;border:1px solid rgb(var(--lsd-border-primary));display:flex;flex-direction:column;justify-content:space-between;min-height:144px;padding:1rem}.mdx-event-banner__thumbnail,.mdx-event-card__thumbnail{aspect-ratio:5/1;border:1px solid rgba(var(--lsd-border-primary),.2)}.mdx-social-card__row{display:flex;justify-content:space-between;width:100%}.mdx-event-card{display:flex;flex-direction:column;gap:24px}.mdx-event-card__row,.mdx-event-profile__row{display:flex;gap:8px;justify-content:space-between;width:100%}.mdx-event-card__info{border-top:1px solid rgba(var(--lsd-border-primary),.2);display:flex;flex-direction:column;gap:16px;padding:16px 16px 16px 0;width:100%}.mdx-event-card__info *,.mdx-event-info__content{white-space:pre-wrap}.mdx-event-card-list__button{display:block;margin:0 auto}.mdx-event-banner__thumbnail{margin-bottom:32px}.mdx-event-info__container{align-self:stretch;background:rgba(var(--lsd-theme-primary),.05);border-top:1px solid rgba(var(--lsd-border-primary));display:flex;flex:1 0 0;flex-direction:column;gap:16px;height:100%;padding:16px}.mdx-event-about__container{display:grid;gap:16px;grid-template-columns:repeat(12,1fr)}.mdx-event-about__container h2{grid-column:1/2;margin-top:0!important}.mdx-event-about__container span{grid-column:5/13}.mdx-event-profile{display:flex;flex-direction:column;gap:16px}.mdx-event-profile__image{aspect-ratio:1/1}.mdx-event-profile__title{margin-bottom:8px}.mdx-event-profile__social{align-items:center;display:flex;gap:8px}.mdx-event-cta__container h2{margin-bottom:32px;margin-top:0!important}.mdx-event-cta__button{height:70px!important;width:100%!important}.mdx-event-cta__button>span{align-items:center;display:flex;height:100%;justify-content:space-between}.mdx-event-cta-section__container h2{margin-bottom:16px;margin-top:0!important}.mdx-event-cta-section__container h3{margin-top:24px!important}.mdx-event-cta-section__cta{height:40px!important;width:160px!important}.mdx-event-cta-section__description{margin-bottom:32px!important;white-space:pre-wrap}.mdx-event-cta-section__form{display:flex;flex-direction:column;gap:40px}.mdx-event-cta-section__input-fields{display:flex;gap:16px}.mdx-event-header__container{display:flex;flex-direction:column;gap:24px}.mdx-event-header__container h1{margin-bottom:0!important}.breadcrumbsContainer_RLvU{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:24px}.codeBlockContainer_Ckt0{background:var(--prism-background-color);border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw)}.codeBlockContainer_Ckt0,.codeBlockContainer_EB2s{color:var(--prism-color);margin-bottom:var(--ifm-leading)}.codeBlockContainer_EB2s{background:#0000;border-radius:0}.codeBlockContent_biex{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_Ktv7{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlock_TWhw,.codeBlock_bY9V{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockTitle_Ktv7+.codeBlockContent_biex .codeBlock_bY9V,.codeBlockTitle_sjMo+.codeBlockContent_ugSV .codeBlock_TWhw{border-top-left-radius:0;border-top-right-radius:0}.codeBlockLines_LDrR,.codeBlockLines_e6Vv{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.buttonGroup_Qu4e button,.buttonGroup__atx button{color:var(--prism-color);line-height:0;transition:opacity var(--ifm-transition-fast) ease-in-out}.codeBlockLinesWithNumbering_bsRF,.codeBlockLinesWithNumbering_o6Pm{display:table;padding:var(--ifm-pre-padding) 0}.buttonGroup_Qu4e,.buttonGroup__atx{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup__atx button{align-items:center;background:var(--prism-background-color);border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;opacity:0;padding:.4rem}.buttonGroup__atx button:focus-visible,.buttonGroup__atx button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup__atx button{opacity:.4}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_lJS_{counter-increment:a;display:table-row}.codeLineNumber_Tfdd{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:sticky;text-align:right;width:1%}.codeLineNumber_Tfdd:before{content:counter(a);opacity:.4}.codeLineContent_feaV{padding-right:var(--ifm-pre-padding)}.theme-code-block:hover .copyButtonCopied_YovB{opacity:1!important}.copyButtonIcons_an20{align-items:center;display:flex;justify-content:center;position:relative}.copyButtonIcon_ZL7v,.copyButtonSuccessIcon_P2h8{fill:currentColor;height:14px;opacity:inherit;transition:all var(--ifm-transition-fast) ease;width:14px}.copyButtonSuccessIcon_P2h8{color:#00d600;opacity:0}.copyButtonCopied_YovB .copyButtonSuccessIcon_P2h8{opacity:1;transition-delay:75ms}.wordWrapButtonIcon_Bwma{height:1.2rem;width:1.2rem}.codeBlockTitle_sjMo{background:var(--prism-background-color);border-bottom:1px solid var(--ifm-color-primary);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.buttonGroup_Qu4e button{align-items:center;background:var(--prism-background-color);border:1px solid rgb(var(--lsd-border-primary));display:flex;height:28px;justify-content:center;opacity:0;width:28px}.buttonGroup_Qu4e button:focus-visible,.buttonGroup_Qu4e button:hover{opacity:1!important}.anchorWithStickyNavbar_LWe7{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorWithHideOnScrollNavbar_WYt5{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);-webkit-user-select:none;user-select:none}.hash-link:before{content:"#"}.img_ev3q{height:auto}.admonition_ntHH{border:1px solid var(--ifm-alert-border-color);display:flex;gap:18px;margin-bottom:24px;padding:18px}.admonitionHeading_JPfy{font-size:1.25rem!important;font-weight:400;line-height:1.5rem!important;margin-bottom:.3rem}.admonitionHeading_JPfy code{text-transform:none}.admonitionIcon_BGV6{display:inline-block}.admonitionIcon_BGV6 svg{display:inline-block;height:16px;width:16px}.admonitionIcon_BGV6 svg *{stroke:none!important;fill:var(--ifm-alert-border-color)}.admonitionContent_iozl{display:block;margin-top:12px}.root_UH70,.tagWithCount_gIvh{align-items:center;display:flex}.tag_dtsN{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_dtsN:hover{--docusaurus-tag-list-border:var(--ifm-link-color);text-decoration:none}.tagRegular_SGIC{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_gIvh{border-left:0;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_gIvh:after,.tagWithCount_gIvh:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_gIvh:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_gIvh:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_gIvh span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.root_UH70{flex-direction:row}.tags_LT8x{display:inline;margin:0 0 0 1rem!important;padding:0!important}.tag_NdBD:not(:first-child){margin-left:.5rem}.tag_NdBD a{margin:0!important;padding:0!important}.lastUpdated_vwxv{font-size:smaller;font-style:italic;margin-top:.2rem}.tableOfContents_bqdL{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.tocCollapsibleButton_dxRj{align-items:center;border:1px solid rgb(var(--lsd-border-primary));display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButtonExpanded_TSyC:after,.tocCollapsibleExpanded_zTjk{transform:none}.tocCollapsible_ROek{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleContent_Qsjj>ul{border-left:none;border:1px solid rgb(var(--lsd-border-primary))!important;border-top:none!important;font-size:15px;padding:.2rem 0}.tocCollapsibleContent_Qsjj ul li{margin:.4rem .8rem}.tocCollapsibleContent_Qsjj a{display:block;-webkit-text-decoration:var(--ifm-link-text-decoration);text-decoration:var(--ifm-link-text-decoration)}.badge_AsjZ{background:#0000}.docItemGrid_SzoZ{display:grid;gap:16px;grid-template-columns:repeat(14,1fr)}.gap1_XuuQ{grid-column:span 1}.toc_pP_5{grid-column:span 4}.tocMobile_imaF{margin-bottom:2rem;margin-top:-.5rem}.tocMobile_imaF>div{display:block!important;margin:0}.docItemContainer_hrrU h1{margin-bottom:40px!important}.docItemContainer_hrrU h2,.docItemContainer_hrrU h3{margin-top:32px!important}.backToTopButton_sjWU{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.backToTopButton_sjWU:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_xfvO{opacity:1;transform:scale(1);visibility:visible}.docMainContainer_gTbr,.docPage__5DB{display:flex;width:100%}.docPage__5DB{flex:1 0}.docsWrapper_BCFX{display:flex;flex:1 0 auto}.root_jG9K{align-items:center;display:flex;flex-direction:column;padding:1rem!important;width:100%}.root_jG9K>div{max-width:796px!important;width:100%}.root_jG9K>div>div{align-items:flex-start;display:flex;flex-direction:column;gap:1rem;padding:0!important}.root_jG9K a{margin-top:2.5rem}@media (min-width:0px){.mdx-box{--mdx-box-top:var(--mdx-box-top-xs);--mdx-box-bottom:var(--mdx-box-bottom-xs)}}@media (min-width:576px){.mdx-box{--mdx-box-top:var(--mdx-box-top-sm);--mdx-box-bottom:var(--mdx-box-bottom-sm)}}@media (min-width:768px){.blog-archive-page .main-wrapper main>section .container>.row{display:grid;gap:64px 24px;grid-template-columns:repeat(24,1fr)}.blog-archive-page .main-wrapper main>section .container>.row>.col{grid-column:span 12;margin:0!important;max-width:unset;padding:0 8.3333333333% 0 0}.two-items{width:48%}.case-study-container a{display:inline-block;margin-bottom:20px;margin-right:2%;width:48%}.case-study-container a:nth-child(2n){margin-right:0}.mdx-box{--mdx-box-top:var(--mdx-box-top-md);--mdx-box-bottom:var(--mdx-box-bottom-md)}.mdx-scroll-buttons__button--with-label{gap:12px;min-width:83px;padding:5px 11px 5px 9px!important;width:auto!important}.mdx-scroll-buttons__button--with-label:first-of-type,.mdx-scroll-buttons__button--with-label:last-of-type{justify-content:flex-start}.mdx-scroll-buttons--spaced>div{gap:0 1rem;justify-content:space-between}.mdx-scroll-buttons--spaced>div>button:not(:last-child){border-right:1px solid rgb(var(--lsd-border-primary))!important}}@media (min-width:997px){.main-wrapper .container{padding-bottom:calc(var(--desktop-footer-gap) - var(--ifm-footer-padding-vertical))!important}.main-wrapper>div{display:grid;gap:1rem;grid-template-columns:repeat(16,42px)}.main-wrapper>div aside{border:none;grid-column:1/5;padding-left:var(--content-padding);width:auto}.main-wrapper>div main{grid-column:6/17;max-width:none}.navbar__inner{display:flex;flex-direction:row;justify-content:flex-start}.navbar__left{flex-basis:8.3333333333%;flex:0 1 auto}.navbar__left-items{flex:1 0;margin:auto}nav.menu{padding-top:16px}.navbar .lsd-icon-button--medium{height:28px!important;width:28px!important}.blog-wrapper>.container>.row{display:grid;gap:16px;grid-template-columns:repeat(24,1fr)}.blog-wrapper>.container>.row>aside{grid-column:1/5}.blog-wrapper>.container>.row>main{grid-column:6/20}.blog-wrapper:not(.blog-wrapper--index)>.container>.row>div:last-child{grid-column:21/25;max-width:unset}.wrapper_SWrM:not(.active_qZD5) .fullscreenButton_Bocn{background:rgb(var(--lsd-surface-primary));bottom:8px;display:flex;opacity:0;position:absolute;right:8px;transition:.3s;visibility:hidden}.wrapper_SWrM:not(.active_qZD5):hover .fullscreenButton_Bocn{opacity:1;visibility:visible}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_gvF7,.announcementBarPlaceholder_vyr4{flex-basis:50px}.searchBox_ZlJk{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.mdx-box{--mdx-box-top:var(--mdx-box-top-lg);--mdx-box-bottom:var(--mdx-box-bottom-lg)}.mdx-feature-list--bottom-aligned .mdx-feature-list__feature{min-height:332px}.mdx-feature-list--bottom-aligned .mdx-feature-list__feature-description{display:flex;flex:1 0;flex-direction:column;justify-content:flex-end}.mdx-feature-list--top-aligned .mdx-feature-list__feature-description{margin-top:136px}.mdx-feature-list__feature{padding:1rem;position:relative}.mdx-feature-list__feature-inner{height:100%;padding:.5rem}.mdx-feature-list__feature-border{background:rgb(var(--lsd-border-primary));height:calc(100% - 2rem);position:absolute;right:0;top:1rem;width:1px}.mdx-feature-list__feature:nth-child(odd){padding-left:0}.mdx-feature-list__feature:nth-child(2n){padding-right:0}.mdx-feature-list__feature:nth-child(2n) .mdx-feature-list__feature-border,.tocMobile_ITEo{display:none}.lastUpdated_vwxv{text-align:right}.docItemGrid_SzoZ{display:grid;gap:var(--doc-grid-gap);grid-template-columns:repeat(11,1fr)}.docItemCol_F52z{grid-column:span 11}.menuHtmlItem_M9Kj{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_NjKY{flex-grow:1;padding-top:16px}@supports (scrollbar-gutter:stable){.menu_NjKY{scrollbar-gutter:stable}}.menuWithAnnouncementBar_U5pk{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_UEyd{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height)}.sidebarWithHideableNavbar__00c{padding-top:0!important}.sidebarHidden_F1ZE{opacity:0;visibility:hidden}.sidebarLogo_Ydl9{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);text-decoration:none!important}.sidebarLogo_Ydl9 img{height:2rem;margin-right:.5rem}.expandButton_m80_{align-items:center;background-color:var(--docusaurus-collapse-button-bg);display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}.expandButton_m80_:focus,.expandButton_m80_:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.expandButtonIcon_BlDH{transform:rotate(0)}[dir=rtl] .expandButtonIcon_BlDH{transform:rotate(180deg)}.docSidebarContainer_b6E3{border-right:1px solid var(--ifm-toc-border-color);-webkit-clip-path:inset(0);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_b3ry{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_Xe31{height:100%;max-height:100vh;position:sticky;top:0}.docMainContainer_gTbr{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_Uz_u{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_czyv{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}}@media (min-width:997px)and (max-width:1199px){.events .main-wrapper>div aside{grid-column:1/1}.events .main-wrapper>div main{grid-column:1/17}}@media (min-width:1200px){.main-wrapper>div,.navbar__inner{display:grid;grid-template-columns:repeat(24,1fr);grid-template-columns:repeat(24,1fr)}.main-wrapper>div{gap:1rem}.main-wrapper>div aside{border:none;grid-column:1/5;width:auto}.main-wrapper>div main{grid-column:6/25;max-width:none}.theme-doc-toc-desktop{top:calc(var(--ifm-navbar-height))!important}.navbar__inner{gap:16px;padding:0}.navbar__left{align-items:center;display:flex;flex-direction:row;grid-column:1/6}.navbar__left-items{grid-column:6/20}.navbar__right-items{flex-direction:row;gap:16px;grid-column:20/25;justify-content:flex-end}.blog-archive-page .main-wrapper main>section .container>.row{display:grid;gap:64px 24px;grid-template-columns:repeat(24,1fr)}.blog-archive-page .main-wrapper main>section .container>.row>.col{grid-column:span 8;margin:0!important;max-width:unset;padding:0 12.5% 0 0}.mdx-box{--mdx-box-top:var(--mdx-box-top-xl);--mdx-box-bottom:var(--mdx-box-bottom-xl)}.docItemGrid_SzoZ{display:grid;gap:var(--doc-grid-gap);grid-template-columns:repeat(19,1fr)}.docItemCol_F52z{grid-column:span 14}.tocMobile_imaF{display:none}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:1440px)and (min-width:992px){.mdx-hero-model{transform:translateX(calc((var(--content-padding) + 0)*-3));width:calc(100vw + var(--content-padding))}}@media (max-width:1199px){:root{--container-max-width:912px}.main-wrapper main>.container{padding-bottom:calc(var(--desktop-footer-gap) - var(--ifm-footer-padding-vertical) - var(--doc-grid-gap))!important}.header-github-link:before{margin-right:16px}.toc_pP_5{display:none}}@media (max-width:997px);@media (max-width:996px){.navbar-sidebar__close,.navbar__toggle{border:1px solid rgb(var(--lsd-border-primary))}.mdx-cta-section__title,.mdx-section-header__title,.navbar-sidebar:not(.navbar-sidebar--show-secondary) .menu__link>div{font-size:var(--lsd-subtitle2-fontSize)!important;font-weight:var(--lsd-subtitle2-fontWeight)!important;line-height:var(--lsd-subtitle2-lineHeight)!important}.blog-wrapper h1[itemprop=headline],.mdx-cta-button .lsd-button--large,.mdx-cta-section__description,.mdx-cta-section__title,.mdx-hero-description,.mdx-section-header__description,.mdx-section-header__title,.navbar-sidebar:not(.navbar-sidebar--show-secondary) .menu__link>div{font-family:var(--lsd-typography-generic-font-family)!important}.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0;padding-bottom:0!important;--ifm-footer-padding-horizontal:var(--content-padding)}.desktop,.footer__link-separator,.navbar__item,.navbar__left-items{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item,.main-wrapper>div,.mdx-cta-section--full-width .mdx-cta-section__container,.mdx-cta-section--list,.tocMobile_imaF{display:block}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid,.root_xZfc{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.mdx-section-header,.pills--block,.tabs--block{flex-direction:column}:root{--ifm-background-color:rgb(var(--lsd-surface-primary))}.navbar__color-mode-toggle{display:none!important}.main-wrapper main>.container{padding-bottom:calc(var(--mobile-footer-gap) - var(--ifm-footer-padding-vertical) - var(--doc-grid-gap))!important}.grid{grid-template-columns:repeat(2,1fr)}.footer-grid,.l-modal__container,.mdx-feature-list__list,.mdx-profile-card{grid-template-columns:1fr}.navbar{display:flex;height:56px}.navbar__toggle{align-items:center;box-sizing:border-box;display:flex;height:32px;justify-content:center;margin:0;width:32px}.navbar__toggle svg{height:14px;width:14px}.theme-admonition{display:block!important}.navbar-sidebar:not(.navbar-sidebar--show-secondary) .menu{padding-inline:0}.navbar-sidebar:not(.navbar-sidebar--show-secondary) .menu__list{display:flex;flex-direction:column;gap:8px;padding:var(--content-padding)}.navbar-sidebar:not(.navbar-sidebar--show-secondary) .menu__link{border-left:none;padding-left:0}.navbar-sidebar:not(.navbar-sidebar--show-secondary) .menu__link>div{text-decoration:none}.navbar-sidebar:not(.navbar-sidebar--show-secondary) .footer{margin-top:3rem;padding:0!important}.navbar-sidebar:not(.navbar-sidebar--show-secondary) .footer>div{display:flex!important;flex-direction:column!important;gap:32px!important}.colorModeToggle_GSaI,.dropdownNavbarItem_o23I,.l-modal__backdrop,.navbar-sidebar:not(.navbar-sidebar--show-secondary) .footer>button,.tableOfContents_bqdL{display:none}.navbar-sidebar:not(.navbar-sidebar--show-secondary) .footer .container.container-fluid{margin-bottom:16px!important;padding-inline:var(--content-padding)}.navbar-sidebar:not(.navbar-sidebar--show-secondary) .footer .container.container-fluid>.footer__links{gap:0!important}.navbar-sidebar:not(.navbar-sidebar--show-secondary) .footer>div[class*=secondRow]{margin:var(--content-padding)}.navbar-sidebar:not(.navbar-sidebar--show-secondary) .footer .footer__links{gap:16px!important}.navbar-sidebar__brand{height:60px;padding-block:0}.navbar-sidebar__brand>button{height:32px;width:32px}.navbar-sidebar__brand>button:first-of-type{margin-left:auto;margin-right:0!important}.navbar-sidebar__brand>button:not(:last-of-type){border-right:none}.navbar-sidebar__close{align-items:center;display:flex;justify-content:center;margin-left:unset}.blog-divider{margin-block:32px!important}.blog-wrapper main{padding-inline:var(--content-padding)}.blog-wrapper article footer{align-items:flex-start;flex-direction:column}.blog-wrapper article footer .read-more-link{margin-top:24px}.blog-wrapper article footer .read-more-link,.blog-wrapper article footer .read-more-link button{flex-basis:100%;width:100%}.blog-wrapper h1[itemprop=headline]{font-size:var(--lsd-h2-fontSize)!important;font-weight:var(--lsd-h2-fontWeight)!important;line-height:var(--lsd-h2-lineHeight)!important}.wrapper_SWrM>div{overflow:visible!important}.nav_cMpg{height:56px}.backToTop_wDfN{bottom:16px;left:16px;margin-top:76px!important;position:relative}.l-modal{overflow:hidden;width:100vw}.l-modal__container{display:grid;height:100vh;max-width:unset;min-height:-webkit-fill-available;width:100%}.docItemGrid_SzoZ,.mdx-showcase{grid-template-columns:repeat(2,1fr)}.root_ONDG,.root_ltHz{height:100%;overflow:auto}.l-modal__content{border:none;grid-column:1/2;grid-row:1/2;height:100%;margin:0;max-height:100vh;overflow:hidden}.modal_kLVz .header_QwCa{padding:12px 16px}.modal_kLVz .closeButton_Rr0e{display:block;height:2rem;width:2rem}.root_EFVO{padding:40px 24px}.root_ONDG{max-height:100%;padding:24px 24px 64px}.groups_p1lF{max-height:unset;overflow:auto}.root_ltHz{padding:24px 0 64px}.searchBox_ZlJk{position:absolute;right:var(--ifm-navbar-padding-horizontal)}.mdx-cta-button .lsd-button--large{font-size:var(--lsd-label2-fontSize)!important;font-weight:var(--lsd-label2-fontWeight)!important;line-height:var(--lsd-label2-lineHeight)!important;padding:5px 11px}.mdx-cta-section{padding:16px 0 0}.mdx-cta-section--title-button .mdx-cta-section__title{font-family:var(--lsd-typography-generic-font-family);font-size:var(--lsd-h4-fontSize);font-weight:var(--lsd-h4-fontWeight);line-height:var(--lsd-h4-lineHeight)}.mdx-feature-list .mdx-feature-list__title,.mdx-feature-list__feature .mdx-feature-list__feature-index{font-size:var(--lsd-subtitle2-fontSize);font-weight:var(--lsd-subtitle2-fontWeight);line-height:var(--lsd-subtitle2-lineHeight);font-family:var(--lsd-typography-generic-font-family)}.mdx-cta-section--full-width .mdx-cta-section__description,.mdx-cta-section--simple .mdx-cta-section__description{margin-top:1.5rem}.mdx-cta-section--list .mdx-cta-section__list,.mdx-roadmap__timeline{margin-top:4rem}.mdx-cta-section--list .mdx-cta-section__list>*{border-top:1px solid rgb(var(--lsd-border-primary))}.mdx-cta-section--list .mdx-cta-section__list .mdx-cta-section__list-item>.mdx-cta-section__item-title{font-size:.875rem!important;line-height:1.25rem!important}.mdx-cta-section--list .mdx-cta-section__list .mdx-cta-section__list-item>.mdx-cta-section__item-description{font-family:var(--lsd-typography-generic-font-family)!important;font-size:var(--lsd-h4-fontSize)!important;font-weight:var(--lsd-h4-fontWeight)!important;line-height:var(--lsd-h4-lineHeight)!important}.mdx-cta-section__description{font-size:var(--lsd-h4-fontSize)!important;font-weight:var(--lsd-h4-fontWeight)!important;line-height:var(--lsd-h4-lineHeight)!important}.mdx-feature-list .mdx-feature-list__title{padding:1rem 0}.mdx-feature-list--cta-bottom .mdx-feature-list__extra{margin-top:2rem;padding:0}.mdx-feature-list__feature{border:none;border-top:1px solid rgb(var(--lsd-border-primary));padding:1.5rem 0}.mdx-feature-list__feature .mdx-feature-list__feature-index{height:1.625rem;width:1.625rem}.mdx-feature-list__feature .mdx-feature-list__feature-title{font-family:var(--lsd-typography-generic-font-family);font-size:var(--lsd-h4-fontSize);font-weight:var(--lsd-h4-fontWeight);line-height:var(--lsd-h4-lineHeight);margin-top:1rem}.mdx-feature-list__feature .mdx-feature-list__feature-description{font-family:var(--lsd-typography-generic-font-family);font-size:var(--lsd-body1-fontSize);font-weight:var(--lsd-body1-fontWeight);line-height:var(--lsd-body1-lineHeight);margin-top:3rem}.mdx-feature-list__feature:nth-child(odd) .mdx-feature-list__feature-inner{border:none}.mdx-hero-action{text-decoration:none!important}.mdx-hero-action button{padding:6px 12px!important}.mdx-hero-actions{align-items:center;display:flex;flex-direction:row;justify-content:stretch;margin-top:1.5rem;width:100%;z-index:0}.mdx-hero-actions>*{flex-basis:50%}.mdx-hero-actions>a,.mdx-hero-actions>a>button{display:block;width:100%}.mdx-hero-description{font-size:var(--lsd-subtitle1-fontSize)!important;font-weight:var(--lsd-subtitle1-fontWeight)!important;line-height:var(--lsd-subtitle1-lineHeight)!important;margin-top:12px}.mdx-hero-info{padding:24px 0}.mdx-hero-model--top{top:calc(var(--logos-hero-info-height)/ 1 - 10px)}.mdx-hero-model{transform:translate(-12px);width:calc(100vw - 20px)}.mdx-hero-model--shade{bottom:0;height:90vh!important}.mdx-hero-title{font-size:28px!important}.mdx-hero-video>*{height:var(--hero-video-height-mobile);min-height:var(--hero-video-min-height-mobile);transform:translateY(var(--hero-video-offset-y-mobile))}.mdx-hero-video img,.mdx-hero-video video{max-width:calc((100vw - 32px)*var(--hero-video-scale-mobile))}.mdx-logo-carousel .mdx-logo-carousel__inner{margin-top:64px}.mdx-timeline-item{width:204px}.scrollToBottom_NE5w{--offset-y:-1rem}.mdx-section-header__description{font-size:var(--lsd-h4-fontSize)!important;font-weight:var(--lsd-h4-fontWeight)!important;line-height:var(--lsd-h4-lineHeight)!important}.mdx-showcase{gap:1.5rem 1rem}.mdx-showcase-card__name{font-size:1.375rem!important;line-height:1.75rem!important}.mdx-showcase-card__description{margin-top:1rem}.mdx-showcase-card__logo{height:auto;width:34px}.docItemContainer_F8PC{padding:0 .3rem}.docItemGrid_SzoZ{display:grid;padding-left:0}.docItemCol_F52z{grid-column:span 2}}@media (max-width:767px){.blog-archive-page .main-wrapper main>section .container>.row{margin-top:0}.blog-archive-page .main-wrapper main>section .container>.row .col{margin-top:40px!important}.mdx-scroll-buttons>div{justify-content:flex-end}.mdx-scroll-buttons>div>button:not(:last-child){border-right:none!important}.mdx-scroll-buttons .mdx-scroll-buttons__label{display:none}.mdx-ns__description{font-family:var(--lsd-typography-generic-font-family);font-size:var(--lsd-h4-fontSize);font-weight:var(--lsd-h4-fontWeight);line-height:var(--lsd-h4-lineHeight)}.mdx-ns__inner form{margin-top:40px}.mdx-ns__inner .mdx-ns__inputs{flex-direction:column;gap:24px}.mdx-ns__inner .mdx-ns__inputs>*{width:100%}.mdx-ns__inner .mdx-ns__submit-button{margin-top:24px}.mdx-profile-card{flex:0 0 var(--mobile-width);height:var(--mobile-height);scroll-snap-align:start!important;width:var(--mobile-width)}.mdx-profile-card__profile{gap:16px}.mdx-profile-card__name{font-family:var(--lsd-typography-generic-font-family)!important;font-size:var(--lsd-h5-fontSize)!important;font-weight:var(--lsd-h5-fontWeight)!important;line-height:var(--lsd-h5-lineHeight)!important}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}}@media (max-width:575px){.footer__links,.mdx-event-profile-list__container .mdx-grid>.mdx-grid__content{gap:24px!important}:root{--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-button-size-multiplier:1.25;--ifm-button-padding-horizontal:calc(var(--ifm-button-size-multiplier)*var(--ifm-spacing-horizontal));--ifm-button-padding-vertical:calc(var(--ifm-button-size-multiplier)*var(--ifm-spacing-vertical));--ifm-alert-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-alert-padding-vertical:calc(var(--ifm-spacing-vertical)*2)}.markdown>h2{--ifm-h2-font-size:1.75rem}.markdown h4{--ifm-h4-font-size:1.25rem!important}.footer>div{display:flex!important;flex-direction:column;gap:72px!important}.footer__links{display:flex!important;flex-direction:column!important}.col.footer__col{margin-bottom:0!important}.navbar__left{display:flex}.events-cta-sections .mdx-grid__content{gap:64px!important}.footer{--ifm-footer-padding-horizontal:0}.firstRow_ar1q{padding-inline:var(--content-padding)!important}.secondRow__ww3{margin-inline:var(--content-padding)!important}.mdx-event-card-list__container{margin-bottom:48px}.mdx-event-about__container,.mdx-event-cta-section__input-fields{display:flex;flex-direction:column;gap:32px}.mdx-event-about__container span,.mdx-event-header__container p{font-size:14px!important;line-height:20px!important}.mdx-event-cta-section__input-fields>div{width:100%!important}.mdx-event-cta-section__container .mdx-event-cta-section__input-fields{margin-bottom:16px}.mdx-event-cta-section__container .mdx-event-cta-section__cta{margin-top:8px}.mdx-event-cta-section__container .mdx-event-cta-section__form{margin-bottom:-24px}.mdx-event-header__container h1{font-size:24px!important;line-height:32px!important}}@media (max-width:574px){.mdx-ghc__issue-content-grid{grid-template-columns:82px 1fr}}@media (hover:hover){.backToTopButton_sjWU:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}}@media print{.announcementBar_mb4j,.footer,.menu,.navbar,.pagination-nav,.table-of-contents,.tocMobile_ITEo{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_LDrR,.codeBlockLines_e6Vv{white-space:pre-wrap}} \ No newline at end of file diff --git a/assets/files/Waku-NodeOperator-7fabb782473f2619b0b05dc209f12f53.pdf b/assets/files/Waku-NodeOperator-7fabb782473f2619b0b05dc209f12f53.pdf new file mode 100644 index 0000000000000000000000000000000000000000..040b8c61b39a8b9a875a05746a9086bfba553b2b GIT binary patch literal 98836 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

o511H=KEfSE0K#b(p1(@Te>p&) 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
\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(/{window[F]=!1}),[]),r.createElement(r.Fragment,null,!l.default.canUseDOM&&r.createElement(h.Z,null,r.createElement("script",null,B(e))),r.createElement("div",{id:R}))}function $(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,m.default)(),{pathname:n}=(0,c.TH)();return t&&n===e?r.createElement(z,null):null}function U(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:a,localeConfigs:o}}=(0,m.default)(),i=(0,g.default)(e),{htmlLang:l,direction:s}=o[a];return r.createElement(h.Z,null,r.createElement("html",{lang:l,dir:s}),r.createElement("title",null,t),r.createElement("meta",{property:"og:title",content:t}),r.createElement("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&r.createElement("meta",{name:"robots",content:"noindex, nofollow"}),e&&r.createElement("link",{rel:"icon",href:i}))}var H=n(44763);function V(){const e=(0,d.H)(u.Z),t=(0,c.TH)();return r.createElement(H.default,null,r.createElement(D.M,null,r.createElement(O.t,null,r.createElement(f.Z,null,r.createElement(U,null),r.createElement(S,null),r.createElement($,null),r.createElement(L,{location:T(t)},e)))))}var q=n(16887);const W=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const 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 G=n(99670);const Z=new Set,Q=new Set,Y=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,X={prefetch(e){if(!(e=>!Y()&&!Q.has(e)&&!Z.has(e))(e))return!1;Z.add(e);const t=(0,d.f)(u.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(q).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,G.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?W(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!Y()&&!Q.has(e))(e)&&(Q.add(e),I(e))},K=Object.freeze(X);if(l.default.canUseDOM){window.docusaurus=K;const e=a.hydrate;I(window.location.pathname).then((()=>{e(r.createElement(i.B6,null,r.createElement(o.VK,null,r.createElement(V,null))),document.getElementById("__docusaurus"))}))}},58940:(e,t,n)=>{"use strict";n.d(t,{_:()=>c,M:()=>d});var r=n(67294),a=n(36809);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/","versions":[{"name":"current","label":"Next","isLast":true,"path":"/","mainDocId":"guides/getting-started","docs":[{"id":"guides/getting-started","path":"/","sidebar":"guides"},{"id":"guides/js-waku/configure-discovery","path":"/guides/js-waku/configure-discovery","sidebar":"guides"},{"id":"guides/js-waku/debug-waku-dapp","path":"/guides/js-waku/debug-waku-dapp","sidebar":"guides"},{"id":"guides/js-waku/faq","path":"/guides/js-waku/faq","sidebar":"guides"},{"id":"guides/js-waku/index","path":"/guides/js-waku/","sidebar":"guides"},{"id":"guides/js-waku/light-send-receive","path":"/guides/js-waku/light-send-receive","sidebar":"guides"},{"id":"guides/js-waku/manage-filter","path":"/guides/js-waku/manage-filter","sidebar":"guides"},{"id":"guides/js-waku/message-encryption","path":"/guides/js-waku/message-encryption","sidebar":"guides"},{"id":"guides/js-waku/run-waku-nodejs","path":"/guides/js-waku/run-waku-nodejs","sidebar":"guides"},{"id":"guides/js-waku/store-retrieve-messages","path":"/guides/js-waku/store-retrieve-messages","sidebar":"guides"},{"id":"guides/js-waku/use-waku-create-app","path":"/guides/js-waku/use-waku-create-app","sidebar":"guides"},{"id":"guides/js-waku/use-waku-react","path":"/guides/js-waku/use-waku-react","sidebar":"guides"},{"id":"guides/nwaku/build-source","path":"/guides/nwaku/build-source","sidebar":"guides"},{"id":"guides/nwaku/config-methods","path":"/guides/nwaku/config-methods","sidebar":"guides"},{"id":"guides/nwaku/config-options","path":"/guides/nwaku/config-options","sidebar":"guides"},{"id":"guides/nwaku/configure-discovery","path":"/guides/nwaku/configure-discovery","sidebar":"guides"},{"id":"guides/nwaku/configure-nwaku","path":"/guides/nwaku/configure-nwaku","sidebar":"guides"},{"id":"guides/nwaku/faq","path":"/guides/nwaku/faq","sidebar":"guides"},{"id":"guides/nwaku/find-node-address","path":"/guides/nwaku/find-node-address","sidebar":"guides"},{"id":"guides/nwaku/run-docker","path":"/guides/nwaku/run-docker","sidebar":"guides"},{"id":"guides/nwaku/run-docker-compose","path":"/guides/nwaku/run-docker-compose","sidebar":"guides"},{"id":"guides/nwaku/run-node","path":"/guides/nwaku/run-node","sidebar":"guides"},{"id":"learn/concepts/content-topics","path":"/learn/concepts/content-topics","sidebar":"learn"},{"id":"learn/concepts/discv5","path":"/learn/concepts/discv5","sidebar":"learn"},{"id":"learn/concepts/dns-discovery","path":"/learn/concepts/dns-discovery","sidebar":"learn"},{"id":"learn/concepts/network-domains","path":"/learn/concepts/network-domains","sidebar":"learn"},{"id":"learn/concepts/peer-discovery","path":"/learn/concepts/peer-discovery","sidebar":"learn"},{"id":"learn/concepts/peer-exchange","path":"/learn/concepts/peer-exchange","sidebar":"learn"},{"id":"learn/concepts/protocols","path":"/learn/concepts/protocols","sidebar":"learn"},{"id":"learn/concepts/static-peers","path":"/learn/concepts/static-peers","sidebar":"learn"},{"id":"learn/concepts/transports","path":"/learn/concepts/transports","sidebar":"learn"},{"id":"learn/faq","path":"/learn/faq","sidebar":"learn"},{"id":"learn/glossary","path":"/learn/glossary","sidebar":"learn"},{"id":"learn/research","path":"/learn/research","sidebar":"learn"},{"id":"learn/security-features","path":"/learn/security-features","sidebar":"learn"},{"id":"learn/waku-network","path":"/learn/waku-network","sidebar":"learn"},{"id":"learn/waku-vs-libp2p","path":"/learn/waku-vs-libp2p","sidebar":"learn"},{"id":"privacy-policy","path":"/privacy-policy"},{"id":"research/benchmarks/postgres-adoption","path":"/research/benchmarks/postgres-adoption","sidebar":"research"},{"id":"research/index","path":"/research/","sidebar":"research"},{"id":"research/research-and-studies/capped-bandwidth","path":"/research/research-and-studies/capped-bandwidth","sidebar":"research"},{"id":"research/research-and-studies/incentivisation","path":"/research/research-and-studies/incentivisation","sidebar":"research"},{"id":"research/research-and-studies/maximum-bandwidth","path":"/research/research-and-studies/maximum-bandwidth","sidebar":"research"},{"id":"research/research-and-studies/message-propagation","path":"/research/research-and-studies/message-propagation","sidebar":"research"},{"id":"research/research-and-studies/rln-key-benchmarks","path":"/research/research-and-studies/rln-key-benchmarks","sidebar":"research"},{"id":"rules-of-engagement","path":"/rules-of-engagement"},{"id":"terms","path":"/terms"}],"draftIds":[],"sidebars":{"guides":{"link":{"path":"/","label":"guides/getting-started"}},"learn":{"link":{"path":"/learn/waku-network","label":"learn/waku-network"}},"research":{"link":{"path":"/research/","label":"research/index"}}}}],"breadcrumbs":false}}}'),i=JSON.parse('{"defaultLocale":"en-GB","locales":["en-GB"],"path":"i18n","currentLocale":"en-GB","localeConfigs":{"en-GB":{"label":"British English","direction":"ltr","htmlLang":"en-GB","calendar":"gregory","path":"en-GB"}}}');var l=n(57529);const s=JSON.parse('{"docusaurusVersion":"2.4.1","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"2.4.1"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"2.4.1"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"2.4.1"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"2.4.1"},"docusaurus-plugin-sass":{"type":"package","name":"docusaurus-plugin-sass","version":"0.2.3"},"logos-docusaurus-search-local":{"type":"package","name":"@acid-info/logos-docusaurus-search-local","version":"1.0.0-alpha.111"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"2.4.1"},"docusaurus-theme-mermaid":{"type":"package","name":"@docusaurus/theme-mermaid","version":"2.4.1"},"logos-docusaurus-theme":{"type":"package","name":"@acid-info/logos-docusaurus-theme","version":"1.0.0-alpha.143"},"docusaurus-fathom":{"type":"package","name":"@acid-info/docusaurus-fathom","version":"1.0.0-alpha.111"}}}'),u={siteConfig:a.default,siteMetadata:s,globalData:o,i18n:i,codeTranslations:l},c=r.createContext(u);function d(e){let{children:t}=e;return r.createElement(c.Provider,{value:u},t)}},44763:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>f});var r=n(67294),a=n(10412),o=n(35742),i=n(18780),l=n(59351);function s(e){let{error:t,tryAgain:n}=e;return r.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"}},r.createElement("h1",{style:{fontSize:"3rem"}},"This page crashed"),r.createElement("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"}},"Try again"),r.createElement(u,{error:t}))}function u(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{style:{whiteSpace:"pre-wrap"}},n)}function c(e){let{error:t,tryAgain:n}=e;return r.createElement(f,{fallback:()=>r.createElement(s,{error:t,tryAgain:n})},r.createElement(o.Z,null,r.createElement("title",null,"Page Error")),r.createElement(l.default,null,r.createElement(s,{error:t,tryAgain:n})))}const d=e=>r.createElement(c,e);class f extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.default.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??d)(e)}return e??null}}},10412:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>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}},35742:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(67294),a=n(70405);function o(e){return r.createElement(a.ql,e)}},39960:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>p});var r=n(87462),a=n(67294),o=n(73727),i=n(18780),l=n(52263),s=n(13919),u=n(10412);const c=a.createContext({collectLink:()=>{}});var d=n(44996);function f(e,t){let{isNavLink:n,to:f,href:p,activeClassName:h,isActive:m,"data-noBrokenLinkCheck":g,autoAddBaseUrl:v=!0,...b}=e;const{siteConfig:{trailingSlash:y,baseUrl:w}}=(0,l.default)(),{withBaseUrl:x}=(0,d.useBaseUrlUtils)(),k=(0,a.useContext)(c),_=(0,a.useRef)(null);(0,a.useImperativeHandle)(t,(()=>_.current));const E=f||p;const S=(0,s.default)(E),C=E?.replace("pathname://","");let T=void 0!==C?(O=C,v&&(e=>e.startsWith("/"))(O)?x(O):O):void 0;var O;T&&S&&(T=(0,i.applyTrailingSlash)(T,{trailingSlash:y,baseUrl:w}));const D=(0,a.useRef)(!1),P=n?o.OL:o.rU,N=u.default.canUseIntersectionObserver,I=(0,a.useRef)(),A=()=>{D.current||null==T||(window.docusaurus.preload(T),D.current=!0)};(0,a.useEffect)((()=>(!N&&S&&null!=T&&window.docusaurus.prefetch(T),()=>{N&&I.current&&I.current.disconnect()})),[I,T,N,S]);const L=T?.startsWith("#")??!1,R=!T||!S||L;return R||g||k.collectLink(T),R?a.createElement("a",(0,r.Z)({ref:_,href:T},E&&!S&&{target:"_blank",rel:"noopener noreferrer"},b)):a.createElement(P,(0,r.Z)({},b,{onMouseEnter:A,onTouchStart:A,innerRef:e=>{_.current=e,N&&e&&S&&(I.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(I.current.unobserve(e),I.current.disconnect(),null!=T&&window.docusaurus.prefetch(T))}))})),I.current.observe(e))},to:T},n&&{isActive:m,activeClassName:h}))}const p=a.forwardRef(f)},95999:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s,translate:()=>l});var r=n(67294);function a(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var o=n(57529);function i(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 o[t??n]??n??t}function l(e,t){let{message:n,id:r}=e;return a(i({message:n,id:r}),t)}function s(e){let{children:t,id:n,values:o}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");const l=i({message:t,id:n});return r.createElement(r.Fragment,null,a(l,o))}},29935:(e,t,n)=>{"use strict";n.d(t,{m:()=>r});const r="default"},13919:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.r(t),n.d(t,{default:()=>a,hasProtocol:()=>r})},28143:(e,t,n)=>{"use strict";n.r(t),n.d(t,{Redirect:()=>r.l_,matchPath:()=>r.LX,useHistory:()=>r.k6,useLocation:()=>r.TH});var r=n(16550)},44996:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>l,useBaseUrlUtils:()=>i});var r=n(67294),a=n(52263),o=n(13919);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,a.default)(),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.hasProtocol)(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)}},52263:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(67294),a=n(58940);function o(){return(0,r.useContext)(a._)}},72389:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(67294),a=n(98934);function o(){return(0,r.useContext)(a._)}},99670:(e,t,n)=>{"use strict";n.d(t,{Z:()=>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}},30226:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,z:()=>o});var r=n(67294);const a=r.createContext(null);function o(e){let{children:t,value:n}=e;const o=r.useContext(a),i=(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:o,value:n})),[o,n]);return r.createElement(a.Provider,{value:i},t)}},80143:(e,t,n)=>{"use strict";n.r(t),n.d(t,{useActiveDocContext:()=>b,useActivePlugin:()=>p,useActivePluginAndVersion:()=>h,useActiveVersion:()=>v,useAllDocsData:()=>d,useDocVersionSuggestions:()=>y,useDocsData:()=>f,useLatestVersion:()=>g,useVersions:()=>m});var r=n(16550),a=n(52263),o=n(29935);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,a.default)();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=l(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}function u(e,t){const n=s(e,t),a=n?.docs.find((e=>!!(0,r.LX)(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={},d=()=>i("docusaurus-plugin-content-docs")??c,f=e=>function(e,t,n){void 0===t&&(t=o.m),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});function p(e){void 0===e&&(e={});const t=d(),{pathname:n}=(0,r.TH)();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.LX)(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 h(e){void 0===e&&(e={});const t=p(e),{pathname:n}=(0,r.TH)();if(!t)return;return{activePlugin:t,activeVersion:s(t.pluginData,n)}}function m(e){return f(e).versions}function g(e){const t=f(e);return l(t)}function v(e){const t=f(e),{pathname:n}=(0,r.TH)();return s(t,n)}function b(e){const t=f(e),{pathname:n}=(0,r.TH)();return u(t,n)}function y(e){const t=f(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=l(e);return{latestDocSuggestion:u(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},18320:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(74865),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()}}},3310:(e,t,n)=>{"use strict";n.r(t);var r=n(87410),a=n(36809);!function(e){const{themeConfig:{prism:t}}=a.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{n(6726)(`./prism-${e}`)})),delete globalThis.Prism}(r.Z)},88507:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>T});var r=n(67294),a=n(86668),o=n(42489),i=n(87462),l=n(39960),s=n(44996),u=n(13919),c=n(39471);function d(e){let{item:t}=e;const{to:n,href:a,label:o,prependBaseUrlToHref:d,...f}=t,p=(0,s.default)(n),h=(0,s.default)(a,{forcePrependBaseUrl:!0});return r.createElement(l.default,(0,i.Z)({className:"footer__link-item"},a?{href:d?h:a}:{to:p},f),o,a&&!(0,u.default)(a)&&r.createElement(c.Z,null))}function f(e){let{item:t}=e;return t.html?r.createElement("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement("li",{key:t.href??t.to,className:"footer__item"},r.createElement(d,{item:t}))}function p(e){let{column:t}=e;return r.createElement("div",{className:"col footer__col"},r.createElement("div",{className:"footer__title"},t.title),r.createElement("ul",{className:"footer__items clean-list"},t.items.map(((e,t)=>r.createElement(f,{key:t,item:e})))))}function h(e){let{columns:t}=e;return r.createElement("div",{className:"row footer__links"},t.map(((e,t)=>r.createElement(p,{key:t,column:e}))))}function m(){return r.createElement("span",{className:"footer__link-separator"},"\xb7")}function g(e){let{item:t}=e;return t.html?r.createElement("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement(d,{item:t})}function v(e){let{links:t}=e;return r.createElement("div",{className:"footer__links text--center"},r.createElement("div",{className:"footer__links"},t.map(((e,n)=>r.createElement(r.Fragment,{key:n},r.createElement(g,{item:e}),t.length!==n+1&&r.createElement(m,null))))))}function b(e){let{links:t}=e;return(0,o.a)(t)?r.createElement(h,{columns:t}):r.createElement(v,{links:t})}var y=n(86010),w=n(16019);const x={footerLogoLink:"footerLogoLink_BH7S"};function k(e){let{logo:t}=e;const{withBaseUrl:n}=(0,s.useBaseUrlUtils)(),a={light:n(t.src),dark:n(t.srcDark??t.src)};return r.createElement(w.default,{className:(0,y.default)("footer__logo",t.className),alt:t.alt,sources:a,width:t.width,height:t.height,style:t.style})}function _(e){let{logo:t}=e;return t.href?r.createElement(l.default,{href:t.href,className:x.footerLogoLink,target:t.target},r.createElement(k,{logo:t})):r.createElement(k,{logo:t})}function E(e){let{copyright:t}=e;return r.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}var S=n(52601);function C(){const{footer:e}=(0,a.L)();if(!e)return null;const{copyright:t,links:n,logo:o,style:i}=e;return r.createElement(S.Z,{style:i,links:n&&n.length>0&&r.createElement(b,{links:n}),logo:o&&r.createElement(_,{logo:o}),copyright:t&&r.createElement(E,{copyright:t})})}const T=r.memo(C)},55211:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(87462),a=n(67294);function o(e){return a.createElement("svg",(0,r.Z)({viewBox:"0 0 24 24",width:24,height:24},e),a.createElement("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"}))}},39471:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(67294);const a={iconExternalLink:"iconExternalLink_nPIU"};function o(e){let{width:t=13.5,height:n=13.5}=e;return r.createElement("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:a.iconExternalLink},r.createElement("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"}))}},67080:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(87462),a=n(67294);function o(e){return a.createElement("svg",(0,r.Z)({viewBox:"0 0 24 24",width:24,height:24},e),a.createElement("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"}))}},59351:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>N});var r=n(67294),a=n(86010),o=n(44763),i=n(10833),l=n(55225),s=n(35281),u=n(19727);const c={skipToContent:"skipToContent_fXgn"};function d(){return r.createElement(l.l,{className:c.skipToContent})}var f=n(86668),p=n(59689),h=n(87462),m=n(95999);function g(e){let{width:t=21,height:n=21,color:a="currentColor",strokeWidth:o=1.2,className:i,...l}=e;return r.createElement("svg",(0,h.Z)({viewBox:"0 0 15 15",width:t,height:n},l),r.createElement("g",{stroke:a,strokeWidth:o},r.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}const v={closeButton:"closeButton_CVFx"};function b(e){return r.createElement("button",(0,h.Z)({type:"button","aria-label":(0,m.translate)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},e,{className:(0,a.default)("clean-btn close",v.closeButton,e.className)}),r.createElement(g,{width:14,height:14,strokeWidth:3.1}))}const y={content:"content_knG7"};function w(e){const{announcementBar:t}=(0,f.L)(),{content:n}=t;return r.createElement("div",(0,h.Z)({},e,{className:(0,a.default)(y.content,e.className),dangerouslySetInnerHTML:{__html:n}}))}const x={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function k(){const{announcementBar:e}=(0,f.L)(),{isActive:t,close:n}=(0,p.nT)();if(!t)return null;const{backgroundColor:a,textColor:o,isCloseable:i}=e;return r.createElement("div",{className:x.announcementBar,style:{backgroundColor:a,color:o},role:"banner"},i&&r.createElement("div",{className:x.announcementBarPlaceholder}),r.createElement(w,{className:x.announcementBarContent}),i&&r.createElement(b,{onClick:n,className:x.announcementBarClose}))}var _=n(4818),E=n(10428);function S(){return r.createElement(_.Z,null,r.createElement(E.Z,null))}var C=n(88507),T=n(90988),O=n(69690);function D(e){let{error:t,tryAgain:n}=e;return r.createElement("main",{className:"container margin-vert--xl"},r.createElement("div",{className:"row"},r.createElement("div",{className:"col col--6 col--offset-3"},r.createElement("h1",{className:"hero__title"},r.createElement(m.default,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed"},"This page crashed.")),r.createElement("div",{className:"margin-vert--lg"},r.createElement(O.Cw,{onClick:n,className:"button button--primary shadow--lw"})),r.createElement("hr",null),r.createElement("div",{className:"margin-vert--md"},r.createElement(O.aG,{error:t})))))}const P={mainWrapper:"mainWrapper_z2l0"};function N(e){const{children:t,noFooter:n,wrapperClassName:c,title:f,description:p}=e;return(0,u.t)(),r.createElement(T.Z,null,r.createElement(i.d,{title:f,description:p}),r.createElement(d,null),r.createElement(k,null),r.createElement(S,null),r.createElement("div",{id:l.u,className:(0,a.default)(s.k.wrapper.main,P.mainWrapper,c)},r.createElement(o.default,{fallback:e=>r.createElement(D,e)},t)),!n&&r.createElement(C.default,null))}},2101:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});var r=n(67294),a=n(86668),o=n(92949),i=n(66354);const l={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function s(e){let{className:t}=e;const n=(0,a.L)().navbar.style,s=(0,a.L)().colorMode.disableSwitch,{colorMode:u,setColorMode:c}=(0,o.I)();return s?null:r.createElement(i.Z,{className:t,buttonClassName:"dark"===n?l.darkNavbarColorModeToggle:void 0,value:u,onChange:c})}},29865:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});var r=n(67294),a=n(93163),o=n(95999),i=n(87462);function l(e){let{width:t=30,height:n=30,className:a,...o}=e;return r.createElement("svg",(0,i.Z)({className:a,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true"},o),r.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))}function s(){const{toggle:e,shown:t}=(0,a.e)();return r.createElement("button",{onClick:e,"aria-label":(0,o.translate)({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"},r.createElement(l,null))}},2203:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>p});var r=n(67294),a=n(93163),o=n(69800),i=n(82892),l=n(42977),s=n(87462),u=n(86668),c=n(4710);function d(){const e=(0,a.e)(),t=(0,u.L)().navbar.items;return r.createElement("ul",{className:"menu__list"},t.map(((t,n)=>r.createElement(c.default,(0,s.Z)({mobile:!0},t,{onClick:()=>e.toggle(),key:n})))))}var f=n(38732);function p(){const e=(0,a.e)();return(0,o.N)(e.shown),e.shouldRender?r.createElement(i.Z,{header:r.createElement(l.Z,null),primaryMenu:r.createElement(d,null),secondaryMenu:r.createElement(f.Z,null)}):null}},4710:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>k});var r=n(67294),a=n(87462),o=n(86010),i=n(51125);function l(e){let{className:t,isDropdownItem:n=!1,...l}=e;const s=r.createElement(i.default,(0,a.Z)({className:(0,o.default)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n},l));return n?r.createElement("li",null,s):s}function s(e){let{className:t,isDropdownItem:n,...l}=e;return r.createElement("li",{className:"menu__list-item"},r.createElement(i.default,(0,a.Z)({className:(0,o.default)("menu__link",t)},l)))}function u(e){let{mobile:t=!1,position:n,...o}=e;const i=t?s:l;return r.createElement(i,(0,a.Z)({},o,{activeClassName:o.activeClassName??(t?"menu__link--active":"navbar__link--active")}))}var c=n(27654),d=n(12197),f=n(33760);const p={searchBox:"searchBox_ZlJk"};function h(e){let{children:t,className:n}=e;return r.createElement("div",{className:(0,o.default)(n,p.searchBox)},t)}var m=n(80143),g=n(53438);var v=n(60373),b=n(95999),y=n(16550);const w=e=>e.docs.find((t=>t.id===e.mainDocId));const x={default:u,localeDropdown:d.Z,search:function(e){let{mobile:t,className:n}=e;return t?null:r.createElement(h,{className:n},r.createElement(f.default,null))},dropdown:c.default,html:function(e){let{value:t,className:n,mobile:a=!1,isDropdownItem:i=!1}=e;const l=i?"li":"div";return r.createElement(l,{className:(0,o.default)({navbar__item:!a&&!i,"menu__list-item":a},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:o,...i}=e;const{activeDoc:l}=(0,m.useActiveDocContext)(o),s=(0,g.vY)(t,o);return null===s?null:r.createElement(u,(0,a.Z)({exact:!0},i,{isActive:()=>l?.path===s.path||!!l?.sidebar&&l.sidebar===s.sidebar,label:n??s.id,to:s.path}))},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:o,...i}=e;const{activeDoc:l}=(0,m.useActiveDocContext)(o),s=(0,g.oz)(t,o).link;if(!s)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return r.createElement(u,(0,a.Z)({exact:!0},i,{isActive:()=>l?.sidebar===t,label:n??s.label,to:s.path}))},docsVersion:function(e){let{label:t,to:n,docsPluginId:o,...i}=e;const l=(0,g.lO)(o)[0],s=t??l.label,c=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(l).path;return r.createElement(u,(0,a.Z)({},i,{label:s,to:c}))},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:o,dropdownItemsBefore:i,dropdownItemsAfter:l,...s}=e;const{search:d,hash:f}=(0,y.TH)(),p=(0,m.useActiveDocContext)(n),h=(0,m.useVersions)(n),{savePreferredVersionName:x}=(0,v.J)(n),k=[...i,...h.map((e=>{const t=p.alternateDocVersions[e.name]??w(e);return{label:e.label,to:`${t.path}${d}${f}`,isActive:()=>e===p.activeVersion,onClick:()=>x(e.name)}})),...l],_=(0,g.lO)(n)[0],E=t&&k.length>1?(0,b.translate)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):_.label,S=t&&k.length>1?void 0:w(_).path;return k.length<=1?r.createElement(u,(0,a.Z)({},s,{mobile:t,label:E,to:S,isActive:o?()=>!1:void 0})):r.createElement(c.default,(0,a.Z)({},s,{mobile:t,label:E,to:S,items:k,isActive:o?()=>!1:void 0}))}};function k(e){let{type:t,...n}=e;const a=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),o=x[a];if(!o)throw new Error(`No NavbarItem component found for type "${t}".`);return r.createElement(o,n)}},90197:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(67294),a=n(35742);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return r.createElement(a.Z,null,t&&r.createElement("meta",{name:"docusaurus_locale",content:t}),n&&r.createElement("meta",{name:"docusaurus_version",content:n}),o&&r.createElement("meta",{name:"docusaurus_tag",content:o}),i&&r.createElement("meta",{name:"docsearch:language",content:i}),n&&r.createElement("meta",{name:"docsearch:version",content:n}),o&&r.createElement("meta",{name:"docsearch:docusaurus_tag",content:o}))}},59689:(e,t,n)=>{"use strict";n.d(t,{nT:()=>h,pl:()=>p});var r=n(67294),a=n(72389),o=n(50012),i=n(902),l=n(86668);const s=(0,o.WA)("docusaurus.announcement.dismiss"),u=(0,o.WA)("docusaurus.announcement.id"),c=()=>"true"===s.get(),d=e=>s.set(String(e)),f=r.createContext(null);function p(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,l.L)(),t=(0,a.default)(),[n,o]=(0,r.useState)((()=>!!t&&c()));(0,r.useEffect)((()=>{o(c())}),[]);const i=(0,r.useCallback)((()=>{d(!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&&d(!1),!r&&c()||o(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return r.createElement(f.Provider,{value:n},t)}function h(){const e=(0,r.useContext)(f);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},92949:(e,t,n)=>{"use strict";n.d(t,{I:()=>g,S:()=>m});var r=n(67294),a=n(10412),o=n(902),i=n(50012),l=n(86668);const s=r.createContext(void 0),u="theme",c=(0,i.WA)(u),d={light:"light",dark:"dark"},f=e=>e===d.dark?d.dark:d.light,p=e=>a.default.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e),h=e=>{c.set(f(e))};function m(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.L)(),[a,o]=(0,r.useState)(p(e));(0,r.useEffect)((()=>{t&&c.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:a=!0}=r;t?(o(t),a&&h(t)):(o(n?window.matchMedia("(prefers-color-scheme: dark)").matches?d.dark:d.light:e),c.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",f(a))}),[a]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==u)return;const t=c.get();null!==t&&i(f(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const s=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||s.current?s.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:a,setColorMode:i,get isDarkTheme(){return a===d.dark},setLightTheme(){i(d.light)},setDarkTheme(){i(d.dark)}})),[a,i])}();return r.createElement(s.Provider,{value:n},t)}function g(){const e=(0,r.useContext)(s);if(null==e)throw new o.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},65130:(e,t,n)=>{"use strict";n.d(t,{b:()=>i,k:()=>l});var r=n(67294),a=n(902);const o=r.createContext(null);function i(e){let{children:t,content:n}=e;const a=function(e){return(0,r.useMemo)((()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc})),[e])}(n);return r.createElement(o.Provider,{value:a},t)}function l(){const e=(0,r.useContext)(o);if(null===e)throw new a.i6("DocProvider");return e}},14353:(e,t,n)=>{"use strict";n.d(t,{D:()=>l,f:()=>s});var r=n(67294),a=n(902);const o=Symbol("EmptyContext"),i=r.createContext(o);function l(e){let{children:t}=e;const[n,a]=(0,r.useState)(null),o=(0,r.useMemo)((()=>({expandedItem:n,setExpandedItem:a})),[n]);return r.createElement(i.Provider,{value:o},t)}function s(){const e=(0,r.useContext)(i);if(e===o)throw new a.i6("DocSidebarItemsExpandedStateProvider");return e}},60373:(e,t,n)=>{"use strict";n.d(t,{J:()=>b,L5:()=>g,Oh:()=>y});var r=n(67294),a=n(80143),o=n(29935),i=n(86668),l=n(53438),s=n(902),u=n(50012);const c=e=>`docs-preferred-version-${e}`,d={save:(e,t,n)=>{(0,u.WA)(c(e),{persistence:t}).set(n)},read:(e,t)=>(0,u.WA)(c(e),{persistence:t}).get(),clear:(e,t)=>{(0,u.WA)(c(e),{persistence:t}).del()}},f=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const p=r.createContext(null);function h(){const e=(0,a.useAllDocsData)(),t=(0,i.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[o,l]=(0,r.useState)((()=>f(n)));(0,r.useEffect)((()=>{l(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function a(e){const t=d.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(d.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){d.save(e,t,n),l((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function m(e){let{children:t}=e;const n=h();return r.createElement(p.Provider,{value:n},t)}function g(e){let{children:t}=e;return l.cE?r.createElement(m,null,t):r.createElement(r.Fragment,null,t)}function v(){const e=(0,r.useContext)(p);if(!e)throw new s.i6("DocsPreferredVersionContextProvider");return e}function b(e){void 0===e&&(e=o.m);const t=(0,a.useDocsData)(e),[n,i]=v(),{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])}}function y(){const e=(0,a.useAllDocsData)(),[t]=v();function n(n){const r=e[n],{preferredVersionName:a}=t[n];return r.versions.find((e=>e.name===a))??null}const r=Object.keys(e);return Object.fromEntries(r.map((e=>[e,n(e)])))}},1116:(e,t,n)=>{"use strict";n.d(t,{V:()=>s,b:()=>l});var r=n(67294),a=n(902);const o=Symbol("EmptyContext"),i=r.createContext(o);function l(e){let{children:t,name:n,items:a}=e;const o=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return r.createElement(i.Provider,{value:o},t)}function s(){const e=(0,r.useContext)(i);if(e===o)throw new a.i6("DocsSidebarProvider");return e}},74477:(e,t,n)=>{"use strict";n.d(t,{E:()=>l,q:()=>i});var r=n(67294),a=n(902);const o=r.createContext(null);function i(e){let{children:t,version:n}=e;return r.createElement(o.Provider,{value:n},t)}function l(){const e=(0,r.useContext)(o);if(null===e)throw new a.i6("DocsVersionProvider");return e}},93163:(e,t,n)=>{"use strict";n.d(t,{M:()=>d,e:()=>f});var r=n(67294),a=n(13102),o=n(87524),i=n(91980),l=n(86668),s=n(902);const u=r.createContext(void 0);function c(){const e=function(){const e=(0,a.HY)(),{items:t}=(0,l.L)().navbar;return 0===t.length&&!e.component}(),t=(0,o.i)(),n=!e&&"mobile"===t,[s,u]=(0,r.useState)(!1);(0,i.Rb)((()=>{if(s)return u(!1),!1}));const c=(0,r.useCallback)((()=>{u((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&u(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:c,shown:s})),[e,n,c,s])}function d(e){let{children:t}=e;const n=c();return r.createElement(u.Provider,{value:n},t)}function f(){const e=r.useContext(u);if(void 0===e)throw new s.i6("NavbarMobileSidebarProvider");return e}},13102:(e,t,n)=>{"use strict";n.d(t,{HY:()=>l,Zo:()=>s,n2:()=>i});var r=n(67294),a=n(902);const o=r.createContext(null);function i(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return r.createElement(o.Provider,{value:n},t)}function l(){const e=(0,r.useContext)(o);if(!e)throw new a.i6("NavbarSecondaryMenuContentProvider");return e[0]}function s(e){let{component:t,props:n}=e;const i=(0,r.useContext)(o);if(!i)throw new a.i6("NavbarSecondaryMenuContentProvider");const[,l]=i,s=(0,a.Ql)(n);return(0,r.useEffect)((()=>{l({component:t,props:s})}),[l,t,s]),(0,r.useEffect)((()=>()=>l({component:null,props:null})),[l]),null}},2730:(e,t,n)=>{"use strict";n.d(t,{a:()=>i});var r=n(67294),a=n(12466),o=n(85936);function i(e){let{threshold:t}=e;const[n,i]=(0,r.useState)(!1),l=(0,r.useRef)(!1),{startScroll:s,cancelScroll:u}=(0,a.Ct)();return(0,a.RF)(((e,n)=>{let{scrollY:r}=e;const a=n?.scrollY;a&&(l.current?l.current=!1:r>=a?(u(),i(!1)):r{e.location.hash&&(l.current=!0,i(!1))})),{shown:n,scrollToTop:()=>s(0)}}},19727:(e,t,n)=>{"use strict";n.d(t,{h:()=>a,t:()=>o});var r=n(67294);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)}}),[])}},69800:(e,t,n)=>{"use strict";n.d(t,{N:()=>a});var r=n(67294);function a(e){void 0===e&&(e=!0),(0,r.useEffect)((()=>(document.body.style.overflow=e?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[e])}},66412:(e,t,n)=>{"use strict";n.d(t,{p:()=>o});var r=n(92949),a=n(86668);function o(){const{prism:e}=(0,a.L)(),{colorMode:t}=(0,r.I)(),n=e.theme,o=e.darkTheme||n;return"dark"===t?o:n}},96841:(e,t,n)=>{"use strict";n.d(t,{S:()=>s});var r=n(67294),a=n(86668);function o(e){const t=e.getBoundingClientRect();return t.top===t.bottom?o(e.parentNode):t}function i(e,t){let{anchorTopOffset:n}=t;const r=e.find((e=>o(e).top>=n));if(r){return function(e){return e.top>0&&e.bottom{e.current=t?0:document.querySelector(".navbar").clientHeight}),[t]),e}function s(e){const t=(0,r.useRef)(void 0),n=l();(0,r.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:r,linkActiveClassName:a,minHeadingLevel:o,maxHeadingLevel:l}=e;function s(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(r),s=function(e){let{minHeadingLevel:t,maxHeadingLevel:n}=e;const r=[];for(let a=t;a<=n;a+=1)r.push(`h${a}.anchor`);return Array.from(document.querySelectorAll(r.join()))}({minHeadingLevel:o,maxHeadingLevel:l}),u=i(s,{anchorTopOffset:n.current}),c=e.find((e=>u&&u.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,n){n?(t.current&&t.current!==e&&t.current.classList.remove(a),e.classList.add(a),t.current=e):e.classList.remove(a)}(e,e===c)}))}return document.addEventListener("scroll",s),document.addEventListener("resize",s),s(),()=>{document.removeEventListener("scroll",s),document.removeEventListener("resize",s)}}),[e,n])}},87524:(e,t,n)=>{"use strict";n.d(t,{i:()=>u});var r=n(67294),a=n(10412);const o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function l(){return a.default.canUseDOM?window.innerWidth>i?o.desktop:o.mobile:o.ssr}const s=!1;function u(){const[e,t]=(0,r.useState)((()=>s?"ssr":l()));return(0,r.useEffect)((()=>{function e(){t(l())}const n=s?window.setTimeout(e,1e3):void 0;return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e),clearTimeout(n)}}),[]),e}},82818:(e,t,n)=>{"use strict";n.r(t),n.d(t,{Collapsible:()=>C,ErrorBoundaryError:()=>G.aG,ErrorBoundaryTryAgainButton:()=>G.Cw,ErrorCauseBoundary:()=>G.QW,HtmlClassNameProvider:()=>D.FG,NavbarSecondaryMenuFiller:()=>N.Zo,PageMetadata:()=>D.d,ReactContextError:()=>O.i6,SkipToContentFallbackId:()=>W.u,SkipToContentLink:()=>W.l,ThemeClassNames:()=>T.k,composeProviders:()=>O.Qc,createStorageSlot:()=>a.WA,duplicates:()=>U.l,filterDocCardListItems:()=>i.MN,isMultiColumnFooterLinks:()=>z.a,isRegexpStringMatch:()=>$,listStorageKeys:()=>a._f,listTagsByLetters:()=>R,prefersReducedMotion:()=>g.n,processAdmonitionProps:()=>q,translateTagsPageTitle:()=>L,uniq:()=>U.j,useCollapsible:()=>b,useColorMode:()=>P.I,useContextualSearchFilters:()=>o._q,useCurrentSidebarCategory:()=>i.jA,useDocsPreferredVersion:()=>V.J,useEvent:()=>O.zX,useIsomorphicLayoutEffect:()=>O.LI,usePluralForm:()=>p,usePrevious:()=>O.D9,usePrismTheme:()=>H.p,useSearchLinkCreator:()=>B,useSearchQueryString:()=>F,useStorageSlot:()=>a.Nk,useThemeConfig:()=>r.L,useWindowSize:()=>I.i});var r=n(86668),a=n(50012),o=n(43320),i=n(53438),l=n(67294),s=n(52263);const u=["zero","one","two","few","many","other"];function c(e){return u.filter((t=>e.includes(t)))}const d={locale:"en",pluralForms:c(["one","other"]),select:e=>1===e?"one":"other"};function f(){const{i18n:{currentLocale:e}}=(0,s.default)();return(0,l.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:c(t.resolvedOptions().pluralCategories),select:e=>t.select(e)}}(e)}catch(t){return console.error(`Failed to use Intl.PluralRules for locale "${e}".\nDocusaurus will fallback to the default (English) implementation.\nError: ${t.message}\n`),d}}),[e])}function p(){const e=f();return{selectMessage:(t,n)=>function(e,t,n){const r=e.split("|");if(1===r.length)return r[0];r.length>n.pluralForms.length&&console.error(`For locale=${n.locale}, a maximum of ${n.pluralForms.length} plural forms are expected (${n.pluralForms.join(",")}), but the message contains ${r.length}: ${e}`);const a=n.select(t),o=n.pluralForms.indexOf(a);return r[Math.min(o,r.length-1)]}(n,t,e)}}var h=n(87462),m=n(10412),g=n(91442);const v="ease-in-out";function b(e){let{initialState:t}=e;const[n,r]=(0,l.useState)(t??!1),a=(0,l.useCallback)((()=>{r((e=>!e))}),[]);return{collapsed:n,setCollapsed:r,toggleCollapsed:a}}const y={display:"none",overflow:"hidden",height:"0px"},w={display:"block",overflow:"visible",height:"auto"};function x(e,t){const n=t?y:w;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function k(e){let{collapsibleRef:t,collapsed:n,animation:r}=e;const a=(0,l.useRef)(!1);(0,l.useEffect)((()=>{const e=t.current;function o(){const t=e.scrollHeight,n=r?.duration??function(e){if((0,g.n)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${r?.easing??v}`,height:`${t}px`}}function i(){const t=o();e.style.transition=t.transition,e.style.height=t.height}if(!a.current)return x(e,n),void(a.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(i(),requestAnimationFrame((()=>{e.style.height=y.height,e.style.overflow=y.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{i()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,r])}function _(e){if(!m.default.canUseDOM)return e?y:w}function E(e){let{as:t="div",collapsed:n,children:r,animation:a,onCollapseTransitionEnd:o,className:i,disableSSRStyle:s}=e;const u=(0,l.useRef)(null);return k({collapsibleRef:u,collapsed:n,animation:a}),l.createElement(t,{ref:u,style:s?void 0:_(n),onTransitionEnd:e=>{"height"===e.propertyName&&(x(u.current,n),o?.(n))},className:i},r)}function S(e){let{collapsed:t,...n}=e;const[r,a]=(0,l.useState)(!t),[o,i]=(0,l.useState)(t);return(0,l.useLayoutEffect)((()=>{t||a(!0)}),[t]),(0,l.useLayoutEffect)((()=>{r&&i(t)}),[r,t]),r?l.createElement(E,(0,h.Z)({},n,{collapsed:o})):null}function C(e){let{lazy:t,...n}=e;const r=t?S:E;return l.createElement(r,n)}var T=n(35281),O=n(902),D=n(10833),P=n(92949),N=n(13102),I=n(87524),A=n(95999);const L=()=>(0,A.translate)({id:"theme.tags.tagsPageTitle",message:"Tags",description:"The title of the tag list page"});function R(e){const t={};return Object.values(e).forEach((e=>{const n=function(e){return e[0].toUpperCase()}(e.label);t[n]??=[],t[n].push(e)})),Object.entries(t).sort(((e,t)=>{let[n]=e,[r]=t;return n.localeCompare(r)})).map((e=>{let[t,n]=e;return{letter:t,tags:n.sort(((e,t)=>e.label.localeCompare(t.label)))}}))}var j=n(91980);const M="q";function F(){return(0,j.Nc)(M)}function B(){const{siteConfig:{baseUrl:e,themeConfig:t}}=(0,s.default)(),{algolia:{searchPagePath:n}}=t;return(0,l.useCallback)((t=>`${e}${n}?${M}=${encodeURIComponent(t)}`),[e,n])}var z=n(42489);function $(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var U=n(67392),H=n(66412),V=n(60373);function q(e){const{mdxAdmonitionTitle:t,rest:n}=function(e){const t=l.Children.toArray(e),n=t.find((e=>l.isValidElement(e)&&"mdxAdmonitionTitle"===e.props?.mdxType)),r=l.createElement(l.Fragment,null,t.filter((e=>e!==n)));return{mdxAdmonitionTitle:n?.props.children,rest:r}}(e.children),r=e.title??t;return{...e,...r&&{title:r},children:n}}var W=n(55225),G=n(69690)},91338:(e,t,n)=>{"use strict";n.r(t),n.d(t,{AnnouncementBarProvider:()=>h.pl,BlogPostProvider:()=>d,Collapsible:()=>r.Collapsible,ColorModeProvider:()=>k.S,DEFAULT_SEARCH_TAG:()=>S.HX,DocProvider:()=>l.b,DocSidebarItemsExpandedStateProvider:()=>a.D,DocsPreferredVersionContextProvider:()=>p.L5,DocsSidebarProvider:()=>i.b,DocsVersionProvider:()=>o.q,ErrorBoundaryError:()=>r.ErrorBoundaryError,ErrorBoundaryTryAgainButton:()=>r.ErrorBoundaryTryAgainButton,ErrorCauseBoundary:()=>r.ErrorCauseBoundary,HtmlClassNameProvider:()=>r.HtmlClassNameProvider,NavbarProvider:()=>B,NavbarSecondaryMenuFiller:()=>r.NavbarSecondaryMenuFiller,PageMetadata:()=>r.PageMetadata,PluginHtmlClassNameProvider:()=>j.VC,ReactContextError:()=>r.ReactContextError,ScrollControllerProvider:()=>L.OC,SkipToContentFallbackId:()=>r.SkipToContentFallbackId,SkipToContentLink:()=>r.SkipToContentLink,ThemeClassNames:()=>r.ThemeClassNames,composeProviders:()=>r.composeProviders,containsLineNumbers:()=>E.nt,createStorageSlot:()=>r.createStorageSlot,docVersionSearchTag:()=>S.os,duplicates:()=>r.duplicates,filterDocCardListItems:()=>r.filterDocCardListItems,findFirstCategoryLink:()=>C.Wl,findSidebarCategory:()=>C.em,getPrismCssVariables:()=>E.QC,isActiveSidebarItem:()=>C._F,isDocsPluginEnabled:()=>C.cE,isMultiColumnFooterLinks:()=>r.isMultiColumnFooterLinks,isRegexpStringMatch:()=>r.isRegexpStringMatch,isSamePath:()=>R.Mg,keyboardFocusedClassName:()=>U.h,listStorageKeys:()=>r.listStorageKeys,listTagsByLetters:()=>r.listTagsByLetters,parseCodeBlockTitle:()=>E.bc,parseLanguage:()=>E.Vo,parseLines:()=>E.nZ,prefersReducedMotion:()=>r.prefersReducedMotion,processAdmonitionProps:()=>r.processAdmonitionProps,splitNavbarItems:()=>F,translateTagsPageTitle:()=>r.translateTagsPageTitle,uniq:()=>r.uniq,useAlternatePageUtils:()=>_.l,useAnnouncementBar:()=>h.nT,useBackToTopButton:()=>G.a,useBlogPost:()=>f,useCodeWordWrap:()=>W,useCollapsible:()=>r.useCollapsible,useColorMode:()=>r.useColorMode,useContextualSearchFilters:()=>r.useContextualSearchFilters,useCurrentSidebarCategory:()=>r.useCurrentSidebarCategory,useDoc:()=>l.k,useDocById:()=>C.xz,useDocRouteMetadata:()=>C.hI,useDocSidebarItemsExpandedState:()=>a.f,useDocsPreferredVersion:()=>r.useDocsPreferredVersion,useDocsPreferredVersionByPluginId:()=>p.Oh,useDocsSidebar:()=>i.V,useDocsVersion:()=>o.E,useDocsVersionCandidates:()=>C.lO,useEvent:()=>r.useEvent,useFilteredAndTreeifiedTOC:()=>A.b,useHideableNavbar:()=>$,useHistoryPopHandler:()=>I.Rb,useHistorySelector:()=>I.xL,useHomePageRoute:()=>R.Ns,useIsomorphicLayoutEffect:()=>r.useIsomorphicLayoutEffect,useKeyboardNavigation:()=>U.t,useLayoutDoc:()=>C.vY,useLayoutDocsSidebar:()=>C.oz,useLocalPathname:()=>N,useLocationChange:()=>O.S,useLockBodyScroll:()=>H.N,useNavbarMobileSidebar:()=>g.e,useNavbarSecondaryMenu:()=>x,usePluralForm:()=>r.usePluralForm,usePrevious:()=>r.usePrevious,usePrismTheme:()=>r.usePrismTheme,useQueryStringValue:()=>I._X,useScrollController:()=>L.sG,useScrollPosition:()=>L.RF,useScrollPositionBlocker:()=>L.o5,useSearchLinkCreator:()=>r.useSearchLinkCreator,useSearchQueryString:()=>r.useSearchQueryString,useSidebarBreadcrumbs:()=>C.s1,useSmoothScrollTo:()=>L.Ct,useStorageSlot:()=>r.useStorageSlot,useTOCHighlight:()=>z.S,useTabs:()=>m.Y,useThemeConfig:()=>r.useThemeConfig,useTitleFormatter:()=>T.p,useTreeifiedTOC:()=>A.a,useWindowSize:()=>r.useWindowSize});var r=n(82818),a=n(14353),o=n(74477),i=n(1116),l=n(65130),s=n(67294),u=n(902);const c=s.createContext(null);function d(e){let{children:t,content:n,isBlogPostPage:r=!1}=e;const a=function(e){let{content:t,isBlogPostPage:n}=e;return(0,s.useMemo)((()=>({metadata:t.metadata,frontMatter:t.frontMatter,assets:t.assets,toc:t.toc,isBlogPostPage:n})),[t,n])}({content:n,isBlogPostPage:r});return s.createElement(c.Provider,{value:a},t)}function f(){const e=(0,s.useContext)(c);if(null===e)throw new u.i6("BlogPostProvider");return e}var p=n(60373),h=n(59689),m=n(70989),g=n(93163),v=n(13102);const b=s.createContext(null);function y(e){let{children:t}=e;const n=function(){const e=(0,g.e)(),t=(0,v.HY)(),[n,r]=(0,s.useState)(!1),a=null!==t.component,o=(0,u.D9)(a);return(0,s.useEffect)((()=>{a&&!o&&r(!0)}),[a,o]),(0,s.useEffect)((()=>{a?e.shown||r(!0):r(!1)}),[e.shown,a]),(0,s.useMemo)((()=>[n,r]),[n])}();return s.createElement(b.Provider,{value:n},t)}function w(e){if(e.component){const t=e.component;return s.createElement(t,e.props)}}function x(){const e=(0,s.useContext)(b);if(!e)throw new u.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,r=(0,s.useCallback)((()=>n(!1)),[n]),a=(0,v.HY)();return(0,s.useMemo)((()=>({shown:t,hide:r,content:w(a)})),[r,a,t])}var k=n(92949),_=n(94711),E=n(37016),S=n(43320),C=n(53438),T=n(82128),O=n(85936),D=n(16550),P=n(52263);function N(){const{siteConfig:{baseUrl:e}}=(0,P.default)(),{pathname:t}=(0,D.TH)();return t.replace(e,"/")}var I=n(91980),A=n(39665),L=n(12466),R=n(48596),j=n(10833);const M="right";function F(e){function t(e){return"left"===(e.position??M)}return[e.filter(t),e.filter((e=>!t(e)))]}function B(e){let{children:t}=e;return s.createElement(v.n2,null,s.createElement(g.M,null,s.createElement(y,null,t)))}var z=n(96841);function $(e){const[t,n]=(0,s.useState)(e),r=(0,s.useRef)(!1),a=(0,s.useRef)(0),o=(0,s.useCallback)((e=>{null!==e&&(a.current=e.getBoundingClientRect().height)}),[]);return(0,L.RF)(((t,o)=>{let{scrollY:i}=t;if(!e)return;if(i=l?n(!1):i+u{if(!e)return;const a=t.location.hash;if(a?document.getElementById(a.substring(1)):void 0)return r.current=!0,void n(!1);n(!0)})),{navbarRef:o,isNavbarVisible:t}}var U=n(19727),H=n(69800);const V={attributes:!0,characterData:!0,childList:!0,subtree:!0};function q(e,t){const[n,r]=(0,s.useState)(),a=(0,s.useCallback)((()=>{r(e.current?.closest("[role=tabpanel][hidden]"))}),[e,r]);(0,s.useEffect)((()=>{a()}),[a]),function(e,t,n){void 0===n&&(n=V);const r=(0,u.zX)(t),a=(0,u.Ql)(n);(0,s.useEffect)((()=>{const t=new MutationObserver(r);return e&&t.observe(e,a),()=>t.disconnect()}),[e,r,a])}(n,(e=>{e.forEach((e=>{"attributes"===e.type&&"hidden"===e.attributeName&&(t(),a())}))}),{attributes:!0,characterData:!1,childList:!1,subtree:!1})}function W(){const[e,t]=(0,s.useState)(!1),[n,r]=(0,s.useState)(!1),a=(0,s.useRef)(null),o=(0,s.useCallback)((()=>{const n=a.current.querySelector("code");e?n.removeAttribute("style"):(n.style.whiteSpace="pre-wrap",n.style.overflowWrap="anywhere"),t((e=>!e))}),[a,e]),i=(0,s.useCallback)((()=>{const{scrollWidth:e,clientWidth:t}=a.current,n=e>t||a.current.querySelector("code").hasAttribute("style");r(n)}),[a]);return q(a,i),(0,s.useEffect)((()=>{i()}),[e,i]),(0,s.useEffect)((()=>(window.addEventListener("resize",i,{passive:!0}),()=>{window.removeEventListener("resize",i)})),[i]),{codeBlockRef:a,isEnabled:e,isCodeScrollable:n,toggle:o}}var G=n(2730)},35281:(e,t,n)=>{"use strict";n.d(t,{k:()=>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",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:{}}},91442:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{n:()=>r})},37016:(e,t,n)=>{"use strict";n.d(t,{QC:()=>p,Vo:()=>d,bc:()=>u,nZ:()=>f,nt:()=>c});var r=n(87594),a=n.n(r);const o=/title=(?["'])(?.*?)\1/,i=/\{(?<range>[\d,-]+)\}/,l={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},bash:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}};function s(e,t){const n=e.map((e=>{const{start:n,end:r}=l[e];return`(?:${n}\\s*(${t.flatMap((e=>[e.line,e.block?.start,e.block?.end].filter(Boolean))).join("|")})\\s*${r})`})).join("|");return new RegExp(`^\\s*(?:${n})\\s*$`)}function u(e){return e?.match(o)?.groups.title??""}function c(e){return Boolean(e?.includes("showLineNumbers"))}function d(e){const t=e.split(" ").find((e=>e.startsWith("language-")));return t?.replace(/language-/,"")}function f(e,t){let n=e.replace(/\n$/,"");const{language:r,magicComments:o,metastring:u}=t;if(u&&i.test(u)){const e=u.match(i).groups.range;if(0===o.length)throw new Error(`A highlight range has been given in code block's metastring (\`\`\` ${u}), but no magic comment config is available. Docusaurus applies the first magic comment entry's className for metastring ranges.`);const t=o[0].className,r=a()(e).filter((e=>e>0)).map((e=>[e-1,[t]]));return{lineClassNames:Object.fromEntries(r),code:n}}if(void 0===r)return{lineClassNames:{},code:n};const c=function(e,t){switch(e){case"js":case"javascript":case"ts":case"typescript":return s(["js","jsBlock"],t);case"jsx":case"tsx":return s(["js","jsBlock","jsx"],t);case"html":return s(["js","jsBlock","html"],t);case"python":case"py":case"bash":return s(["bash"],t);case"markdown":case"md":return s(["html","jsx","bash"],t);default:return s(Object.keys(l),t)}}(r,o),d=n.split("\n"),f=Object.fromEntries(o.map((e=>[e.className,{start:0,range:""}]))),p=Object.fromEntries(o.filter((e=>e.line)).map((e=>{let{className:t,line:n}=e;return[n,t]}))),h=Object.fromEntries(o.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.start,t]}))),m=Object.fromEntries(o.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.end,t]})));for(let a=0;a<d.length;){const e=d[a].match(c);if(!e){a+=1;continue}const t=e.slice(1).find((e=>void 0!==e));p[t]?f[p[t]].range+=`${a},`:h[t]?f[h[t]].start=a:m[t]&&(f[m[t]].range+=`${f[m[t]].start}-${a-1},`),d.splice(a,1)}n=d.join("\n");const g={};return Object.entries(f).forEach((e=>{let[t,{range:n}]=e;a()(n).forEach((e=>{g[e]??=[],g[e].push(t)}))})),{lineClassNames:g,code:n}}function p(e){const t={color:"--prism-color",backgroundColor:"--prism-background-color"},n={};return Object.entries(e.plain).forEach((e=>{let[r,a]=e;const o=t[r];o&&"string"==typeof a&&(n[o]=a)})),n}},53438:(e,t,n)=>{"use strict";n.d(t,{MN:()=>C,Wl:()=>m,_F:()=>y,cE:()=>f,em:()=>h,hI:()=>S,jA:()=>g,lO:()=>k,oz:()=>_,s1:()=>x,vY:()=>E,xz:()=>p});var r=n(67294),a=n(16550),o=n(18790),i=n(80143),l=n(60373),s=n(74477),u=n(1116),c=n(67392),d=n(48596);const f=!!i.useAllDocsData;function p(e){const t=(0,s.E)();if(!e)return;const n=t.docs[e];if(!n)throw new Error(`no version doc found by id=${e}`);return n}function h(e,t){for(const n of e)if("category"===n.type){if(t(n))return n;const e=h(n.items,t);if(e)return e}}function m(e){if(e.href)return e.href;for(const t of e.items){if("link"===t.type)return t.href;if("category"===t.type){const e=m(t);if(e)return e}}}function g(){const{pathname:e}=(0,a.TH)(),t=(0,u.V)();if(!t)throw new Error("Unexpected: cant find current sidebar in context");const n=w({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 v=(e,t)=>void 0!==e&&(0,d.Mg)(e,t),b=(e,t)=>e.some((e=>y(e,t)));function y(e,t){return"link"===e.type?v(e.href,t):"category"===e.type&&(v(e.href,t)||b(e.items,t))}function w(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.Mg)(o.href,n)||e(o.items))||"link"===o.type&&(0,d.Mg)(o.href,n)){return r&&"category"!==o.type||a.unshift(o),!0}return!1}(t),a}function x(){const e=(0,u.V)(),{pathname:t}=(0,a.TH)(),n=(0,i.useActivePlugin)()?.pluginData.breadcrumbs;return!1!==n&&e?w({sidebarItems:e.items,pathname:t}):null}function k(e){const{activeVersion:t}=(0,i.useActiveDocContext)(e),{preferredVersion:n}=(0,l.J)(e),a=(0,i.useLatestVersion)(e);return(0,r.useMemo)((()=>(0,c.j)([t,n,a].filter(Boolean))),[t,n,a])}function _(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return r[1]}),[e,n])}function E(e,t){const n=k(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- ${(0,c.j)(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function S(e){let{route:t,versionMetadata:n}=e;const r=(0,a.TH)(),i=t.routes,l=i.find((e=>(0,a.LX)(r.pathname,e)));if(!l)return null;const s=l.sidebar,u=s?n.docsSidebars[s]:void 0;return{docElement:(0,o.H)(i),sidebarName:s,sidebarItems:u}}function C(e){return e.filter((e=>"category"!==e.type||!!m(e)))}},69690:(e,t,n)=>{"use strict";n.d(t,{aG:()=>u,Cw:()=>s,QW:()=>c});var r=n(87462),a=n(67294),o=n(95999),i=n(18780);const l={errorBoundaryError:"errorBoundaryError_a6uf"};function s(e){return a.createElement("button",(0,r.Z)({type:"button"},e),a.createElement(o.default,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error"},"Try again"))}function u(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return a.createElement("p",{className:l.errorBoundaryError},n)}class c extends a.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}},42489:(e,t,n)=>{"use strict";function r(e){return"title"in e[0]}n.d(t,{a:()=>r})},82128:(e,t,n)=>{"use strict";n.d(t,{p:()=>a});var r=n(52263);function a(e){const{siteConfig:t}=(0,r.default)(),{title:n,titleDelimiter:a}=t;return e?.trim().length?`${e.trim()} ${a} ${n}`:n}},91980:(e,t,n)=>{"use strict";n.d(t,{Nc:()=>c,Rb:()=>l,_X:()=>u,xL:()=>s});var r=n(67294),a=n(16550),o=n(61688),i=n(902);function l(e){!function(e){const t=(0,a.k6)(),n=(0,i.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}function s(e){const t=(0,a.k6)();return(0,o.useSyncExternalStore)(t.listen,(()=>e(t)),(()=>e(t)))}function u(e){return s((t=>null===e?null:new URLSearchParams(t.location.search).get(e)))}function c(e){const t=u(e)??"",n=function(){const e=(0,a.k6)();return(0,r.useCallback)(((t,n,r)=>{const a=new URLSearchParams(e.location.search);n?a.set(t,n):a.delete(t),(r?.push?e.push:e.replace)({search:a.toString()})}),[e])}();return[t,(0,r.useCallback)(((t,r)=>{n(e,t,r)}),[n,e])]}},67392:(e,t,n)=>{"use strict";function r(e,t){return void 0===t&&(t=(e,t)=>e===t),e.filter(((n,r)=>e.findIndex((e=>t(e,n)))!==r))}function a(e){return Array.from(new Set(e))}n.d(t,{j:()=>a,l:()=>r})},10833:(e,t,n)=>{"use strict";n.d(t,{FG:()=>f,d:()=>c,VC:()=>p});var r=n(67294),a=n(86010),o=n(35742),i=n(30226);function l(){const e=r.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var s=n(44996),u=n(82128);function c(e){let{title:t,description:n,keywords:a,image:i,children:l}=e;const c=(0,u.p)(t),{withBaseUrl:d}=(0,s.useBaseUrlUtils)(),f=i?d(i,{absolute:!0}):void 0;return r.createElement(o.Z,null,t&&r.createElement("title",null,c),t&&r.createElement("meta",{property:"og:title",content:c}),n&&r.createElement("meta",{name:"description",content:n}),n&&r.createElement("meta",{property:"og:description",content:n}),a&&r.createElement("meta",{name:"keywords",content:Array.isArray(a)?a.join(","):a}),f&&r.createElement("meta",{property:"og:image",content:f}),f&&r.createElement("meta",{name:"twitter:image",content:f}),l)}const d=r.createContext(void 0);function f(e){let{className:t,children:n}=e;const i=r.useContext(d),l=(0,a.default)(i,t);return r.createElement(d.Provider,{value:l},r.createElement(o.Z,null,r.createElement("html",{className:l})),n)}function p(e){let{children:t}=e;const n=l(),o=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const i=`plugin-id-${n.plugin.id}`;return r.createElement(f,{className:(0,a.default)(o,i)},t)}},902:(e,t,n)=>{"use strict";n.d(t,{D9:()=>i,LI:()=>a,Qc:()=>u,Ql:()=>s,i6:()=>l,zX:()=>o});var r=n(67294);const a=n(10412).default.canUseDOM?r.useLayoutEffect:r.useEffect;function o(e){const t=(0,r.useRef)(e);return a((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function i(e){const t=(0,r.useRef)();return a((()=>{t.current=e})),t.current}class l extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?<name>\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function s(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 r.createElement(r.Fragment,null,e.reduceRight(((e,t)=>r.createElement(t,null,e)),n))}}},48596:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>i,Ns:()=>l});var r=n(67294),a=n(723),o=n(52263);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.default)().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.Z,baseUrl:e})),[e])}},12466:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>p,OC:()=>s,RF:()=>d,o5:()=>f,sG:()=>u});var r=n(67294),a=n(10412),o=n(72389),i=n(902);const l=r.createContext(void 0);function s(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 r.createElement(l.Provider,{value:n},t)}function u(){const e=(0,r.useContext)(l);if(null==e)throw new i.i6("ScrollControllerProvider");return e}const c=()=>a.default.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function d(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=u(),a=(0,r.useRef)(c()),o=(0,i.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=c();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 f(){const e=u(),t=function(){const e=(0,r.useRef)({elem:null,top:0}),t=(0,r.useCallback)((t=>{e.current={elem:t,top:t.getBoundingClientRect().top}}),[]),n=(0,r.useCallback)((()=>{const{current:{elem:t,top:n}}=e;if(!t)return{restored:!1};const r=t.getBoundingClientRect().top-n;return r&&window.scrollBy({left:0,top:r}),e.current={elem:null,top:0},{restored:0!==r}}),[]);return(0,r.useMemo)((()=>({save:t,restore:n})),[n,t])}(),n=(0,r.useRef)(void 0),a=(0,r.useCallback)((r=>{t.save(r),e.disableScrollEvents(),n.current=()=>{const{restored:r}=t.restore();if(n.current=void 0,r){const t=()=>{e.enableScrollEvents(),window.removeEventListener("scroll",t)};window.addEventListener("scroll",t)}else e.enableScrollEvents()}}),[e,t]);return(0,r.useLayoutEffect)((()=>{queueMicrotask((()=>n.current?.()))})),{blockElementScrollPositionUntilNextRender:a}}function p(){const e=(0,r.useRef)(null),t=(0,o.default)()&&"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&&a<e)&&(t=requestAnimationFrame(r),window.scrollTo(0,Math.floor(.85*(a-e))+e))}(),()=>t&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},43320:(e,t,n)=>{"use strict";n.d(t,{HX:()=>i,_q:()=>s,os:()=>l});var r=n(80143),a=n(52263),o=n(60373);const i="default";function l(e,t){return`docs-${e}-${t}`}function s(){const{i18n:e}=(0,a.default)(),t=(0,r.useAllDocsData)(),n=(0,r.useActivePluginAndVersion)(),s=(0,o.Oh)();const u=[i,...Object.keys(t).map((function(e){const r=n?.activePlugin.pluginId===e?n.activeVersion:void 0,a=s[e],o=t[e].versions.find((e=>e.isLast));return l(e,(r??a??o).name)}))];return{locale:e.currentLocale,tags:u}}},55225:(e,t,n)=>{"use strict";n.d(t,{l:()=>f,u:()=>s});var r=n(87462),a=n(67294),o=n(16550),i=n(95999),l=n(85936);const s="__docusaurus_skipToContent_fallback";function u(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function c(){const e=(0,a.useRef)(null),{action:t}=(0,o.k6)(),n=(0,a.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(s);t&&u(t)}),[]);return(0,l.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&u(e.current)})),{containerRef:e,onClick:n}}const d=(0,i.translate)({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 f(e){const t=e.children??d,{containerRef:n,onClick:o}=c();return a.createElement("div",{ref:n,role:"region","aria-label":d},a.createElement("a",(0,r.Z)({},e,{href:`#${s}`,onClick:o}),t))}},50012:(e,t,n)=>{"use strict";n.d(t,{Nk:()=>d,WA:()=>c,_f:()=>f});var r=n(67294),a=n(61688);const o="localStorage";function i(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 l(e){if(void 0===e&&(e=o),"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,s||(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),s=!0),null}var t}let s=!1;const u={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function c(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=l(t?.persistence);return null===n?u:{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),i({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),i({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),()=>{}}}}}function d(e,t){const n=(0,r.useRef)((()=>null===e?u:c(e,t))).current(),o=(0,r.useCallback)((e=>"undefined"==typeof window?()=>{}:n.listen(e)),[n]);return[(0,a.useSyncExternalStore)(o,(()=>"undefined"==typeof window?null:n.get()),(()=>null)),n]}function f(e){void 0===e&&(e=o);const t=l(e);if(!t)return[];const n=[];for(let r=0;r<t.length;r+=1){const e=t.key(r);null!==e&&n.push(e)}return n}},70989:(e,t,n)=>{"use strict";n.d(t,{Y:()=>f});var r=n(67294),a=n(16550),o=n(91980),i=n(67392),l=n(50012);function s(e){return function(e){return r.Children.map(e,(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:a}}=e;return{value:t,label:n,attributes:r,default:a}}))}function u(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??s(n);return function(e){const t=(0,i.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[t,n])}function c(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function d(e){let{queryString:t=!1,groupId:n}=e;const i=(0,a.k6)(),l=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,o._X)(l),(0,r.useCallback)((e=>{if(!l)return;const t=new URLSearchParams(i.location.search);t.set(l,e),i.replace({...i.location,search:t.toString()})}),[l,i])]}function f(e){const{defaultValue:t,queryString:n=!1,groupId:a}=e,o=u(e),[i,s]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(t){if(!c({value:t,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:o}))),[f,p]=d({queryString:n,groupId:a}),[h,m]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[a,o]=(0,l.Nk)(n);return[a,(0,r.useCallback)((e=>{n&&o.set(e)}),[n,o])]}({groupId:a}),g=(()=>{const e=f??h;return c({value:e,tabValues:o})?e:null})();(0,r.useLayoutEffect)((()=>{g&&s(g)}),[g]);return{selectedValue:i,selectValue:(0,r.useCallback)((e=>{if(!c({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);s(e),p(e),m(e)}),[p,m,o]),tabValues:o}}},39665:(e,t,n)=>{"use strict";n.d(t,{a:()=>o,b:()=>l});var r=n(67294);function a(e){const t=e.map((e=>({...e,parentIndex:-1,children:[]}))),n=Array(7).fill(-1);t.forEach(((e,t)=>{const r=n.slice(2,e.level);e.parentIndex=Math.max(...r),n[e.level]=t}));const r=[];return t.forEach((e=>{const{parentIndex:n,...a}=e;n>=0?t[n].children.push(a):r.push(a)})),r}function o(e){return(0,r.useMemo)((()=>a(e)),[e])}function i(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:r}=e;return t.flatMap((e=>{const t=i({toc:e.children,minHeadingLevel:n,maxHeadingLevel:r});return function(e){return e.level>=n&&e.level<=r}(e)?[{...e,children:t}]:t}))}function l(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:o}=e;return(0,r.useMemo)((()=>i({toc:a(t),minHeadingLevel:n,maxHeadingLevel:o})),[t,n,o])}},94711:(e,t,n)=>{"use strict";n.d(t,{l:()=>o});var r=n(52263),a=n(16550);function o(){const{siteConfig:{baseUrl:e,url:t},i18n:{defaultLocale:n,currentLocale:o}}=(0,r.default)(),{pathname:i}=(0,a.TH)(),l=o===n?e:e.replace(`/${o}/`,"/"),s=i.replace(e,"");return{createUrl:function(e){let{locale:r,fullyQualified:a}=e;return`${a?t:""}${function(e){return e===n?`${l}`:`${l}${e}/`}(r)}${s}`}}}},85936:(e,t,n)=>{"use strict";n.d(t,{S:()=>i});var r=n(67294),a=n(16550),o=n(902);function i(e){const t=(0,a.TH)(),n=(0,o.D9)(t),i=(0,o.zX)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},86668:(e,t,n)=>{"use strict";n.d(t,{L:()=>a});var r=n(52263);function a(){return(0,r.default)().siteConfig.themeConfig}},8802:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[a]=e.split(/[#?]/),o="/"===a||a===r?a:(i=a,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(a,o)}},54143:(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]}},18780: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.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var a=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}});var o=n(54143);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return o.getErrorCausalChain}})},90022:(e,t,n)=>{"use strict";n.r(t),n.d(t,{fetchIndexes:()=>l,legacyFetchIndexes:()=>s});var r=n(31336),a=n.n(r),o=n(61029);const i=new Map;function l(e,t){const n=`${e}${t}`;let r=i.get(n);return r||(r=s(e,t),i.set(n,r)),r}async function s(e,t){{const n=`${e}${o.searchIndexUrl.replace("{dir}",t?`-${t.replace(/\//g,"-")}`:"")}`;if(new URL(n,location.origin).origin!==location.origin)throw new Error("Unexpected version url");const r=await(await fetch(n)).json(),i=r.map(((e,t)=>{let{documents:n,index:r}=e;return{type:t,documents:n,index:a().Index.load(r)}})),l=r.reduce(((e,t)=>{for(const n of t.index.invertedIndex)/\p{Unified_Ideograph}/u.test(n[0][0])&&e.add(n[0]);return e}),new Set);return{wrappedIndexes:i,zhDictionary:Array.from(l)}}}},98202:(e,t,n)=>{"use strict";n.r(t),n.d(t,{SearchSourceFactory:()=>s});var r=n(31336),a=n.n(r);var o=n(61029);function i(e){return l(e).concat(l(e.filter((e=>{const t=e[e.length-1];return!t.trailing&&t.maybeTyping})),!0))}function l(e,t){return e.map((e=>({tokens:e.map((e=>e.value)),term:e.map((e=>({value:e.value,presence:a().Query.presence.REQUIRED,wildcard:(t?e.trailing||e.maybeTyping:e.trailing)?a().Query.wildcard.TRAILING:a().Query.wildcard.NONE})))})))}function s(e,t,n){return function(r,l){const s=function(e,t){if(1===t.length&&["ja","jp","th"].includes(t[0]))return a()[t[0]].tokenizer(e).map((e=>e.toString()));let n=/[^-\s]+/g;return t.includes("zh")&&(n=/\w+|\p{Unified_Ideograph}+/gu),e.toLowerCase().match(n)||[]}(r,o.language);if(0===s.length)return void l([]);const u=function(e,t){const n=function(e,t){const n=[];return function e(r,a){if(0===r.length)return void n.push(a);const o=r[0];if(/\p{Unified_Ideograph}/u.test(o)){const n=function(e,t){const n=[];return function e(r,a){let o=0,i=!1;for(const l of t)if(r.substr(0,l.length)===l){const t={missed:a.missed,term:a.term.concat({value:l})};r.length>l.length?e(r.substr(l.length),t):n.push(t),i=!0}else for(let t=l.length-1;t>o;t-=1){const s=l.substr(0,t);if(r.substr(0,t)===s){o=t;const l={missed:a.missed,term:a.term.concat({value:s,trailing:!0})};r.length>t?e(r.substr(t),l):n.push(l),i=!0;break}}i||(r.length>0?e(r.substr(1),{missed:a.missed+1,term:a.term}):a.term.length>0&&n.push(a))}(e,{missed:0,term:[]}),n.sort(((e,t)=>{const n=e.missed>0?1:0,r=t.missed>0?1:0;return n!==r?n-r:e.term.length-t.term.length})).map((e=>e.term))}(o,t);for(const t of n){const n=a.concat(...t);e(r.slice(1),n)}}else{const t=a.concat({value:o});e(r.slice(1),t)}}(e,[]),n}(e,t);if(0===n.length)return[{tokens:e,term:e.map((e=>({value:e,presence:a().Query.presence.REQUIRED,wildcard:a().Query.wildcard.LEADING|a().Query.wildcard.TRAILING})))}];for(const a of n)a[a.length-1].maybeTyping=!0;const r=[];for(const i of o.language)if("en"===i)o.removeDefaultStopWordFilter||r.unshift(a().stopWordFilter);else{const e=a()[i];e.stopWordFilter&&r.unshift(e.stopWordFilter)}let l;if(r.length>0){const e=e=>r.reduce(((e,t)=>e.filter((e=>t(e.value)))),e);l=[];const t=[];for(const r of n){const n=e(r);l.push(n),n.length<r.length&&n.length>0&&t.push(n)}n.push(...t)}else l=n.slice();const s=[];for(const a of l)if(a.length>2)for(let e=a.length-1;e>=0;e-=1)s.push(a.slice(0,e).concat(a.slice(e+1)));return i(n).concat(i(s))}(s,t),c=[];e:for(const{term:t,tokens:a}of u)for(const{documents:r,index:o,type:i}of e)if(c.push(...o.query((e=>{for(const n of t)e.term(n.value,{wildcard:n.wildcard,presence:n.presence})})).slice(0,n).filter((e=>!c.some((t=>t.document.i.toString()===e.ref)))).slice(0,n-c.length).map((t=>{const n=r.find((e=>e.i.toString()===t.ref));return{document:n,type:i,page:0!==i&&e[0].documents.find((e=>e.i===n.p)),metadata:t.matchData.metadata,tokens:a,score:t.score}}))),c.length>=n)break e;!function(e){e.forEach(((e,t)=>{e.index=t})),e.sort(((t,n)=>{let r=t.type>0&&t.page?e.findIndex((e=>e.document===t.page)):t.index,a=n.type>0&&n.page?e.findIndex((e=>e.document===n.page)):n.index;return-1===r&&(r=t.index),-1===a&&(a=n.index),r===a?0===t.type?-1:0===n.type?1:t.index-n.index:r-a}))}(c),function(e){e.forEach(((t,n)=>{n>0&&t.page&&e.some((e=>e.document===t.page))&&(n<e.length-1&&e[n+1].page===t.page?t.isInterOfTree=!0:t.isLastOfTree=!0)}))}(c),l(c)}}},91073:(e,t,n)=>{"use strict";function r(e,t){const n=[];for(const r of Object.values(e))r[t]&&n.push(...r[t].position);return n.sort(((e,t)=>e[0]-t[0]||t[1]-e[1]))}n.r(t),n.d(t,{getStemmedPositions:()=>r})},67133:(e,t,n)=>{"use strict";function r(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function a(e,t,n){const o=[];for(const i of t){const n=e.toLowerCase().indexOf(i);if(n>=0){n>0&&o.push(a(e.substr(0,n),t)),o.push(`<mark>${r(e.substr(n,i.length))}</mark>`);const l=n+i.length;l<e.length&&o.push(a(e.substr(l),t));break}}return 0===o.length?n?`<mark>${r(e)}</mark>`:r(e):o.join("")}n.r(t),n.d(t,{highlightStemmed:()=>s,splitIntoChunks:()=>u});const o=/\w+|\p{Unified_Ideograph}/u;function i(e){const t=[];let n=0,r=e;for(;r.length>0;){const a=r.match(o);if(!a){t.push(r);break}a.index>0&&t.push(r.substring(0,a.index)),t.push(a[0]),n+=a.index+a[0].length,r=e.substring(n)}return t}var l=n(61029);function s(e,t,n,r){void 0===r&&(r=l.searchResultContextMaxLength);const{chunkIndex:a,chunks:o}=u(e,t,n),i=o.slice(0,a),s=o[a],c=[s.html],d=o.slice(a+1);let f=s.textLength,p=0,h=0,m=!1,g=!1;for(;f<r;)if((p<=h||0===d.length)&&i.length>0){const e=i.pop();f+e.textLength<=r?(c.unshift(e.html),p+=e.textLength,f+=e.textLength):(m=!0,i.length=0)}else{if(!(d.length>0))break;{const e=d.shift();f+e.textLength<=r?(c.push(e.html),h+=e.textLength,f+=e.textLength):(g=!0,d.length=0)}}return(m||i.length>0)&&c.unshift("\u2026"),(g||d.length>0)&&c.push("\u2026"),c.join("")}function u(e,t,n){const o=[];let l=0,s=0,u=-1;for(;l<t.length;){const[c,d]=t[l];if(l+=1,!(c<s)){if(c>s){const t=i(e.substring(s,c)).map((e=>({html:r(e),textLength:e.length})));for(const e of t)o.push(e)}-1===u&&(u=o.length),s=c+d,o.push({html:a(e.substring(c,s),n,!0),textLength:d})}}if(s<e.length){const t=i(e.substring(s)).map((e=>({html:r(e),textLength:e.length})));for(const e of t)o.push(e)}return{chunkIndex:u,chunks:o}}},61029:(e,t,n)=>{"use strict";n.r(t),n.d(t,{Mark:()=>i,docsPluginIdForPreferredVersion:()=>h,explicitSearchResultPath:()=>c,hideSearchBarWithNoSearchContext:()=>v,indexDocs:()=>m,language:()=>r,removeDefaultStemmer:()=>o,removeDefaultStopWordFilter:()=>a,searchBarPosition:()=>p,searchBarShortcut:()=>d,searchBarShortcutHint:()=>f,searchContextByPaths:()=>g,searchIndexUrl:()=>l,searchResultContextMaxLength:()=>u,searchResultLimits:()=>s});n(31336);const r=["en"],a=!1,o=!1,i=null,l="search-index{dir}.json?_=708e85f1",s=8,u=50,c=!1,d=!0,f=!0,p="right",h=void 0,m=!0,g=null,v=!1},86010:(e,t,n)=>{"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(n=r(e[t]))&&(a&&(a+=" "),a+=n);else for(t in e)e[t]&&(a&&(a+=" "),a+=t);return a}function a(){for(var e,t,n=0,a="";n<arguments.length;)(e=arguments[n++])&&(t=r(e))&&(a&&(a+=" "),a+=t);return a}n.r(t),n.d(t,{clsx:()=>a,default:()=>o});const o=a},20640:(e,t,n)=>{"use strict";var r=n(11742),a={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var n,o,i,l,s,u,c=!1;t||(t={}),n=t.debug||!1;try{if(i=r(),l=document.createRange(),s=document.getSelection(),(u=document.createElement("span")).textContent=e,u.ariaHidden="true",u.style.all="unset",u.style.position="fixed",u.style.top=0,u.style.clip="rect(0, 0, 0, 0)",u.style.whiteSpace="pre",u.style.webkitUserSelect="text",u.style.MozUserSelect="text",u.style.msUserSelect="text",u.style.userSelect="text",u.addEventListener("copy",(function(r){if(r.stopPropagation(),t.format)if(r.preventDefault(),void 0===r.clipboardData){n&&console.warn("unable to use e.clipboardData"),n&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var o=a[t.format]||a.default;window.clipboardData.setData(o,e)}else r.clipboardData.clearData(),r.clipboardData.setData(t.format,e);t.onCopy&&(r.preventDefault(),t.onCopy(r.clipboardData))})),document.body.appendChild(u),l.selectNodeContents(u),s.addRange(l),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");c=!0}catch(d){n&&console.error("unable to copy using execCommand: ",d),n&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),c=!0}catch(d){n&&console.error("unable to copy using clipboardData: ",d),n&&console.error("falling back to prompt"),o=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"\u2318":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:"Copy to clipboard: #{key}, Enter"),window.prompt(o,e)}}finally{s&&("function"==typeof s.removeRange?s.removeRange(l):s.removeAllRanges()),u&&document.body.removeChild(u),i()}return c}},38252:e=>{"use strict";e.exports=function e(t,n){if(t===n)return!0;if(t&&n&&"object"==typeof t&&"object"==typeof n){if(t.constructor!==n.constructor)return!1;var r,a,o;if(Array.isArray(t)){if((r=t.length)!=n.length)return!1;for(a=r;0!=a--;)if(!e(t[a],n[a]))return!1;return!0}if(t.constructor===RegExp)return t.source===n.source&&t.flags===n.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===n.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===n.toString();if((r=(o=Object.keys(t)).length)!==Object.keys(n).length)return!1;for(a=r;0!=a--;)if(!Object.prototype.hasOwnProperty.call(n,o[a]))return!1;for(a=r;0!=a--;){var i=o[a];if(("_owner"!==i||!t.$$typeof)&&!e(t[i],n[i]))return!1}return!0}return t!=t&&n!=n}},99376:(e,t)=>{var n=Object.keys;t.D=function(e,t){if(e===t)return!0;if(!(e instanceof Object&&t instanceof Object))return!1;for(var r=n(e),a=r.length,o=0;o<a;o++)if(!(r[o]in t))return!1;for(o=0;o<a;o++)if(e[r[o]]!==t[r[o]])return!1;return a===n(t).length}},42358:(e,t,n)=>{"use strict";n.d(t,{lX:()=>_,q_:()=>D,ob:()=>m,PP:()=>N,Ep:()=>h,Hp:()=>g});var r=n(87462);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r<a;n+=1,r+=1)e[n]=e[r];e.pop()}const i=function(e,t){void 0===t&&(t="");var n,r=e&&e.split("/")||[],i=t&&t.split("/")||[],l=e&&a(e),s=t&&a(t),u=l||s;if(e&&a(e)?i=r:r.length&&(i.pop(),i=i.concat(r)),!i.length)return"/";if(i.length){var c=i[i.length-1];n="."===c||".."===c||""===c}else n=!1;for(var d=0,f=i.length;f>=0;f--){var p=i[f];"."===p?o(i,f):".."===p?(o(i,f),d++):d&&(o(i,f),d--)}if(!u)for(;d--;d)i.unshift("..");!u||""===i[0]||i[0]&&a(i[0])||i.unshift("");var h=i.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h};function l(e){return e.valueOf?e.valueOf():Object.prototype.valueOf.call(e)}const s=function e(t,n){if(t===n)return!0;if(null==t||null==n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every((function(t,r){return e(t,n[r])}));if("object"==typeof t||"object"==typeof n){var r=l(t),a=l(n);return r!==t||a!==n?e(r,a):Object.keys(Object.assign({},t,n)).every((function(r){return e(t[r],n[r])}))}return!1};var u=n(38776);function c(e){return"/"===e.charAt(0)?e:"/"+e}function d(e){return"/"===e.charAt(0)?e.substr(1):e}function f(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 p(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function h(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 m(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.Z)({},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 g(e,t){return e.pathname===t.pathname&&e.search===t.search&&e.hash===t.hash&&e.key===t.key&&s(e.state,t.state)}function v(){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;r<e;r++)n[r]=arguments[r];t.forEach((function(e){return e.apply(void 0,n)}))}}}var b=!("undefined"==typeof window||!window.document||!window.document.createElement);function y(e,t){t(window.confirm(e))}var w="popstate",x="hashchange";function k(){try{return window.history.state||{}}catch(e){return{}}}function _(e){void 0===e&&(e={}),b||(0,u.Z)(!1);var t,n=window.history,a=(-1===(t=window.navigator.userAgent).indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history,o=!(-1===window.navigator.userAgent.indexOf("Trident")),i=e,l=i.forceRefresh,s=void 0!==l&&l,d=i.getUserConfirmation,g=void 0===d?y:d,_=i.keyLength,E=void 0===_?6:_,S=e.basename?p(c(e.basename)):"";function C(e){var t=e||{},n=t.key,r=t.state,a=window.location,o=a.pathname+a.search+a.hash;return S&&(o=f(o,S)),m(o,r,n)}function T(){return Math.random().toString(36).substr(2,E)}var O=v();function D(e){(0,r.Z)($,e),$.length=n.length,O.notifyListeners($.location,$.action)}function P(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||A(C(e.state))}function N(){A(C(k()))}var I=!1;function A(e){if(I)I=!1,D();else{O.confirmTransitionTo(e,"POP",g,(function(t){t?D({action:"POP",location:e}):function(e){var t=$.location,n=R.indexOf(t.key);-1===n&&(n=0);var r=R.indexOf(e.key);-1===r&&(r=0);var a=n-r;a&&(I=!0,M(a))}(e)}))}}var L=C(k()),R=[L.key];function j(e){return S+h(e)}function M(e){n.go(e)}var F=0;function B(e){1===(F+=e)&&1===e?(window.addEventListener(w,P),o&&window.addEventListener(x,N)):0===F&&(window.removeEventListener(w,P),o&&window.removeEventListener(x,N))}var z=!1;var $={length:n.length,action:"POP",location:L,createHref:j,push:function(e,t){var r="PUSH",o=m(e,t,T(),$.location);O.confirmTransitionTo(o,r,g,(function(e){if(e){var t=j(o),i=o.key,l=o.state;if(a)if(n.pushState({key:i,state:l},null,t),s)window.location.href=t;else{var u=R.indexOf($.location.key),c=R.slice(0,u+1);c.push(o.key),R=c,D({action:r,location:o})}else window.location.href=t}}))},replace:function(e,t){var r="REPLACE",o=m(e,t,T(),$.location);O.confirmTransitionTo(o,r,g,(function(e){if(e){var t=j(o),i=o.key,l=o.state;if(a)if(n.replaceState({key:i,state:l},null,t),s)window.location.replace(t);else{var u=R.indexOf($.location.key);-1!==u&&(R[u]=o.key),D({action:r,location:o})}else window.location.replace(t)}}))},go:M,goBack:function(){M(-1)},goForward:function(){M(1)},block:function(e){void 0===e&&(e=!1);var t=O.setPrompt(e);return z||(B(1),z=!0),function(){return z&&(z=!1,B(-1)),t()}},listen:function(e){var t=O.appendListener(e);return B(1),function(){B(-1),t()}}};return $}var E="hashchange",S={hashbang:{encodePath:function(e){return"!"===e.charAt(0)?e:"!/"+d(e)},decodePath:function(e){return"!"===e.charAt(0)?e.substr(1):e}},noslash:{encodePath:d,decodePath:c},slash:{encodePath:c,decodePath:c}};function C(e){var t=e.indexOf("#");return-1===t?e:e.slice(0,t)}function T(){var e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)}function O(e){window.location.replace(C(window.location.href)+"#"+e)}function D(e){void 0===e&&(e={}),b||(0,u.Z)(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),a=n.getUserConfirmation,o=void 0===a?y:a,i=n.hashType,l=void 0===i?"slash":i,s=e.basename?p(c(e.basename)):"",d=S[l],g=d.encodePath,w=d.decodePath;function x(){var e=w(T());return s&&(e=f(e,s)),m(e)}var k=v();function _(e){(0,r.Z)(z,e),z.length=t.length,k.notifyListeners(z.location,z.action)}var D=!1,P=null;function N(){var e,t,n=T(),r=g(n);if(n!==r)O(r);else{var a=x(),i=z.location;if(!D&&(t=a,(e=i).pathname===t.pathname&&e.search===t.search&&e.hash===t.hash))return;if(P===h(a))return;P=null,function(e){if(D)D=!1,_();else{var t="POP";k.confirmTransitionTo(e,t,o,(function(n){n?_({action:t,location:e}):function(e){var t=z.location,n=R.lastIndexOf(h(t));-1===n&&(n=0);var r=R.lastIndexOf(h(e));-1===r&&(r=0);var a=n-r;a&&(D=!0,j(a))}(e)}))}}(a)}}var I=T(),A=g(I);I!==A&&O(A);var L=x(),R=[h(L)];function j(e){t.go(e)}var M=0;function F(e){1===(M+=e)&&1===e?window.addEventListener(E,N):0===M&&window.removeEventListener(E,N)}var B=!1;var z={length:t.length,action:"POP",location:L,createHref:function(e){var t=document.querySelector("base"),n="";return t&&t.getAttribute("href")&&(n=C(window.location.href)),n+"#"+g(s+h(e))},push:function(e,t){var n="PUSH",r=m(e,void 0,void 0,z.location);k.confirmTransitionTo(r,n,o,(function(e){if(e){var t=h(r),a=g(s+t);if(T()!==a){P=t,function(e){window.location.hash=e}(a);var o=R.lastIndexOf(h(z.location)),i=R.slice(0,o+1);i.push(t),R=i,_({action:n,location:r})}else _()}}))},replace:function(e,t){var n="REPLACE",r=m(e,void 0,void 0,z.location);k.confirmTransitionTo(r,n,o,(function(e){if(e){var t=h(r),a=g(s+t);T()!==a&&(P=t,O(a));var o=R.indexOf(h(z.location));-1!==o&&(R[o]=t),_({action:n,location:r})}}))},go:j,goBack:function(){j(-1)},goForward:function(){j(1)},block:function(e){void 0===e&&(e=!1);var t=k.setPrompt(e);return B||(F(1),B=!0),function(){return B&&(B=!1,F(-1)),t()}},listen:function(e){var t=k.appendListener(e);return F(1),function(){F(-1),t()}}};return z}function P(e,t,n){return Math.min(Math.max(e,t),n)}function N(e){void 0===e&&(e={});var t=e,n=t.getUserConfirmation,a=t.initialEntries,o=void 0===a?["/"]:a,i=t.initialIndex,l=void 0===i?0:i,s=t.keyLength,u=void 0===s?6:s,c=v();function d(e){(0,r.Z)(w,e),w.length=w.entries.length,c.notifyListeners(w.location,w.action)}function f(){return Math.random().toString(36).substr(2,u)}var p=P(l,0,o.length-1),g=o.map((function(e){return m(e,void 0,"string"==typeof e?f():e.key||f())})),b=h;function y(e){var t=P(w.index+e,0,w.entries.length-1),r=w.entries[t];c.confirmTransitionTo(r,"POP",n,(function(e){e?d({action:"POP",location:r,index:t}):d()}))}var w={length:g.length,action:"POP",location:g[p],index:p,entries:g,createHref:b,push:function(e,t){var r="PUSH",a=m(e,t,f(),w.location);c.confirmTransitionTo(a,r,n,(function(e){if(e){var t=w.index+1,n=w.entries.slice(0);n.length>t?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=m(e,t,f(),w.location);c.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},go:y,goBack:function(){y(-1)},goForward:function(){y(1)},canGo:function(e){var t=w.index+e;return t>=0&&t<w.entries.length},block:function(e){return void 0===e&&(e=!1),c.setPrompt(e)},listen:function(e){return c.appendListener(e)}};return w}},8679:(e,t,n)=>{"use strict";var r=n(59864),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 u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,h=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(h){var a=p(n);a&&a!==h&&e(t,a,r)}var i=c(n);d&&(i=i.concat(d(n)));for(var l=s(t),m=s(n),g=0;g<i.length;++g){var v=i[g];if(!(o[v]||r&&r[v]||m&&m[v]||l&&l[v])){var b=f(n,v);try{u(t,v,b)}catch(y){}}}}return t}},41143:e=>{"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 u=[n,r,a,o,i,l],c=0;(s=new Error(t.replace(/%s/g,(function(){return u[c++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},5826:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},36808:(e,t,n)=>{var r,a;!function(o){if(void 0===(a="function"==typeof(r=o)?r.call(t,n,t,e):r)||(e.exports=a),!0,e.exports=o(),!!0){var i=window.Cookies,l=window.Cookies=o();l.noConflict=function(){return window.Cookies=i,l}}}((function(){function e(){for(var e=0,t={};e<arguments.length;e++){var n=arguments[e];for(var r in n)t[r]=n[r]}return t}function t(e){return e.replace(/(%[0-9A-Z]{2})+/g,decodeURIComponent)}return function n(r){function a(){}function o(t,n,o){if("undefined"!=typeof document){"number"==typeof(o=e({path:"/"},a.defaults,o)).expires&&(o.expires=new Date(1*new Date+864e5*o.expires)),o.expires=o.expires?o.expires.toUTCString():"";try{var i=JSON.stringify(n);/^[\{\[]/.test(i)&&(n=i)}catch(u){}n=r.write?r.write(n,t):encodeURIComponent(String(n)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,decodeURIComponent),t=encodeURIComponent(String(t)).replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent).replace(/[\(\)]/g,escape);var l="";for(var s in o)o[s]&&(l+="; "+s,!0!==o[s]&&(l+="="+o[s].split(";")[0]));return document.cookie=t+"="+n+l}}function i(e,n){if("undefined"!=typeof document){for(var a={},o=document.cookie?document.cookie.split("; "):[],i=0;i<o.length;i++){var l=o[i].split("="),s=l.slice(1).join("=");n||'"'!==s.charAt(0)||(s=s.slice(1,-1));try{var u=t(l[0]);if(s=(r.read||r)(s,u)||t(s),n)try{s=JSON.parse(s)}catch(c){}if(a[u]=s,e===u)break}catch(c){}}return e?a[e]:a}}return a.set=o,a.get=function(e){return i(e,!1)},a.getJSON=function(e){return i(e,!0)},a.remove=function(t,n){o(t,"",e(n,{expires:-1}))},a.defaults={},a.withConverter=n,a}((function(){}))}))},18552:(e,t,n)=>{var r=n(10852)(n(55639),"DataView");e.exports=r},1989:(e,t,n)=>{var r=n(51789),a=n(80401),o=n(57667),i=n(21327),l=n(81866);function s(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}s.prototype.clear=r,s.prototype.delete=a,s.prototype.get=o,s.prototype.has=i,s.prototype.set=l,e.exports=s},38407:(e,t,n)=>{var r=n(27040),a=n(14125),o=n(82117),i=n(67518),l=n(54705);function s(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}s.prototype.clear=r,s.prototype.delete=a,s.prototype.get=o,s.prototype.has=i,s.prototype.set=l,e.exports=s},57071:(e,t,n)=>{var r=n(10852)(n(55639),"Map");e.exports=r},83369:(e,t,n)=>{var r=n(24785),a=n(11285),o=n(96e3),i=n(49916),l=n(95265);function s(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}s.prototype.clear=r,s.prototype.delete=a,s.prototype.get=o,s.prototype.has=i,s.prototype.set=l,e.exports=s},53818:(e,t,n)=>{var r=n(10852)(n(55639),"Promise");e.exports=r},58525:(e,t,n)=>{var r=n(10852)(n(55639),"Set");e.exports=r},88668:(e,t,n)=>{var r=n(83369),a=n(90619),o=n(72385);function i(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new r;++t<n;)this.add(e[t])}i.prototype.add=i.prototype.push=a,i.prototype.has=o,e.exports=i},46384:(e,t,n)=>{var r=n(38407),a=n(37465),o=n(63779),i=n(67599),l=n(44758),s=n(34309);function u(e){var t=this.__data__=new r(e);this.size=t.size}u.prototype.clear=a,u.prototype.delete=o,u.prototype.get=i,u.prototype.has=l,u.prototype.set=s,e.exports=u},62705:(e,t,n)=>{var r=n(55639).Symbol;e.exports=r},11149:(e,t,n)=>{var r=n(55639).Uint8Array;e.exports=r},70577:(e,t,n)=>{var r=n(10852)(n(55639),"WeakMap");e.exports=r},96874:e=>{e.exports=function(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}},44174:e=>{e.exports=function(e,t,n,r){for(var a=-1,o=null==e?0:e.length;++a<o;){var i=e[a];t(r,i,n(i),e)}return r}},77412:e=>{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length;++n<r&&!1!==t(e[n],n,e););return e}},34963:e=>{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,a=0,o=[];++n<r;){var i=e[n];t(i,n,e)&&(o[a++]=i)}return o}},14636:(e,t,n)=>{var r=n(22545),a=n(35694),o=n(1469),i=n(44144),l=n(65776),s=n(36719),u=Object.prototype.hasOwnProperty;e.exports=function(e,t){var n=o(e),c=!n&&a(e),d=!n&&!c&&i(e),f=!n&&!c&&!d&&s(e),p=n||c||d||f,h=p?r(e.length,String):[],m=h.length;for(var g in e)!t&&!u.call(e,g)||p&&("length"==g||d&&("offset"==g||"parent"==g)||f&&("buffer"==g||"byteLength"==g||"byteOffset"==g)||l(g,m))||h.push(g);return h}},29932:e=>{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,a=Array(r);++n<r;)a[n]=t(e[n],n,e);return a}},62488:e=>{e.exports=function(e,t){for(var n=-1,r=t.length,a=e.length;++n<r;)e[a+n]=t[n];return e}},82908:e=>{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length;++n<r;)if(t(e[n],n,e))return!0;return!1}},34865:(e,t,n)=>{var r=n(89465),a=n(77813),o=Object.prototype.hasOwnProperty;e.exports=function(e,t,n){var i=e[t];o.call(e,t)&&a(i,n)&&(void 0!==n||t in e)||r(e,t,n)}},18470:(e,t,n)=>{var r=n(77813);e.exports=function(e,t){for(var n=e.length;n--;)if(r(e[n][0],t))return n;return-1}},81119:(e,t,n)=>{var r=n(89881);e.exports=function(e,t,n,a){return r(e,(function(e,r,o){t(a,e,n(e),o)})),a}},44037:(e,t,n)=>{var r=n(98363),a=n(3674);e.exports=function(e,t){return e&&r(t,a(t),e)}},63886:(e,t,n)=>{var r=n(98363),a=n(81704);e.exports=function(e,t){return e&&r(t,a(t),e)}},89465:(e,t,n)=>{var r=n(38777);e.exports=function(e,t,n){"__proto__"==t&&r?r(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}},85990:(e,t,n)=>{var r=n(46384),a=n(77412),o=n(34865),i=n(44037),l=n(63886),s=n(64626),u=n(278),c=n(18805),d=n(1911),f=n(58234),p=n(46904),h=n(64160),m=n(43824),g=n(29148),v=n(38517),b=n(1469),y=n(44144),w=n(56688),x=n(13218),k=n(72928),_=n(3674),E=n(81704),S="[object Arguments]",C="[object Function]",T="[object Object]",O={};O[S]=O["[object Array]"]=O["[object ArrayBuffer]"]=O["[object DataView]"]=O["[object Boolean]"]=O["[object Date]"]=O["[object Float32Array]"]=O["[object Float64Array]"]=O["[object Int8Array]"]=O["[object Int16Array]"]=O["[object Int32Array]"]=O["[object Map]"]=O["[object Number]"]=O[T]=O["[object RegExp]"]=O["[object Set]"]=O["[object String]"]=O["[object Symbol]"]=O["[object Uint8Array]"]=O["[object Uint8ClampedArray]"]=O["[object Uint16Array]"]=O["[object Uint32Array]"]=!0,O["[object Error]"]=O[C]=O["[object WeakMap]"]=!1,e.exports=function e(t,n,D,P,N,I){var A,L=1&n,R=2&n,j=4&n;if(D&&(A=N?D(t,P,N,I):D(t)),void 0!==A)return A;if(!x(t))return t;var M=b(t);if(M){if(A=m(t),!L)return u(t,A)}else{var F=h(t),B=F==C||"[object GeneratorFunction]"==F;if(y(t))return s(t,L);if(F==T||F==S||B&&!N){if(A=R||B?{}:v(t),!L)return R?d(t,l(A,t)):c(t,i(A,t))}else{if(!O[F])return N?t:{};A=g(t,F,L)}}I||(I=new r);var z=I.get(t);if(z)return z;I.set(t,A),k(t)?t.forEach((function(r){A.add(e(r,n,D,r,t,I))})):w(t)&&t.forEach((function(r,a){A.set(a,e(r,n,D,a,t,I))}));var $=M?void 0:(j?R?p:f:R?E:_)(t);return a($||t,(function(r,a){$&&(r=t[a=r]),o(A,a,e(r,n,D,a,t,I))})),A}},3118:(e,t,n)=>{var r=n(13218),a=Object.create,o=function(){function e(){}return function(t){if(!r(t))return{};if(a)return a(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();e.exports=o},89881:(e,t,n)=>{var r=n(47816),a=n(99291)(r);e.exports=a},21078:(e,t,n)=>{var r=n(62488),a=n(37285);e.exports=function e(t,n,o,i,l){var s=-1,u=t.length;for(o||(o=a),l||(l=[]);++s<u;){var c=t[s];n>0&&o(c)?n>1?e(c,n-1,o,i,l):r(l,c):i||(l[l.length]=c)}return l}},28483:(e,t,n)=>{var r=n(25063)();e.exports=r},47816:(e,t,n)=>{var r=n(28483),a=n(3674);e.exports=function(e,t){return e&&r(e,t,a)}},97786:(e,t,n)=>{var r=n(71811),a=n(40327);e.exports=function(e,t){for(var n=0,o=(t=r(t,e)).length;null!=e&&n<o;)e=e[a(t[n++])];return n&&n==o?e:void 0}},68866:(e,t,n)=>{var r=n(62488),a=n(1469);e.exports=function(e,t,n){var o=t(e);return a(e)?o:r(o,n(e))}},44239:(e,t,n)=>{var r=n(62705),a=n(89607),o=n(2333),i=r?r.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":i&&i in Object(e)?a(e):o(e)}},13:e=>{e.exports=function(e,t){return null!=e&&t in Object(e)}},9454:(e,t,n)=>{var r=n(44239),a=n(37005);e.exports=function(e){return a(e)&&"[object Arguments]"==r(e)}},90939:(e,t,n)=>{var r=n(2492),a=n(37005);e.exports=function e(t,n,o,i,l){return t===n||(null==t||null==n||!a(t)&&!a(n)?t!=t&&n!=n:r(t,n,o,i,e,l))}},2492:(e,t,n)=>{var r=n(46384),a=n(67114),o=n(18351),i=n(16096),l=n(64160),s=n(1469),u=n(44144),c=n(36719),d="[object Arguments]",f="[object Array]",p="[object Object]",h=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,m,g,v){var b=s(e),y=s(t),w=b?f:l(e),x=y?f:l(t),k=(w=w==d?p:w)==p,_=(x=x==d?p:x)==p,E=w==x;if(E&&u(e)){if(!u(t))return!1;b=!0,k=!1}if(E&&!k)return v||(v=new r),b||c(e)?a(e,t,n,m,g,v):o(e,t,w,n,m,g,v);if(!(1&n)){var S=k&&h.call(e,"__wrapped__"),C=_&&h.call(t,"__wrapped__");if(S||C){var T=S?e.value():e,O=C?t.value():t;return v||(v=new r),g(T,O,n,m,v)}}return!!E&&(v||(v=new r),i(e,t,n,m,g,v))}},25588:(e,t,n)=>{var r=n(64160),a=n(37005);e.exports=function(e){return a(e)&&"[object Map]"==r(e)}},2958:(e,t,n)=>{var r=n(46384),a=n(90939);e.exports=function(e,t,n,o){var i=n.length,l=i,s=!o;if(null==e)return!l;for(e=Object(e);i--;){var u=n[i];if(s&&u[2]?u[1]!==e[u[0]]:!(u[0]in e))return!1}for(;++i<l;){var c=(u=n[i])[0],d=e[c],f=u[1];if(s&&u[2]){if(void 0===d&&!(c in e))return!1}else{var p=new r;if(o)var h=o(d,f,c,e,t,p);if(!(void 0===h?a(f,d,3,o,p):h))return!1}}return!0}},28458:(e,t,n)=>{var r=n(23560),a=n(15346),o=n(13218),i=n(80346),l=/^\[object .+?Constructor\]$/,s=Function.prototype,u=Object.prototype,c=s.toString,d=u.hasOwnProperty,f=RegExp("^"+c.call(d).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!o(e)||a(e))&&(r(e)?f:l).test(i(e))}},29221:(e,t,n)=>{var r=n(64160),a=n(37005);e.exports=function(e){return a(e)&&"[object Set]"==r(e)}},38749:(e,t,n)=>{var r=n(44239),a=n(41780),o=n(37005),i={};i["[object Float32Array]"]=i["[object Float64Array]"]=i["[object Int8Array]"]=i["[object Int16Array]"]=i["[object Int32Array]"]=i["[object Uint8Array]"]=i["[object Uint8ClampedArray]"]=i["[object Uint16Array]"]=i["[object Uint32Array]"]=!0,i["[object Arguments]"]=i["[object Array]"]=i["[object ArrayBuffer]"]=i["[object Boolean]"]=i["[object DataView]"]=i["[object Date]"]=i["[object Error]"]=i["[object Function]"]=i["[object Map]"]=i["[object Number]"]=i["[object Object]"]=i["[object RegExp]"]=i["[object Set]"]=i["[object String]"]=i["[object WeakMap]"]=!1,e.exports=function(e){return o(e)&&a(e.length)&&!!i[r(e)]}},67206:(e,t,n)=>{var r=n(91573),a=n(16432),o=n(6557),i=n(1469),l=n(39601);e.exports=function(e){return"function"==typeof e?e:null==e?o:"object"==typeof e?i(e)?a(e[0],e[1]):r(e):l(e)}},280:(e,t,n)=>{var r=n(25726),a=n(86916),o=Object.prototype.hasOwnProperty;e.exports=function(e){if(!r(e))return a(e);var t=[];for(var n in Object(e))o.call(e,n)&&"constructor"!=n&&t.push(n);return t}},10313:(e,t,n)=>{var r=n(13218),a=n(25726),o=n(33498),i=Object.prototype.hasOwnProperty;e.exports=function(e){if(!r(e))return o(e);var t=a(e),n=[];for(var l in e)("constructor"!=l||!t&&i.call(e,l))&&n.push(l);return n}},91573:(e,t,n)=>{var r=n(2958),a=n(1499),o=n(42634);e.exports=function(e){var t=a(e);return 1==t.length&&t[0][2]?o(t[0][0],t[0][1]):function(n){return n===e||r(n,e,t)}}},16432:(e,t,n)=>{var r=n(90939),a=n(27361),o=n(79095),i=n(15403),l=n(89162),s=n(42634),u=n(40327);e.exports=function(e,t){return i(e)&&l(t)?s(u(e),t):function(n){var i=a(n,e);return void 0===i&&i===t?o(n,e):r(t,i,3)}}},40371:e=>{e.exports=function(e){return function(t){return null==t?void 0:t[e]}}},79152:(e,t,n)=>{var r=n(97786);e.exports=function(e){return function(t){return r(t,e)}}},56560:(e,t,n)=>{var r=n(75703),a=n(38777),o=n(6557),i=a?function(e,t){return a(e,"toString",{configurable:!0,enumerable:!1,value:r(t),writable:!0})}:o;e.exports=i},14259:e=>{e.exports=function(e,t,n){var r=-1,a=e.length;t<0&&(t=-t>a?0:a+t),(n=n>a?a:n)<0&&(n+=a),a=t>n?0:n-t>>>0,t>>>=0;for(var o=Array(a);++r<a;)o[r]=e[r+t];return o}},22545:e=>{e.exports=function(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}},80531:(e,t,n)=>{var r=n(62705),a=n(29932),o=n(1469),i=n(33448),l=r?r.prototype:void 0,s=l?l.toString:void 0;e.exports=function e(t){if("string"==typeof t)return t;if(o(t))return a(t,e)+"";if(i(t))return s?s.call(t):"";var n=t+"";return"0"==n&&1/t==-Infinity?"-0":n}},7518:e=>{e.exports=function(e){return function(t){return e(t)}}},57406:(e,t,n)=>{var r=n(71811),a=n(10928),o=n(40292),i=n(40327);e.exports=function(e,t){return t=r(t,e),null==(e=o(e,t))||delete e[i(a(t))]}},74757:e=>{e.exports=function(e,t){return e.has(t)}},71811:(e,t,n)=>{var r=n(1469),a=n(15403),o=n(55514),i=n(79833);e.exports=function(e,t){return r(e)?e:a(e,t)?[e]:o(i(e))}},74318:(e,t,n)=>{var r=n(11149);e.exports=function(e){var t=new e.constructor(e.byteLength);return new r(t).set(new r(e)),t}},64626:(e,t,n)=>{e=n.nmd(e);var r=n(55639),a=t&&!t.nodeType&&t,o=a&&e&&!e.nodeType&&e,i=o&&o.exports===a?r.Buffer:void 0,l=i?i.allocUnsafe:void 0;e.exports=function(e,t){if(t)return e.slice();var n=e.length,r=l?l(n):new e.constructor(n);return e.copy(r),r}},57157:(e,t,n)=>{var r=n(74318);e.exports=function(e,t){var n=t?r(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}},93147:e=>{var t=/\w*$/;e.exports=function(e){var n=new e.constructor(e.source,t.exec(e));return n.lastIndex=e.lastIndex,n}},40419:(e,t,n)=>{var r=n(62705),a=r?r.prototype:void 0,o=a?a.valueOf:void 0;e.exports=function(e){return o?Object(o.call(e)):{}}},77133:(e,t,n)=>{var r=n(74318);e.exports=function(e,t){var n=t?r(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}},278:e=>{e.exports=function(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n<r;)t[n]=e[n];return t}},98363:(e,t,n)=>{var r=n(34865),a=n(89465);e.exports=function(e,t,n,o){var i=!n;n||(n={});for(var l=-1,s=t.length;++l<s;){var u=t[l],c=o?o(n[u],e[u],u,n,e):void 0;void 0===c&&(c=e[u]),i?a(n,u,c):r(n,u,c)}return n}},18805:(e,t,n)=>{var r=n(98363),a=n(99551);e.exports=function(e,t){return r(e,a(e),t)}},1911:(e,t,n)=>{var r=n(98363),a=n(51442);e.exports=function(e,t){return r(e,a(e),t)}},14429:(e,t,n)=>{var r=n(55639)["__core-js_shared__"];e.exports=r},55189:(e,t,n)=>{var r=n(44174),a=n(81119),o=n(67206),i=n(1469);e.exports=function(e,t){return function(n,l){var s=i(n)?r:a,u=t?t():{};return s(n,e,o(l,2),u)}}},99291:(e,t,n)=>{var r=n(98612);e.exports=function(e,t){return function(n,a){if(null==n)return n;if(!r(n))return e(n,a);for(var o=n.length,i=t?o:-1,l=Object(n);(t?i--:++i<o)&&!1!==a(l[i],i,l););return n}}},25063:e=>{e.exports=function(e){return function(t,n,r){for(var a=-1,o=Object(t),i=r(t),l=i.length;l--;){var s=i[e?l:++a];if(!1===n(o[s],s,o))break}return t}}},60696:(e,t,n)=>{var r=n(68630);e.exports=function(e){return r(e)?void 0:e}},38777:(e,t,n)=>{var r=n(10852),a=function(){try{var e=r(Object,"defineProperty");return e({},"",{}),e}catch(t){}}();e.exports=a},67114:(e,t,n)=>{var r=n(88668),a=n(82908),o=n(74757);e.exports=function(e,t,n,i,l,s){var u=1&n,c=e.length,d=t.length;if(c!=d&&!(u&&d>c))return!1;var f=s.get(e),p=s.get(t);if(f&&p)return f==t&&p==e;var h=-1,m=!0,g=2&n?new r:void 0;for(s.set(e,t),s.set(t,e);++h<c;){var v=e[h],b=t[h];if(i)var y=u?i(b,v,h,t,e,s):i(v,b,h,e,t,s);if(void 0!==y){if(y)continue;m=!1;break}if(g){if(!a(t,(function(e,t){if(!o(g,t)&&(v===e||l(v,e,n,i,s)))return g.push(t)}))){m=!1;break}}else if(v!==b&&!l(v,b,n,i,s)){m=!1;break}}return s.delete(e),s.delete(t),m}},18351:(e,t,n)=>{var r=n(62705),a=n(11149),o=n(77813),i=n(67114),l=n(68776),s=n(21814),u=r?r.prototype:void 0,c=u?u.valueOf:void 0;e.exports=function(e,t,n,r,u,d,f){switch(n){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!d(new a(e),new a(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return o(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var p=l;case"[object Set]":var h=1&r;if(p||(p=s),e.size!=t.size&&!h)return!1;var m=f.get(e);if(m)return m==t;r|=2,f.set(e,t);var g=i(p(e),p(t),r,u,d,f);return f.delete(e),g;case"[object Symbol]":if(c)return c.call(e)==c.call(t)}return!1}},16096:(e,t,n)=>{var r=n(58234),a=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,o,i,l){var s=1&n,u=r(e),c=u.length;if(c!=r(t).length&&!s)return!1;for(var d=c;d--;){var f=u[d];if(!(s?f in t:a.call(t,f)))return!1}var p=l.get(e),h=l.get(t);if(p&&h)return p==t&&h==e;var m=!0;l.set(e,t),l.set(t,e);for(var g=s;++d<c;){var v=e[f=u[d]],b=t[f];if(o)var y=s?o(b,v,f,t,e,l):o(v,b,f,e,t,l);if(!(void 0===y?v===b||i(v,b,n,o,l):y)){m=!1;break}g||(g="constructor"==f)}if(m&&!g){var w=e.constructor,x=t.constructor;w==x||!("constructor"in e)||!("constructor"in t)||"function"==typeof w&&w instanceof w&&"function"==typeof x&&x instanceof x||(m=!1)}return l.delete(e),l.delete(t),m}},99021:(e,t,n)=>{var r=n(85564),a=n(45357),o=n(30061);e.exports=function(e){return o(a(e,void 0,r),e+"")}},31957:(e,t,n)=>{var r="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g;e.exports=r},58234:(e,t,n)=>{var r=n(68866),a=n(99551),o=n(3674);e.exports=function(e){return r(e,o,a)}},46904:(e,t,n)=>{var r=n(68866),a=n(51442),o=n(81704);e.exports=function(e){return r(e,o,a)}},45050:(e,t,n)=>{var r=n(37019);e.exports=function(e,t){var n=e.__data__;return r(t)?n["string"==typeof t?"string":"hash"]:n.map}},1499:(e,t,n)=>{var r=n(89162),a=n(3674);e.exports=function(e){for(var t=a(e),n=t.length;n--;){var o=t[n],i=e[o];t[n]=[o,i,r(i)]}return t}},10852:(e,t,n)=>{var r=n(28458),a=n(47801);e.exports=function(e,t){var n=a(e,t);return r(n)?n:void 0}},85924:(e,t,n)=>{var r=n(5569)(Object.getPrototypeOf,Object);e.exports=r},89607:(e,t,n)=>{var r=n(62705),a=Object.prototype,o=a.hasOwnProperty,i=a.toString,l=r?r.toStringTag:void 0;e.exports=function(e){var t=o.call(e,l),n=e[l];try{e[l]=void 0;var r=!0}catch(s){}var a=i.call(e);return r&&(t?e[l]=n:delete e[l]),a}},99551:(e,t,n)=>{var r=n(34963),a=n(70479),o=Object.prototype.propertyIsEnumerable,i=Object.getOwnPropertySymbols,l=i?function(e){return null==e?[]:(e=Object(e),r(i(e),(function(t){return o.call(e,t)})))}:a;e.exports=l},51442:(e,t,n)=>{var r=n(62488),a=n(85924),o=n(99551),i=n(70479),l=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)r(t,o(e)),e=a(e);return t}:i;e.exports=l},64160:(e,t,n)=>{var r=n(18552),a=n(57071),o=n(53818),i=n(58525),l=n(70577),s=n(44239),u=n(80346),c="[object Map]",d="[object Promise]",f="[object Set]",p="[object WeakMap]",h="[object DataView]",m=u(r),g=u(a),v=u(o),b=u(i),y=u(l),w=s;(r&&w(new r(new ArrayBuffer(1)))!=h||a&&w(new a)!=c||o&&w(o.resolve())!=d||i&&w(new i)!=f||l&&w(new l)!=p)&&(w=function(e){var t=s(e),n="[object Object]"==t?e.constructor:void 0,r=n?u(n):"";if(r)switch(r){case m:return h;case g:return c;case v:return d;case b:return f;case y:return p}return t}),e.exports=w},47801:e=>{e.exports=function(e,t){return null==e?void 0:e[t]}},222:(e,t,n)=>{var r=n(71811),a=n(35694),o=n(1469),i=n(65776),l=n(41780),s=n(40327);e.exports=function(e,t,n){for(var u=-1,c=(t=r(t,e)).length,d=!1;++u<c;){var f=s(t[u]);if(!(d=null!=e&&n(e,f)))break;e=e[f]}return d||++u!=c?d:!!(c=null==e?0:e.length)&&l(c)&&i(f,c)&&(o(e)||a(e))}},51789:(e,t,n)=>{var r=n(94536);e.exports=function(){this.__data__=r?r(null):{},this.size=0}},80401:e=>{e.exports=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}},57667:(e,t,n)=>{var r=n(94536),a=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;if(r){var n=t[e];return"__lodash_hash_undefined__"===n?void 0:n}return a.call(t,e)?t[e]:void 0}},21327:(e,t,n)=>{var r=n(94536),a=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;return r?void 0!==t[e]:a.call(t,e)}},81866:(e,t,n)=>{var r=n(94536);e.exports=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=r&&void 0===t?"__lodash_hash_undefined__":t,this}},43824:e=>{var t=Object.prototype.hasOwnProperty;e.exports=function(e){var n=e.length,r=new e.constructor(n);return n&&"string"==typeof e[0]&&t.call(e,"index")&&(r.index=e.index,r.input=e.input),r}},29148:(e,t,n)=>{var r=n(74318),a=n(57157),o=n(93147),i=n(40419),l=n(77133);e.exports=function(e,t,n){var s=e.constructor;switch(t){case"[object ArrayBuffer]":return r(e);case"[object Boolean]":case"[object Date]":return new s(+e);case"[object DataView]":return a(e,n);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return l(e,n);case"[object Map]":case"[object Set]":return new s;case"[object Number]":case"[object String]":return new s(e);case"[object RegExp]":return o(e);case"[object Symbol]":return i(e)}}},38517:(e,t,n)=>{var r=n(3118),a=n(85924),o=n(25726);e.exports=function(e){return"function"!=typeof e.constructor||o(e)?{}:r(a(e))}},37285:(e,t,n)=>{var r=n(62705),a=n(35694),o=n(1469),i=r?r.isConcatSpreadable:void 0;e.exports=function(e){return o(e)||a(e)||!!(i&&e&&e[i])}},65776:e=>{var t=/^(?:0|[1-9]\d*)$/;e.exports=function(e,n){var r=typeof e;return!!(n=null==n?9007199254740991:n)&&("number"==r||"symbol"!=r&&t.test(e))&&e>-1&&e%1==0&&e<n}},15403:(e,t,n)=>{var r=n(1469),a=n(33448),o=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,i=/^\w*$/;e.exports=function(e,t){if(r(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!a(e))||(i.test(e)||!o.test(e)||null!=t&&e in Object(t))}},37019:e=>{e.exports=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}},15346:(e,t,n)=>{var r,a=n(14429),o=(r=/[^.]+$/.exec(a&&a.keys&&a.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";e.exports=function(e){return!!o&&o in e}},25726:e=>{var t=Object.prototype;e.exports=function(e){var n=e&&e.constructor;return e===("function"==typeof n&&n.prototype||t)}},89162:(e,t,n)=>{var r=n(13218);e.exports=function(e){return e==e&&!r(e)}},27040:e=>{e.exports=function(){this.__data__=[],this.size=0}},14125:(e,t,n)=>{var r=n(18470),a=Array.prototype.splice;e.exports=function(e){var t=this.__data__,n=r(t,e);return!(n<0)&&(n==t.length-1?t.pop():a.call(t,n,1),--this.size,!0)}},82117:(e,t,n)=>{var r=n(18470);e.exports=function(e){var t=this.__data__,n=r(t,e);return n<0?void 0:t[n][1]}},67518:(e,t,n)=>{var r=n(18470);e.exports=function(e){return r(this.__data__,e)>-1}},54705:(e,t,n)=>{var r=n(18470);e.exports=function(e,t){var n=this.__data__,a=r(n,e);return a<0?(++this.size,n.push([e,t])):n[a][1]=t,this}},24785:(e,t,n)=>{var r=n(1989),a=n(38407),o=n(57071);e.exports=function(){this.size=0,this.__data__={hash:new r,map:new(o||a),string:new r}}},11285:(e,t,n)=>{var r=n(45050);e.exports=function(e){var t=r(this,e).delete(e);return this.size-=t?1:0,t}},96e3:(e,t,n)=>{var r=n(45050);e.exports=function(e){return r(this,e).get(e)}},49916:(e,t,n)=>{var r=n(45050);e.exports=function(e){return r(this,e).has(e)}},95265:(e,t,n)=>{var r=n(45050);e.exports=function(e,t){var n=r(this,e),a=n.size;return n.set(e,t),this.size+=n.size==a?0:1,this}},68776:e=>{e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}},42634:e=>{e.exports=function(e,t){return function(n){return null!=n&&(n[e]===t&&(void 0!==t||e in Object(n)))}}},24523:(e,t,n)=>{var r=n(88306);e.exports=function(e){var t=r(e,(function(e){return 500===n.size&&n.clear(),e})),n=t.cache;return t}},94536:(e,t,n)=>{var r=n(10852)(Object,"create");e.exports=r},86916:(e,t,n)=>{var r=n(5569)(Object.keys,Object);e.exports=r},33498:e=>{e.exports=function(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t}},31167:(e,t,n)=>{e=n.nmd(e);var r=n(31957),a=t&&!t.nodeType&&t,o=a&&e&&!e.nodeType&&e,i=o&&o.exports===a&&r.process,l=function(){try{var e=o&&o.require&&o.require("util").types;return e||i&&i.binding&&i.binding("util")}catch(t){}}();e.exports=l},2333:e=>{var t=Object.prototype.toString;e.exports=function(e){return t.call(e)}},5569:e=>{e.exports=function(e,t){return function(n){return e(t(n))}}},45357:(e,t,n)=>{var r=n(96874),a=Math.max;e.exports=function(e,t,n){return t=a(void 0===t?e.length-1:t,0),function(){for(var o=arguments,i=-1,l=a(o.length-t,0),s=Array(l);++i<l;)s[i]=o[t+i];i=-1;for(var u=Array(t+1);++i<t;)u[i]=o[i];return u[t]=n(s),r(e,this,u)}}},40292:(e,t,n)=>{var r=n(97786),a=n(14259);e.exports=function(e,t){return t.length<2?e:r(e,a(t,0,-1))}},55639:(e,t,n)=>{var r=n(31957),a="object"==typeof self&&self&&self.Object===Object&&self,o=r||a||Function("return this")();e.exports=o},90619:e=>{e.exports=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this}},72385:e=>{e.exports=function(e){return this.__data__.has(e)}},21814:e=>{e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n}},30061:(e,t,n)=>{var r=n(56560),a=n(21275)(r);e.exports=a},21275:e=>{var t=Date.now;e.exports=function(e){var n=0,r=0;return function(){var a=t(),o=16-(a-r);if(r=a,o>0){if(++n>=800)return arguments[0]}else n=0;return e.apply(void 0,arguments)}}},37465:(e,t,n)=>{var r=n(38407);e.exports=function(){this.__data__=new r,this.size=0}},63779:e=>{e.exports=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}},67599:e=>{e.exports=function(e){return this.__data__.get(e)}},44758:e=>{e.exports=function(e){return this.__data__.has(e)}},34309:(e,t,n)=>{var r=n(38407),a=n(57071),o=n(83369);e.exports=function(e,t){var n=this.__data__;if(n instanceof r){var i=n.__data__;if(!a||i.length<199)return i.push([e,t]),this.size=++n.size,this;n=this.__data__=new o(i)}return n.set(e,t),this.size=n.size,this}},55514:(e,t,n)=>{var r=n(24523),a=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,o=/\\(\\)?/g,i=r((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(a,(function(e,n,r,a){t.push(r?a.replace(o,"$1"):n||e)})),t}));e.exports=i},40327:(e,t,n)=>{var r=n(33448);e.exports=function(e){if("string"==typeof e||r(e))return e;var t=e+"";return"0"==t&&1/e==-Infinity?"-0":t}},80346:e=>{var t=Function.prototype.toString;e.exports=function(e){if(null!=e){try{return t.call(e)}catch(n){}try{return e+""}catch(n){}}return""}},75703:e=>{e.exports=function(e){return function(){return e}}},77813:e=>{e.exports=function(e,t){return e===t||e!=e&&t!=t}},85564:(e,t,n)=>{var r=n(21078);e.exports=function(e){return(null==e?0:e.length)?r(e,1):[]}},27361:(e,t,n)=>{var r=n(97786);e.exports=function(e,t,n){var a=null==e?void 0:r(e,t);return void 0===a?n:a}},7739:(e,t,n)=>{var r=n(89465),a=n(55189),o=Object.prototype.hasOwnProperty,i=a((function(e,t,n){o.call(e,n)?e[n].push(t):r(e,n,[t])}));e.exports=i},79095:(e,t,n)=>{var r=n(13),a=n(222);e.exports=function(e,t){return null!=e&&a(e,t,r)}},6557:e=>{e.exports=function(e){return e}},35694:(e,t,n)=>{var r=n(9454),a=n(37005),o=Object.prototype,i=o.hasOwnProperty,l=o.propertyIsEnumerable,s=r(function(){return arguments}())?r:function(e){return a(e)&&i.call(e,"callee")&&!l.call(e,"callee")};e.exports=s},1469:e=>{var t=Array.isArray;e.exports=t},98612:(e,t,n)=>{var r=n(23560),a=n(41780);e.exports=function(e){return null!=e&&a(e.length)&&!r(e)}},44144:(e,t,n)=>{e=n.nmd(e);var r=n(55639),a=n(95062),o=t&&!t.nodeType&&t,i=o&&e&&!e.nodeType&&e,l=i&&i.exports===o?r.Buffer:void 0,s=(l?l.isBuffer:void 0)||a;e.exports=s},23560:(e,t,n)=>{var r=n(44239),a=n(13218);e.exports=function(e){if(!a(e))return!1;var t=r(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},41780:e=>{e.exports=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}},56688:(e,t,n)=>{var r=n(25588),a=n(7518),o=n(31167),i=o&&o.isMap,l=i?a(i):r;e.exports=l},13218:e=>{e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},37005:e=>{e.exports=function(e){return null!=e&&"object"==typeof e}},68630:(e,t,n)=>{var r=n(44239),a=n(85924),o=n(37005),i=Function.prototype,l=Object.prototype,s=i.toString,u=l.hasOwnProperty,c=s.call(Object);e.exports=function(e){if(!o(e)||"[object Object]"!=r(e))return!1;var t=a(e);if(null===t)return!0;var n=u.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&s.call(n)==c}},72928:(e,t,n)=>{var r=n(29221),a=n(7518),o=n(31167),i=o&&o.isSet,l=i?a(i):r;e.exports=l},33448:(e,t,n)=>{var r=n(44239),a=n(37005);e.exports=function(e){return"symbol"==typeof e||a(e)&&"[object Symbol]"==r(e)}},36719:(e,t,n)=>{var r=n(38749),a=n(7518),o=n(31167),i=o&&o.isTypedArray,l=i?a(i):r;e.exports=l},3674:(e,t,n)=>{var r=n(14636),a=n(280),o=n(98612);e.exports=function(e){return o(e)?r(e):a(e)}},81704:(e,t,n)=>{var r=n(14636),a=n(10313),o=n(98612);e.exports=function(e){return o(e)?r(e,!0):a(e)}},10928:e=>{e.exports=function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0}},88306:(e,t,n)=>{var r=n(83369);function a(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var r=arguments,a=t?t.apply(this,r):r[0],o=n.cache;if(o.has(a))return o.get(a);var i=e.apply(this,r);return n.cache=o.set(a,i)||o,i};return n.cache=new(a.Cache||r),n}a.Cache=r,e.exports=a},57557:(e,t,n)=>{var r=n(29932),a=n(85990),o=n(57406),i=n(71811),l=n(98363),s=n(60696),u=n(99021),c=n(46904),d=u((function(e,t){var n={};if(null==e)return n;var u=!1;t=r(t,(function(t){return t=i(t,e),u||(u=t.length>1),t})),l(e,c(e),n),u&&(n=a(n,7,s));for(var d=t.length;d--;)o(n,t[d]);return n}));e.exports=d},39601:(e,t,n)=>{var r=n(40371),a=n(79152),o=n(15403),i=n(40327);e.exports=function(e){return o(e)?r(i(e)):a(e)}},70479:e=>{e.exports=function(){return[]}},95062:e=>{e.exports=function(){return!1}},79833:(e,t,n)=>{var r=n(80531);e.exports=function(e){return null==e?"":r(e)}},31336:(e,t,n)=>{var r,a;!function(){var o,i,l,s,u,c,d,f,p,h,m,g,v,b,y,w,x,k,_,E,S,C,T,O,D,P,N,I,A,L,R=function(e){var t=new R.Builder;return t.pipeline.add(R.trimmer,R.stopWordFilter,R.stemmer),t.searchPipeline.add(R.stemmer),e.call(t,t),t.build()};R.version="2.3.9",R.utils={},R.utils.warn=(o=this,function(e){o.console&&console.warn&&console.warn(e)}),R.utils.asString=function(e){return null==e?"":e.toString()},R.utils.clone=function(e){if(null==e)return e;for(var t=Object.create(null),n=Object.keys(e),r=0;r<n.length;r++){var a=n[r],o=e[a];if(Array.isArray(o))t[a]=o.slice();else{if("string"!=typeof o&&"number"!=typeof o&&"boolean"!=typeof o)throw new TypeError("clone is not deep and does not support nested objects");t[a]=o}}return t},R.FieldRef=function(e,t,n){this.docRef=e,this.fieldName=t,this._stringValue=n},R.FieldRef.joiner="/",R.FieldRef.fromString=function(e){var t=e.indexOf(R.FieldRef.joiner);if(-1===t)throw"malformed field ref string";var n=e.slice(0,t),r=e.slice(t+1);return new R.FieldRef(r,n,e)},R.FieldRef.prototype.toString=function(){return null==this._stringValue&&(this._stringValue=this.fieldName+R.FieldRef.joiner+this.docRef),this._stringValue},R.Set=function(e){if(this.elements=Object.create(null),e){this.length=e.length;for(var t=0;t<this.length;t++)this.elements[e[t]]=!0}else this.length=0},R.Set.complete={intersect:function(e){return e},union:function(){return this},contains:function(){return!0}},R.Set.empty={intersect:function(){return this},union:function(e){return e},contains:function(){return!1}},R.Set.prototype.contains=function(e){return!!this.elements[e]},R.Set.prototype.intersect=function(e){var t,n,r,a=[];if(e===R.Set.complete)return this;if(e===R.Set.empty)return e;this.length<e.length?(t=this,n=e):(t=e,n=this),r=Object.keys(t.elements);for(var o=0;o<r.length;o++){var i=r[o];i in n.elements&&a.push(i)}return new R.Set(a)},R.Set.prototype.union=function(e){return e===R.Set.complete?R.Set.complete:e===R.Set.empty?this:new R.Set(Object.keys(this.elements).concat(Object.keys(e.elements)))},R.idf=function(e,t){var n=0;for(var r in e)"_index"!=r&&(n+=Object.keys(e[r]).length);var a=(t-n+.5)/(n+.5);return Math.log(1+Math.abs(a))},R.Token=function(e,t){this.str=e||"",this.metadata=t||{}},R.Token.prototype.toString=function(){return this.str},R.Token.prototype.update=function(e){return this.str=e(this.str,this.metadata),this},R.Token.prototype.clone=function(e){return e=e||function(e){return e},new R.Token(e(this.str,this.metadata),this.metadata)},R.tokenizer=function(e,t){if(null==e||null==e)return[];if(Array.isArray(e))return e.map((function(e){return new R.Token(R.utils.asString(e).toLowerCase(),R.utils.clone(t))}));for(var n=e.toString().toLowerCase(),r=n.length,a=[],o=0,i=0;o<=r;o++){var l=o-i;if(n.charAt(o).match(R.tokenizer.separator)||o==r){if(l>0){var s=R.utils.clone(t)||{};s.position=[i,l],s.index=a.length,a.push(new R.Token(n.slice(i,o),s))}i=o+1}}return a},R.tokenizer.separator=/[\s\-]+/,R.Pipeline=function(){this._stack=[]},R.Pipeline.registeredFunctions=Object.create(null),R.Pipeline.registerFunction=function(e,t){t in this.registeredFunctions&&R.utils.warn("Overwriting existing registered function: "+t),e.label=t,R.Pipeline.registeredFunctions[e.label]=e},R.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||R.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},R.Pipeline.load=function(e){var t=new R.Pipeline;return e.forEach((function(e){var n=R.Pipeline.registeredFunctions[e];if(!n)throw new Error("Cannot load unregistered function: "+e);t.add(n)})),t},R.Pipeline.prototype.add=function(){Array.prototype.slice.call(arguments).forEach((function(e){R.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)}),this)},R.Pipeline.prototype.after=function(e,t){R.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");n+=1,this._stack.splice(n,0,t)},R.Pipeline.prototype.before=function(e,t){R.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");this._stack.splice(n,0,t)},R.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},R.Pipeline.prototype.run=function(e){for(var t=this._stack.length,n=0;n<t;n++){for(var r=this._stack[n],a=[],o=0;o<e.length;o++){var i=r(e[o],o,e);if(null!=i&&""!==i)if(Array.isArray(i))for(var l=0;l<i.length;l++)a.push(i[l]);else a.push(i)}e=a}return e},R.Pipeline.prototype.runString=function(e,t){var n=new R.Token(e,t);return this.run([n]).map((function(e){return e.toString()}))},R.Pipeline.prototype.reset=function(){this._stack=[]},R.Pipeline.prototype.toJSON=function(){return this._stack.map((function(e){return R.Pipeline.warnIfFunctionNotRegistered(e),e.label}))},R.Vector=function(e){this._magnitude=0,this.elements=e||[]},R.Vector.prototype.positionForIndex=function(e){if(0==this.elements.length)return 0;for(var t=0,n=this.elements.length/2,r=n-t,a=Math.floor(r/2),o=this.elements[2*a];r>1&&(o<e&&(t=a),o>e&&(n=a),o!=e);)r=n-t,a=t+Math.floor(r/2),o=this.elements[2*a];return o==e||o>e?2*a:o<e?2*(a+1):void 0},R.Vector.prototype.insert=function(e,t){this.upsert(e,t,(function(){throw"duplicate index"}))},R.Vector.prototype.upsert=function(e,t,n){this._magnitude=0;var r=this.positionForIndex(e);this.elements[r]==e?this.elements[r+1]=n(this.elements[r+1],t):this.elements.splice(r,0,e,t)},R.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var e=0,t=this.elements.length,n=1;n<t;n+=2){var r=this.elements[n];e+=r*r}return this._magnitude=Math.sqrt(e)},R.Vector.prototype.dot=function(e){for(var t=0,n=this.elements,r=e.elements,a=n.length,o=r.length,i=0,l=0,s=0,u=0;s<a&&u<o;)(i=n[s])<(l=r[u])?s+=2:i>l?u+=2:i==l&&(t+=n[s+1]*r[u+1],s+=2,u+=2);return t},R.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},R.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,n=0;t<this.elements.length;t+=2,n++)e[n]=this.elements[t];return e},R.Vector.prototype.toJSON=function(){return this.elements},R.stemmer=(i={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},l={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},d="^("+(u="[^aeiou][^aeiouy]*")+")?"+(c=(s="[aeiouy]")+"[aeiou]*")+u+"("+c+")?$",f="^("+u+")?"+c+u+c+u,p="^("+u+")?"+s,h=new RegExp("^("+u+")?"+c+u),m=new RegExp(f),g=new RegExp(d),v=new RegExp(p),b=/^(.+?)(ss|i)es$/,y=/^(.+?)([^s])s$/,w=/^(.+?)eed$/,x=/^(.+?)(ed|ing)$/,k=/.$/,_=/(at|bl|iz)$/,E=new RegExp("([^aeiouylsz])\\1$"),S=new RegExp("^"+u+s+"[^aeiouwxy]$"),C=/^(.+?[^aeiou])y$/,T=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,O=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,D=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,P=/^(.+?)(s|t)(ion)$/,N=/^(.+?)e$/,I=/ll$/,A=new RegExp("^"+u+s+"[^aeiouwxy]$"),L=function(e){var t,n,r,a,o,s,u;if(e.length<3)return e;if("y"==(r=e.substr(0,1))&&(e=r.toUpperCase()+e.substr(1)),o=y,(a=b).test(e)?e=e.replace(a,"$1$2"):o.test(e)&&(e=e.replace(o,"$1$2")),o=x,(a=w).test(e)){var c=a.exec(e);(a=h).test(c[1])&&(a=k,e=e.replace(a,""))}else o.test(e)&&(t=(c=o.exec(e))[1],(o=v).test(t)&&(s=E,u=S,(o=_).test(e=t)?e+="e":s.test(e)?(a=k,e=e.replace(a,"")):u.test(e)&&(e+="e")));return(a=C).test(e)&&(e=(t=(c=a.exec(e))[1])+"i"),(a=T).test(e)&&(t=(c=a.exec(e))[1],n=c[2],(a=h).test(t)&&(e=t+i[n])),(a=O).test(e)&&(t=(c=a.exec(e))[1],n=c[2],(a=h).test(t)&&(e=t+l[n])),o=P,(a=D).test(e)?(t=(c=a.exec(e))[1],(a=m).test(t)&&(e=t)):o.test(e)&&(t=(c=o.exec(e))[1]+c[2],(o=m).test(t)&&(e=t)),(a=N).test(e)&&(t=(c=a.exec(e))[1],o=g,s=A,((a=m).test(t)||o.test(t)&&!s.test(t))&&(e=t)),o=m,(a=I).test(e)&&o.test(e)&&(a=k,e=e.replace(a,"")),"y"==r&&(e=r.toLowerCase()+e.substr(1)),e},function(e){return e.update(L)}),R.Pipeline.registerFunction(R.stemmer,"stemmer"),R.generateStopWordFilter=function(e){var t=e.reduce((function(e,t){return e[t]=t,e}),{});return function(e){if(e&&t[e.toString()]!==e.toString())return e}},R.stopWordFilter=R.generateStopWordFilter(["a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"]),R.Pipeline.registerFunction(R.stopWordFilter,"stopWordFilter"),R.trimmer=function(e){return e.update((function(e){return e.replace(/^\W+/,"").replace(/\W+$/,"")}))},R.Pipeline.registerFunction(R.trimmer,"trimmer"),R.TokenSet=function(){this.final=!1,this.edges={},this.id=R.TokenSet._nextId,R.TokenSet._nextId+=1},R.TokenSet._nextId=1,R.TokenSet.fromArray=function(e){for(var t=new R.TokenSet.Builder,n=0,r=e.length;n<r;n++)t.insert(e[n]);return t.finish(),t.root},R.TokenSet.fromClause=function(e){return"editDistance"in e?R.TokenSet.fromFuzzyString(e.term,e.editDistance):R.TokenSet.fromString(e.term)},R.TokenSet.fromFuzzyString=function(e,t){for(var n=new R.TokenSet,r=[{node:n,editsRemaining:t,str:e}];r.length;){var a=r.pop();if(a.str.length>0){var o,i=a.str.charAt(0);i in a.node.edges?o=a.node.edges[i]:(o=new R.TokenSet,a.node.edges[i]=o),1==a.str.length&&(o.final=!0),r.push({node:o,editsRemaining:a.editsRemaining,str:a.str.slice(1)})}if(0!=a.editsRemaining){if("*"in a.node.edges)var l=a.node.edges["*"];else{l=new R.TokenSet;a.node.edges["*"]=l}if(0==a.str.length&&(l.final=!0),r.push({node:l,editsRemaining:a.editsRemaining-1,str:a.str}),a.str.length>1&&r.push({node:a.node,editsRemaining:a.editsRemaining-1,str:a.str.slice(1)}),1==a.str.length&&(a.node.final=!0),a.str.length>=1){if("*"in a.node.edges)var s=a.node.edges["*"];else{s=new R.TokenSet;a.node.edges["*"]=s}1==a.str.length&&(s.final=!0),r.push({node:s,editsRemaining:a.editsRemaining-1,str:a.str.slice(1)})}if(a.str.length>1){var u,c=a.str.charAt(0),d=a.str.charAt(1);d in a.node.edges?u=a.node.edges[d]:(u=new R.TokenSet,a.node.edges[d]=u),1==a.str.length&&(u.final=!0),r.push({node:u,editsRemaining:a.editsRemaining-1,str:c+a.str.slice(2)})}}}return n},R.TokenSet.fromString=function(e){for(var t=new R.TokenSet,n=t,r=0,a=e.length;r<a;r++){var o=e[r],i=r==a-1;if("*"==o)t.edges[o]=t,t.final=i;else{var l=new R.TokenSet;l.final=i,t.edges[o]=l,t=l}}return n},R.TokenSet.prototype.toArray=function(){for(var e=[],t=[{prefix:"",node:this}];t.length;){var n=t.pop(),r=Object.keys(n.node.edges),a=r.length;n.node.final&&(n.prefix.charAt(0),e.push(n.prefix));for(var o=0;o<a;o++){var i=r[o];t.push({prefix:n.prefix.concat(i),node:n.node.edges[i]})}}return e},R.TokenSet.prototype.toString=function(){if(this._str)return this._str;for(var e=this.final?"1":"0",t=Object.keys(this.edges).sort(),n=t.length,r=0;r<n;r++){var a=t[r];e=e+a+this.edges[a].id}return e},R.TokenSet.prototype.intersect=function(e){for(var t=new R.TokenSet,n=void 0,r=[{qNode:e,output:t,node:this}];r.length;){n=r.pop();for(var a=Object.keys(n.qNode.edges),o=a.length,i=Object.keys(n.node.edges),l=i.length,s=0;s<o;s++)for(var u=a[s],c=0;c<l;c++){var d=i[c];if(d==u||"*"==u){var f=n.node.edges[d],p=n.qNode.edges[u],h=f.final&&p.final,m=void 0;d in n.output.edges?(m=n.output.edges[d]).final=m.final||h:((m=new R.TokenSet).final=h,n.output.edges[d]=m),r.push({qNode:p,output:m,node:f})}}}return t},R.TokenSet.Builder=function(){this.previousWord="",this.root=new R.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},R.TokenSet.Builder.prototype.insert=function(e){var t,n=0;if(e<this.previousWord)throw new Error("Out of order word insertion");for(var r=0;r<e.length&&r<this.previousWord.length&&e[r]==this.previousWord[r];r++)n++;this.minimize(n),t=0==this.uncheckedNodes.length?this.root:this.uncheckedNodes[this.uncheckedNodes.length-1].child;for(r=n;r<e.length;r++){var a=new R.TokenSet,o=e[r];t.edges[o]=a,this.uncheckedNodes.push({parent:t,char:o,child:a}),t=a}t.final=!0,this.previousWord=e},R.TokenSet.Builder.prototype.finish=function(){this.minimize(0)},R.TokenSet.Builder.prototype.minimize=function(e){for(var t=this.uncheckedNodes.length-1;t>=e;t--){var n=this.uncheckedNodes[t],r=n.child.toString();r in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[r]:(n.child._str=r,this.minimizedNodes[r]=n.child),this.uncheckedNodes.pop()}},R.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},R.Index.prototype.search=function(e){return this.query((function(t){new R.QueryParser(e,t).parse()}))},R.Index.prototype.query=function(e){for(var t=new R.Query(this.fields),n=Object.create(null),r=Object.create(null),a=Object.create(null),o=Object.create(null),i=Object.create(null),l=0;l<this.fields.length;l++)r[this.fields[l]]=new R.Vector;e.call(t,t);for(l=0;l<t.clauses.length;l++){var s=t.clauses[l],u=null,c=R.Set.empty;u=s.usePipeline?this.pipeline.runString(s.term,{fields:s.fields}):[s.term];for(var d=0;d<u.length;d++){var f=u[d];s.term=f;var p=R.TokenSet.fromClause(s),h=this.tokenSet.intersect(p).toArray();if(0===h.length&&s.presence===R.Query.presence.REQUIRED){for(var m=0;m<s.fields.length;m++){o[N=s.fields[m]]=R.Set.empty}break}for(var g=0;g<h.length;g++){var v=h[g],b=this.invertedIndex[v],y=b._index;for(m=0;m<s.fields.length;m++){var w=b[N=s.fields[m]],x=Object.keys(w),k=v+"/"+N,_=new R.Set(x);if(s.presence==R.Query.presence.REQUIRED&&(c=c.union(_),void 0===o[N]&&(o[N]=R.Set.complete)),s.presence!=R.Query.presence.PROHIBITED){if(r[N].upsert(y,s.boost,(function(e,t){return e+t})),!a[k]){for(var E=0;E<x.length;E++){var S,C=x[E],T=new R.FieldRef(C,N),O=w[C];void 0===(S=n[T])?n[T]=new R.MatchData(v,N,O):S.add(v,N,O)}a[k]=!0}}else void 0===i[N]&&(i[N]=R.Set.empty),i[N]=i[N].union(_)}}}if(s.presence===R.Query.presence.REQUIRED)for(m=0;m<s.fields.length;m++){o[N=s.fields[m]]=o[N].intersect(c)}}var D=R.Set.complete,P=R.Set.empty;for(l=0;l<this.fields.length;l++){var N;o[N=this.fields[l]]&&(D=D.intersect(o[N])),i[N]&&(P=P.union(i[N]))}var I=Object.keys(n),A=[],L=Object.create(null);if(t.isNegated()){I=Object.keys(this.fieldVectors);for(l=0;l<I.length;l++){T=I[l];var j=R.FieldRef.fromString(T);n[T]=new R.MatchData}}for(l=0;l<I.length;l++){var M=(j=R.FieldRef.fromString(I[l])).docRef;if(D.contains(M)&&!P.contains(M)){var F,B=this.fieldVectors[j],z=r[j.fieldName].similarity(B);if(void 0!==(F=L[M]))F.score+=z,F.matchData.combine(n[j]);else{var $={ref:M,score:z,matchData:n[j]};L[M]=$,A.push($)}}}return A.sort((function(e,t){return t.score-e.score}))},R.Index.prototype.toJSON=function(){var e=Object.keys(this.invertedIndex).sort().map((function(e){return[e,this.invertedIndex[e]]}),this),t=Object.keys(this.fieldVectors).map((function(e){return[e,this.fieldVectors[e].toJSON()]}),this);return{version:R.version,fields:this.fields,fieldVectors:t,invertedIndex:e,pipeline:this.pipeline.toJSON()}},R.Index.load=function(e){var t={},n={},r=e.fieldVectors,a=Object.create(null),o=e.invertedIndex,i=new R.TokenSet.Builder,l=R.Pipeline.load(e.pipeline);e.version!=R.version&&R.utils.warn("Version mismatch when loading serialised index. Current version of lunr '"+R.version+"' does not match serialized index '"+e.version+"'");for(var s=0;s<r.length;s++){var u=(d=r[s])[0],c=d[1];n[u]=new R.Vector(c)}for(s=0;s<o.length;s++){var d,f=(d=o[s])[0],p=d[1];i.insert(f),a[f]=p}return i.finish(),t.fields=e.fields,t.fieldVectors=n,t.invertedIndex=a,t.tokenSet=i.root,t.pipeline=l,new R.Index(t)},R.Builder=function(){this._ref="id",this._fields=Object.create(null),this._documents=Object.create(null),this.invertedIndex=Object.create(null),this.fieldTermFrequencies={},this.fieldLengths={},this.tokenizer=R.tokenizer,this.pipeline=new R.Pipeline,this.searchPipeline=new R.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},R.Builder.prototype.ref=function(e){this._ref=e},R.Builder.prototype.field=function(e,t){if(/\//.test(e))throw new RangeError("Field '"+e+"' contains illegal character '/'");this._fields[e]=t||{}},R.Builder.prototype.b=function(e){this._b=e<0?0:e>1?1:e},R.Builder.prototype.k1=function(e){this._k1=e},R.Builder.prototype.add=function(e,t){var n=e[this._ref],r=Object.keys(this._fields);this._documents[n]=t||{},this.documentCount+=1;for(var a=0;a<r.length;a++){var o=r[a],i=this._fields[o].extractor,l=i?i(e):e[o],s=this.tokenizer(l,{fields:[o]}),u=this.pipeline.run(s),c=new R.FieldRef(n,o),d=Object.create(null);this.fieldTermFrequencies[c]=d,this.fieldLengths[c]=0,this.fieldLengths[c]+=u.length;for(var f=0;f<u.length;f++){var p=u[f];if(null==d[p]&&(d[p]=0),d[p]+=1,null==this.invertedIndex[p]){var h=Object.create(null);h._index=this.termIndex,this.termIndex+=1;for(var m=0;m<r.length;m++)h[r[m]]=Object.create(null);this.invertedIndex[p]=h}null==this.invertedIndex[p][o][n]&&(this.invertedIndex[p][o][n]=Object.create(null));for(var g=0;g<this.metadataWhitelist.length;g++){var v=this.metadataWhitelist[g],b=p.metadata[v];null==this.invertedIndex[p][o][n][v]&&(this.invertedIndex[p][o][n][v]=[]),this.invertedIndex[p][o][n][v].push(b)}}}},R.Builder.prototype.calculateAverageFieldLengths=function(){for(var e=Object.keys(this.fieldLengths),t=e.length,n={},r={},a=0;a<t;a++){var o=R.FieldRef.fromString(e[a]),i=o.fieldName;r[i]||(r[i]=0),r[i]+=1,n[i]||(n[i]=0),n[i]+=this.fieldLengths[o]}var l=Object.keys(this._fields);for(a=0;a<l.length;a++){var s=l[a];n[s]=n[s]/r[s]}this.averageFieldLength=n},R.Builder.prototype.createFieldVectors=function(){for(var e={},t=Object.keys(this.fieldTermFrequencies),n=t.length,r=Object.create(null),a=0;a<n;a++){for(var o=R.FieldRef.fromString(t[a]),i=o.fieldName,l=this.fieldLengths[o],s=new R.Vector,u=this.fieldTermFrequencies[o],c=Object.keys(u),d=c.length,f=this._fields[i].boost||1,p=this._documents[o.docRef].boost||1,h=0;h<d;h++){var m,g,v,b=c[h],y=u[b],w=this.invertedIndex[b]._index;void 0===r[b]?(m=R.idf(this.invertedIndex[b],this.documentCount),r[b]=m):m=r[b],g=m*((this._k1+1)*y)/(this._k1*(1-this._b+this._b*(l/this.averageFieldLength[i]))+y),g*=f,g*=p,v=Math.round(1e3*g)/1e3,s.insert(w,v)}e[o]=s}this.fieldVectors=e},R.Builder.prototype.createTokenSet=function(){this.tokenSet=R.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},R.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new R.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},R.Builder.prototype.use=function(e){var t=Array.prototype.slice.call(arguments,1);t.unshift(this),e.apply(this,t)},R.MatchData=function(e,t,n){for(var r=Object.create(null),a=Object.keys(n||{}),o=0;o<a.length;o++){var i=a[o];r[i]=n[i].slice()}this.metadata=Object.create(null),void 0!==e&&(this.metadata[e]=Object.create(null),this.metadata[e][t]=r)},R.MatchData.prototype.combine=function(e){for(var t=Object.keys(e.metadata),n=0;n<t.length;n++){var r=t[n],a=Object.keys(e.metadata[r]);null==this.metadata[r]&&(this.metadata[r]=Object.create(null));for(var o=0;o<a.length;o++){var i=a[o],l=Object.keys(e.metadata[r][i]);null==this.metadata[r][i]&&(this.metadata[r][i]=Object.create(null));for(var s=0;s<l.length;s++){var u=l[s];null==this.metadata[r][i][u]?this.metadata[r][i][u]=e.metadata[r][i][u]:this.metadata[r][i][u]=this.metadata[r][i][u].concat(e.metadata[r][i][u])}}}},R.MatchData.prototype.add=function(e,t,n){if(!(e in this.metadata))return this.metadata[e]=Object.create(null),void(this.metadata[e][t]=n);if(t in this.metadata[e])for(var r=Object.keys(n),a=0;a<r.length;a++){var o=r[a];o in this.metadata[e][t]?this.metadata[e][t][o]=this.metadata[e][t][o].concat(n[o]):this.metadata[e][t][o]=n[o]}else this.metadata[e][t]=n},R.Query=function(e){this.clauses=[],this.allFields=e},R.Query.wildcard=new String("*"),R.Query.wildcard.NONE=0,R.Query.wildcard.LEADING=1,R.Query.wildcard.TRAILING=2,R.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},R.Query.prototype.clause=function(e){return"fields"in e||(e.fields=this.allFields),"boost"in e||(e.boost=1),"usePipeline"in e||(e.usePipeline=!0),"wildcard"in e||(e.wildcard=R.Query.wildcard.NONE),e.wildcard&R.Query.wildcard.LEADING&&e.term.charAt(0)!=R.Query.wildcard&&(e.term="*"+e.term),e.wildcard&R.Query.wildcard.TRAILING&&e.term.slice(-1)!=R.Query.wildcard&&(e.term=e.term+"*"),"presence"in e||(e.presence=R.Query.presence.OPTIONAL),this.clauses.push(e),this},R.Query.prototype.isNegated=function(){for(var e=0;e<this.clauses.length;e++)if(this.clauses[e].presence!=R.Query.presence.PROHIBITED)return!1;return!0},R.Query.prototype.term=function(e,t){if(Array.isArray(e))return e.forEach((function(e){this.term(e,R.utils.clone(t))}),this),this;var n=t||{};return n.term=e.toString(),this.clause(n),this},R.QueryParseError=function(e,t,n){this.name="QueryParseError",this.message=e,this.start=t,this.end=n},R.QueryParseError.prototype=new Error,R.QueryLexer=function(e){this.lexemes=[],this.str=e,this.length=e.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},R.QueryLexer.prototype.run=function(){for(var e=R.QueryLexer.lexText;e;)e=e(this)},R.QueryLexer.prototype.sliceString=function(){for(var e=[],t=this.start,n=this.pos,r=0;r<this.escapeCharPositions.length;r++)n=this.escapeCharPositions[r],e.push(this.str.slice(t,n)),t=n+1;return e.push(this.str.slice(t,this.pos)),this.escapeCharPositions.length=0,e.join("")},R.QueryLexer.prototype.emit=function(e){this.lexemes.push({type:e,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},R.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},R.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return R.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},R.QueryLexer.prototype.width=function(){return this.pos-this.start},R.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},R.QueryLexer.prototype.backup=function(){this.pos-=1},R.QueryLexer.prototype.acceptDigitRun=function(){var e,t;do{t=(e=this.next()).charCodeAt(0)}while(t>47&&t<58);e!=R.QueryLexer.EOS&&this.backup()},R.QueryLexer.prototype.more=function(){return this.pos<this.length},R.QueryLexer.EOS="EOS",R.QueryLexer.FIELD="FIELD",R.QueryLexer.TERM="TERM",R.QueryLexer.EDIT_DISTANCE="EDIT_DISTANCE",R.QueryLexer.BOOST="BOOST",R.QueryLexer.PRESENCE="PRESENCE",R.QueryLexer.lexField=function(e){return e.backup(),e.emit(R.QueryLexer.FIELD),e.ignore(),R.QueryLexer.lexText},R.QueryLexer.lexTerm=function(e){if(e.width()>1&&(e.backup(),e.emit(R.QueryLexer.TERM)),e.ignore(),e.more())return R.QueryLexer.lexText},R.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(R.QueryLexer.EDIT_DISTANCE),R.QueryLexer.lexText},R.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(R.QueryLexer.BOOST),R.QueryLexer.lexText},R.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(R.QueryLexer.TERM)},R.QueryLexer.termSeparator=R.tokenizer.separator,R.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==R.QueryLexer.EOS)return R.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(":"==t)return R.QueryLexer.lexField;if("~"==t)return e.backup(),e.width()>0&&e.emit(R.QueryLexer.TERM),R.QueryLexer.lexEditDistance;if("^"==t)return e.backup(),e.width()>0&&e.emit(R.QueryLexer.TERM),R.QueryLexer.lexBoost;if("+"==t&&1===e.width())return e.emit(R.QueryLexer.PRESENCE),R.QueryLexer.lexText;if("-"==t&&1===e.width())return e.emit(R.QueryLexer.PRESENCE),R.QueryLexer.lexText;if(t.match(R.QueryLexer.termSeparator))return R.QueryLexer.lexTerm}else e.escapeCharacter()}},R.QueryParser=function(e,t){this.lexer=new R.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},R.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=R.QueryParser.parseClause;e;)e=e(this);return this.query},R.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},R.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},R.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},R.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(null!=t)switch(t.type){case R.QueryLexer.PRESENCE:return R.QueryParser.parsePresence;case R.QueryLexer.FIELD:return R.QueryParser.parseField;case R.QueryLexer.TERM:return R.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+t.type;throw t.str.length>=1&&(n+=" with value '"+t.str+"'"),new R.QueryParseError(n,t.start,t.end)}},R.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(null!=t){switch(t.str){case"-":e.currentClause.presence=R.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=R.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+t.str+"'";throw new R.QueryParseError(n,t.start,t.end)}var r=e.peekLexeme();if(null==r){n="expecting term or field, found nothing";throw new R.QueryParseError(n,t.start,t.end)}switch(r.type){case R.QueryLexer.FIELD:return R.QueryParser.parseField;case R.QueryLexer.TERM:return R.QueryParser.parseTerm;default:n="expecting term or field, found '"+r.type+"'";throw new R.QueryParseError(n,r.start,r.end)}}},R.QueryParser.parseField=function(e){var t=e.consumeLexeme();if(null!=t){if(-1==e.query.allFields.indexOf(t.str)){var n=e.query.allFields.map((function(e){return"'"+e+"'"})).join(", "),r="unrecognised field '"+t.str+"', possible fields: "+n;throw new R.QueryParseError(r,t.start,t.end)}e.currentClause.fields=[t.str];var a=e.peekLexeme();if(null==a){r="expecting term, found nothing";throw new R.QueryParseError(r,t.start,t.end)}if(a.type===R.QueryLexer.TERM)return R.QueryParser.parseTerm;r="expecting term, found '"+a.type+"'";throw new R.QueryParseError(r,a.start,a.end)}},R.QueryParser.parseTerm=function(e){var t=e.consumeLexeme();if(null!=t){e.currentClause.term=t.str.toLowerCase(),-1!=t.str.indexOf("*")&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(null!=n)switch(n.type){case R.QueryLexer.TERM:return e.nextClause(),R.QueryParser.parseTerm;case R.QueryLexer.FIELD:return e.nextClause(),R.QueryParser.parseField;case R.QueryLexer.EDIT_DISTANCE:return R.QueryParser.parseEditDistance;case R.QueryLexer.BOOST:return R.QueryParser.parseBoost;case R.QueryLexer.PRESENCE:return e.nextClause(),R.QueryParser.parsePresence;default:var r="Unexpected lexeme type '"+n.type+"'";throw new R.QueryParseError(r,n.start,n.end)}else e.nextClause()}},R.QueryParser.parseEditDistance=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var r="edit distance must be numeric";throw new R.QueryParseError(r,t.start,t.end)}e.currentClause.editDistance=n;var a=e.peekLexeme();if(null!=a)switch(a.type){case R.QueryLexer.TERM:return e.nextClause(),R.QueryParser.parseTerm;case R.QueryLexer.FIELD:return e.nextClause(),R.QueryParser.parseField;case R.QueryLexer.EDIT_DISTANCE:return R.QueryParser.parseEditDistance;case R.QueryLexer.BOOST:return R.QueryParser.parseBoost;case R.QueryLexer.PRESENCE:return e.nextClause(),R.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+a.type+"'";throw new R.QueryParseError(r,a.start,a.end)}else e.nextClause()}},R.QueryParser.parseBoost=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var r="boost must be numeric";throw new R.QueryParseError(r,t.start,t.end)}e.currentClause.boost=n;var a=e.peekLexeme();if(null!=a)switch(a.type){case R.QueryLexer.TERM:return e.nextClause(),R.QueryParser.parseTerm;case R.QueryLexer.FIELD:return e.nextClause(),R.QueryParser.parseField;case R.QueryLexer.EDIT_DISTANCE:return R.QueryParser.parseEditDistance;case R.QueryLexer.BOOST:return R.QueryParser.parseBoost;case R.QueryLexer.PRESENCE:return e.nextClause(),R.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+a.type+"'";throw new R.QueryParseError(r,a.start,a.end)}else e.nextClause()}},void 0===(a="function"==typeof(r=function(){return R})?r.call(t,n,t,e):r)||(e.exports=a)}()},27861:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={icon:"icon_S7Kx",s:"s_AZDZ",m:"m_thRi",l:"l_WHPt",fill:"fill_hNhN",stroke:"stroke_N8dm"}},10153:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={backdrop:"backdrop_Ifvc",navWrapper:"navWrapper_ybYI",nav:"nav_cMpg",visible:"visible_ynAX",wrapper:"wrapper_SWrM",fullscreenButton:"fullscreenButton_Bocn",active:"active_qZD5"}},8633:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={toggle:"toggle_K23S",toggleButton:"toggleButton_dl49",darkToggleIcon:"darkToggleIcon_lKkA",lightToggleIcon:"lightToggleIcon_K4TL",toggleButtonDisabled:"toggleButtonDisabled_AAS_"}},79762:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={firstRow:"firstRow_ar1q",secondRow:"secondRow__ww3",backToTop:"backToTop_wDfN",footerLink:"footerLink_sh7M"}},90826:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={colorModeToggle:"colorModeToggle_GSaI",rightSection:"rightSection_CLeF",iconButtonGroup:"iconButtonGroup_ktNv"}},83244:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={dropdownNavbarItem:"dropdownNavbarItem_o23I"}},31259:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={modal:"modal_kLVz",closeButton:"closeButton_Rr0e",header:"header_QwCa"}},61699:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={root:"root_ONDG",empty:"empty_a7qb",title:"title_uwS_",item:"item_RHYF",itemTitle:"itemTitle_jtAv"}},9592:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={root:"root_xZfc",textField:"textField_af43"}},1443:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={root:"root_N57j"}},18589:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={root:"root_Ooa0",level1:"level1_fpUf",icon:"icon_sZn2",fill:"fill_fkan",stroke:"stroke_j3wH"}},86620:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={root:"root_JWD1"}},38076:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={root:"root_EFVO"}},20550:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={root:"root_ltHz",noResults:"noResults_mD2O",groups:"groups_p1lF",divider:"divider_eGUz",topBar:"topBar_Dtew"}},22473:(e,t,n)=>{"use strict";n.r(t)},11057:(e,t,n)=>{"use strict";n.r(t)},93878:(e,t,n)=>{"use strict";n.r(t)},32497:(e,t,n)=>{"use strict";n.r(t)},97087:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={navbarHideable:"navbarHideable_OoEf",navbarHidden:"navbarHidden_zoxl"}},88822:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={linkContent:"linkContent__x3v",externalLinkIcon:"externalLinkIcon_Qfue"}},65787:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={themedImage:"themedImage_kfRS","themedImage--light":"themedImage--light_BL8e","themedImage--dark":"themedImage--dark_OvIx"}},36459:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={root:"root_QACb"}},97142:(e,t)=>{"use strict";t.I=function(e){e.client&&(document.head.appendChild(e.msh=document.createElement("style")),e.createRule=function(t,n){var r=t+"{}";n&&(r=n+"{"+r+"}");var a=n?e.msh.sheet:e.sh.sheet,o=a.insertRule(r,a.cssRules.length),i=(a.cssRules||a.rules)[o];if(i.index=o,n){var l=(i.cssRules||i.rules)[0];i.style=l.style,i.styleMap=l.styleMap}return i})}},52099:(e,t,n)=>{"use strict";var r=n(39662).D;t.I=function(e){if(e.client){0;var t=e.kebab;n.prototype.diff=function(e){var n,r=this.decl,a=this.rule.style;for(n in r)void 0===e[n]&&a.removeProperty(n);for(n in e)e[n]!==r[n]&&a.setProperty(t(n),e[n]);this.decl=e},n.prototype.del=function(){r(this.rule)},a.prototype.diff=function(e){var t=this.tree;for(var r in t)if(void 0===e[r]){var a=t[r];for(var o in a)a[o].del()}for(var r in e)if(void 0===t[r])for(var o in e[r]){(s=new n(o,r)).diff(e[r][o]),e[r][o]=s}else{var i=t[r],l=e[r];for(var o in i)l[o]||i[o].del();for(var o in l){var s;(s=i[o])?(s.diff(l[o]),l[o]=s):((s=new n(o,r)).diff(l[o]),l[o]=s)}}this.tree=e},e.VRule=n,e.VSheet=a}function n(t,n){this.rule=e.createRule(t,n),this.decl={}}function a(){this.tree={}}}},87749:(e,t)=>{t.z=function e(t,n,r,a){var o,i,l={},s=!1;for(o in n)"object"!=typeof(i=n[o])&&(s=!0,l[o]=i);for(o in s&&(t[a]||(t[a]={}),t[a][r]=l),n)if("object"==typeof(i=n[o]))if("@"===o[0])e(t,i,r,o);else{var u=o.indexOf("&")>-1,c=r.split(",");if(u)for(var d=0;d<c.length;d++)c[d]=o.replace(/&/g,c[d]);else for(d=0;d<c.length;d++)c[d]=c[d]+" "+o;e(t,i,c.join(","),a)}}},39662:(e,t)=>{t.D=function(e){var t=e.index,n=e.parentStyleSheet,r=n.cssRules||n.rules;for(t=Math.max(t,r.length-1);t>=0;){if(r[t]===e){n.deleteRule(t);break}t--}}},40818:(e,t)=>{"use strict";var n=/[A-Z]/g;t.U=function(e){var t=(e=e||{}).assign||Object.assign;var r=t({raw:"",pfx:"_",client:"object"==typeof window,assign:t,stringify:JSON.stringify,kebab:function(e){return e.replace(n,"-$&").toLowerCase()},decl:function(e,t){return(e=r.kebab(e))+":"+t+";"},hash:function(e){return function(e){for(var t=5381,n=e.length;n;)t=33*t^e.charCodeAt(--n);return"_"+(t>>>0).toString(36)}(r.stringify(e))},selector:function(e,t){return e+(":"===t[0]?"":" ")+t},putRaw:function(e){r.raw+=e}},e);return r.client&&(r.sh||document.head.appendChild(r.sh=document.createElement("style")),r.putRaw=function(e){var t=r.sh.sheet;try{t.insertRule(e,t.cssRules.length)}catch(n){}}),r.put=function(e,t,n){var a,o,i="",l=[];for(a in t)(o=t[a])instanceof Object&&!(o instanceof Array)?l.push(a):i+=r.decl(a,o,e,n);i&&(i=e+"{"+i+"}",r.putRaw(n?n+"{"+i+"}":i));for(var s=0;s<l.length;s++)"@"===(a=l[s])[0]&&"@font-face"!==a?r.putAt(e,t[a],a):r.put(r.selector(e,a),t[a],n)},r.putAt=r.put,r}},74865: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:'<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'};function a(e,t,n){return e<t?t:e>n?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),u=o.querySelector(r.barSelector),c=r.speed,d=r.easing;return o.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,i(e,c,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){s(o,{transition:"all "+c+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),c)}),c)):setTimeout(t,c)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*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");c(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),u=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),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&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 u(e,t){return("string"==typeof e?e:f(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=f(e),r=n+t;u(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=f(e);u(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)},27418:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(a){return!1}}()?Object.assign:function(e,a){for(var o,i,l=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),s=1;s<arguments.length;s++){for(var u in o=Object(arguments[s]))n.call(o,u)&&(l[u]=o[u]);if(t){i=t(o);for(var c=0;c<i.length;c++)r.call(o,i[c])&&(l[i[c]]=o[i[c]])}}return l}},87594:(e,t)=>{function n(e){let t,n=[];for(let r of e.split(",").map((e=>e.trim())))if(/^-?\d+$/.test(r))n.push(parseInt(r,10));else if(t=r.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,r,a,o]=t;if(r&&o){r=parseInt(r),o=parseInt(o);const e=r<o?1:-1;"-"!==a&&".."!==a&&"\u2025"!==a||(o+=e);for(let t=r;t!==o;t+=e)n.push(t)}}return n}t.default=n,e.exports=n},87410:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof a?new a(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++t}),e.__id},clone:function e(t,n){var a,o;switch(n=n||{},r.util.type(t)){case"Object":if(o=r.util.objId(t),n[o])return n[o];for(var i in a={},n[o]=a,t)t.hasOwnProperty(i)&&(a[i]=e(t[i],n));return a;case"Array":return o=r.util.objId(t),n[o]?n[o]:(a=[],n[o]=a,t.forEach((function(t,r){a[r]=e(t,n)})),a);default:return t}},getLanguage:function(t){for(;t;){var n=e.exec(t.className);if(n)return n[1].toLowerCase();t=t.parentElement}return"none"},setLanguage:function(t,n){t.className=t.className.replace(RegExp(e,"gi"),""),t.classList.add("language-"+n)},isActive:function(e,t,n){for(var r="no-"+t;e;){var a=e.classList;if(a.contains(t))return!0;if(a.contains(r))return!1;e=e.parentElement}return!!n}},languages:{plain:n,plaintext:n,text:n,txt:n,extend:function(e,t){var n=r.util.clone(r.languages[e]);for(var a in t)n[a]=t[a];return n},insertBefore:function(e,t,n,a){var o=(a=a||r.languages)[e],i={};for(var l in o)if(o.hasOwnProperty(l)){if(l==t)for(var s in n)n.hasOwnProperty(s)&&(i[s]=n[s]);n.hasOwnProperty(l)||(i[l]=o[l])}var u=a[e];return a[e]=i,r.languages.DFS(r.languages,(function(t,n){n===u&&t!=e&&(this[t]=i)})),i},DFS:function e(t,n,a,o){o=o||{};var i=r.util.objId;for(var l in t)if(t.hasOwnProperty(l)){n.call(t,l,t[l],a||l);var s=t[l],u=r.util.type(s);"Object"!==u||o[i(s)]?"Array"!==u||o[i(s)]||(o[i(s)]=!0,e(s,n,l,o)):(o[i(s)]=!0,e(s,n,null,o))}}},plugins:{},highlight:function(e,t,n){var o={code:e,grammar:t,language:n};return r.hooks.run("before-tokenize",o),o.tokens=r.tokenize(o.code,o.grammar),r.hooks.run("after-tokenize",o),a.stringify(r.util.encode(o.tokens),o.language)},tokenize:function(e,t){var n=t.rest;if(n){for(var r in n)t[r]=n[r];delete t.rest}var a=new l;return s(a,a.head,e),i(e,a,t,a.head,0),function(e){var t=[],n=e.head.next;for(;n!==e.tail;)t.push(n.value),n=n.next;return t}(a)},hooks:{all:{},add:function(e,t){var n=r.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=r.hooks.all[e];if(n&&n.length)for(var a,o=0;a=n[o++];)a(t)}},Token:a};function a(e,t,n,r){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length}function o(e,t,n,r){e.lastIndex=t;var a=e.exec(n);if(a&&r&&a[1]){var o=a[1].length;a.index+=o,a[0]=a[0].slice(o)}return a}function i(e,t,n,l,c,d){for(var f in n)if(n.hasOwnProperty(f)&&n[f]){var p=n[f];p=Array.isArray(p)?p:[p];for(var h=0;h<p.length;++h){if(d&&d.cause==f+","+h)return;var m=p[h],g=m.inside,v=!!m.lookbehind,b=!!m.greedy,y=m.alias;if(b&&!m.pattern.global){var w=m.pattern.toString().match(/[imsuy]*$/)[0];m.pattern=RegExp(m.pattern.source,w+"g")}for(var x=m.pattern||m,k=l.next,_=c;k!==t.tail&&!(d&&_>=d.reach);_+=k.value.length,k=k.next){var E=k.value;if(t.length>e.length)return;if(!(E instanceof a)){var S,C=1;if(b){if(!(S=o(x,_,e,v))||S.index>=e.length)break;var T=S.index,O=S.index+S[0].length,D=_;for(D+=k.value.length;T>=D;)D+=(k=k.next).value.length;if(_=D-=k.value.length,k.value instanceof a)continue;for(var P=k;P!==t.tail&&(D<O||"string"==typeof P.value);P=P.next)C++,D+=P.value.length;C--,E=e.slice(_,D),S.index-=_}else if(!(S=o(x,0,E,v)))continue;T=S.index;var N=S[0],I=E.slice(0,T),A=E.slice(T+N.length),L=_+E.length;d&&L>d.reach&&(d.reach=L);var R=k.prev;if(I&&(R=s(t,R,I),_+=I.length),u(t,R,C),k=s(t,R,new a(f,g?r.tokenize(N,g):N,y,N)),A&&s(t,k,A),C>1){var j={cause:f+","+h,reach:L};i(e,t,n,k.prev,_,j),d&&j.reach>d.reach&&(d.reach=j.reach)}}}}}}function l(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function s(e,t,n){var r=t.next,a={value:n,prev:t,next:r};return t.next=a,r.prev=a,e.length++,a}function u(e,t,n){for(var r=t.next,a=0;a<n&&r!==e.tail;a++)r=r.next;t.next=r,r.prev=t,e.length-=a}return a.stringify=function e(t,n){if("string"==typeof t)return t;if(Array.isArray(t)){var a="";return t.forEach((function(t){a+=e(t,n)})),a}var o={type:t.type,content:e(t.content,n),tag:"span",classes:["token",t.type],attributes:{},language:n},i=t.alias;i&&(Array.isArray(i)?Array.prototype.push.apply(o.classes,i):o.classes.push(i)),r.hooks.run("wrap",o);var l="";for(var s in o.attributes)l+=" "+s+'="'+(o.attributes[s]||"").replace(/"/g,""")+'"';return"<"+o.tag+' class="'+o.classes.join(" ")+'"'+l+">"+o.content+"</"+o.tag+">"},r}(),a=r;r.default=r,a.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.languages.markup.doctype.inside["internal-subset"].inside=a.languages.markup,a.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(a.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:a.languages[t]},n.cdata=/^<!\[CDATA\[|\]\]>$/i;var r={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:a.languages[t]};var o={};o[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},a.languages.insertBefore("markup","cdata",o)}}),Object.defineProperty(a.languages.markup.tag,"addAttribute",{value:function(e,t){a.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:a.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.xml=a.languages.extend("markup",{}),a.languages.ssml=a.languages.xml,a.languages.atom=a.languages.xml,a.languages.rss=a.languages.xml,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+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},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|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|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|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","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=r.variable[1].inside,i=0;i<a.length;i++)o[a[i]]=e.languages.bash[a[i]];e.languages.shell=e.languages.bash}(a),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},a.languages.c=a.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),a.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),a.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},a.languages.c.string],char:a.languages.c.char,comment:a.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:a.languages.c}}}}),a.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete a.languages.c.boolean,function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!<keyword>)\w+(?:\s*\.\s*\w+)*\b/.source.replace(/<keyword>/g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!<keyword>)\w+/.source.replace(/<keyword>/g,(function(){return t.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/<mod-name>(?:\s*:\s*<mod-name>)?|:\s*<mod-name>/.source.replace(/<mod-name>/g,(function(){return n}))+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(a),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(a),function(e){var t,n=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+n.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[n,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var r={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},a={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0};e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:r,number:a,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:a})}(a),a.languages.javascript=a.languages.extend("clike",{"class-name":[a.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),a.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,a.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:a.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:a.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:a.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:a.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:a.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),a.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),a.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),a.languages.markup&&(a.languages.markup.tag.addInlined("script","javascript"),a.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),a.languages.js=a.languages.javascript,function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(a),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-]<PLAIN>)(?:[ \t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(/<PLAIN>/g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),o=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<<prop>>[ \t]+)?)(?:<<value>>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<value>>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<<prop>>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<<prop>>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<<prop>>[ \t]+)?)<<key>>(?=\s*:\s)/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<key>>/g,(function(){return"(?:"+a+"|"+o+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(o),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(a),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(/<inner>/g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),o=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+o+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+o+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\b|\*\*(?:(?!\*)<inner>|\*(?:(?!\*)<inner>)+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\b|\*(?:(?!\*)<inner>|\*\*(?:(?!\*)<inner>)+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~)<inner>)+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\])<inner>)+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\])<inner>)+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike","code-snippet"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n<r;n++){var a=t[n];if("code"===a.type){var o=a.content[1],i=a.content[3];if(o&&i&&"code-language"===o.type&&"code-block"===i.type&&"string"==typeof o.content){var l=o.content.replace(/\b#/g,"sharp").replace(/\b\+\+/g,"pp"),s="language-"+(l=(/[a-z][\w-]*/i.exec(l)||[""])[0].toLowerCase());i.alias?"string"==typeof i.alias?i.alias=[i.alias,s]:i.alias.push(s):i.alias=[s]}}else e(a.content)}}(e.tokens)})),e.hooks.add("wrap",(function(t){if("code-block"===t.type){for(var n="",r=0,a=t.classes.length;r<a;r++){var o=t.classes[r],u=/language-(.+)/.exec(o);if(u){n=u[1];break}}var c,d=e.languages[n];if(d)t.content=e.highlight((c=t.content,c.replace(i,"").replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi,(function(e,t){var n;if("#"===(t=t.toLowerCase())[0])return n="x"===t[1]?parseInt(t.slice(2),16):Number(t.slice(1)),s(n);var r=l[t];return r||e}))),d,n);else if(n&&"none"!==n&&e.plugins.autoloader){var f="md-"+(new Date).valueOf()+"-"+Math.floor(1e16*Math.random());t.attributes.id=f,e.plugins.autoloader.loadLanguages(n,(function(){var t=document.getElementById(f);t&&(t.innerHTML=e.highlight(t.textContent,e.languages[n],n))}))}}}));var i=RegExp(e.languages.markup.tag.pattern.source,"gi"),l={amp:"&",lt:"<",gt:">",quot:'"'},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(a),a.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:a.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},a.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var t=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),n=0;n<t.length;){var r=t[n++];if("keyword"===r.type&&"mutation"===r.content){var a=[];if(d(["definition-mutation","punctuation"])&&"("===c(1).content){n+=2;var o=f(/^\($/,/^\)$/);if(-1===o)continue;for(;n<o;n++){var i=c(0);"variable"===i.type&&(p(i,"variable-input"),a.push(i.content))}n=o+1}if(d(["punctuation","property-query"])&&"{"===c(0).content&&(n++,p(c(0),"property-mutation"),a.length>0)){var l=f(/^\{$/,/^\}$/);if(-1===l)continue;for(var s=n;s<l;s++){var u=t[s];"variable"===u.type&&a.indexOf(u.content)>=0&&p(u,"variable-input")}}}}function c(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n<e.length;n++){var r=c(n+t);if(!r||r.type!==e[n])return!1}return!0}function f(e,r){for(var a=1,o=n;o<t.length;o++){var i=t[o],l=i.content;if("punctuation"===i.type&&"string"==typeof l)if(e.test(l))a++;else if(r.test(l)&&0===--a)return o}return-1}function p(e,t){var n=e.alias;n?Array.isArray(n)||(e.alias=n=[n]):e.alias=n=[],n.push(t)}})),a.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,a=r.inside["interpolation-punctuation"],o=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function l(e,t){return"___"+t.toUpperCase()+"_"+e+"___"}function s(t,n,r){var a={code:t,grammar:n,language:r};return e.hooks.run("before-tokenize",a),a.tokens=e.tokenize(a.code,a.grammar),e.hooks.run("after-tokenize",a),a.tokens}function u(t){var n={};n["interpolation-punctuation"]=a;var o=e.tokenize(t,n);if(3===o.length){var i=[1,1];i.push.apply(i,s(o[1],e.languages.javascript,"javascript")),o.splice.apply(o,i)}return new e.Token("interpolation",o,r.alias,t)}function c(t,n,r){var a=e.tokenize(t,{interpolation:{pattern:RegExp(o),lookbehind:!0}}),i=0,c={},d=s(a.map((function(e){if("string"==typeof e)return e;for(var n,a=e.content;-1!==t.indexOf(n=l(i++,r)););return c[n]=a,n})).join(""),n,r),f=Object.keys(c);return i=0,function e(t){for(var n=0;n<t.length;n++){if(i>=f.length)return;var r=t[n];if("string"==typeof r||"string"==typeof r.content){var a=f[i],o="string"==typeof r?r:r.content,l=o.indexOf(a);if(-1!==l){++i;var s=o.substring(0,l),d=u(c[a]),p=o.substring(l+a.length),h=[];if(s&&h.push(s),h.push(d),p){var m=[p];e(m),h.push.apply(h,m)}"string"==typeof r?(t.splice.apply(t,[n,1].concat(h)),n+=h.length-1):r.content=h}}else{var g=r.content;Array.isArray(g)?e(g):e([g])}}}(d),new e.Token(r,d,"language-"+r,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var d={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function f(e){return"string"==typeof e?e:Array.isArray(e)?e.map(f).join(""):f(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in d&&function t(n){for(var r=0,a=n.length;r<a;r++){var o=n[r];if("string"!=typeof o){var i=o.content;if(Array.isArray(i))if("template-string"===o.type){var l=i[1];if(3===i.length&&"string"!=typeof l&&"embedded-code"===l.type){var s=f(l),u=l.alias,d=Array.isArray(u)?u[0]:u,p=e.languages[d];if(!p)continue;i[1]=c(s,p,d)}}else t(i);else"string"!=typeof i&&t([i])}}}(t.tokens)}))}(a),function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(a),function(e){function t(e,t){return RegExp(e.replace(/<ID>/g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:<ID>(?:\s*,\s*(?:\*\s*as\s+<ID>|\{[^{}]*\}))?|\*\s*as\s+<ID>|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+<ID>)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?<ID>/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r<n.length;r++){var a=n[r],o=e.languages.javascript[a];"RegExp"===e.util.type(o)&&(o=e.languages.javascript[a]={pattern:o});var i=o.inside||{};o.inside=i,i["maybe-class-name"]=/^[A-Z][\s\S]*/}}(a),function(e){var t=e.util.clone(e.languages.javascript),n=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,r=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,a=/(?:\{<S>*\.{3}(?:[^{}]|<BRACES>)*\})/.source;function o(e,t){return e=e.replace(/<S>/g,(function(){return n})).replace(/<BRACES>/g,(function(){return r})).replace(/<SPREAD>/g,(function(){return a})),RegExp(e,t)}a=o(a).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=o(/<\/?(?:[\w.:-]+(?:<S>+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|<BRACES>))?|<SPREAD>))*<S>*\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:o(/<SPREAD>/.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:o(/=<BRACES>/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var i=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(i).join(""):""},l=function(t){for(var n=[],r=0;r<t.length;r++){var a=t[r],o=!1;if("string"!=typeof a&&("tag"===a.type&&a.content[0]&&"tag"===a.content[0].type?"</"===a.content[0].content[0].content?n.length>0&&n[n.length-1].tagName===i(a.content[0].content[1])&&n.pop():"/>"===a.content[a.content.length-1].content||n.push({tagName:i(a.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===a.type&&"{"===a.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===a.type&&"}"===a.content?n[n.length-1].openedBraces--:o=!0),(o||"string"==typeof a)&&n.length>0&&0===n[n.length-1].openedBraces){var s=i(a);r<t.length-1&&("string"==typeof t[r+1]||"plain-text"===t[r+1].type)&&(s+=i(t[r+1]),t.splice(r+1,1)),r>0&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(s=i(t[r-1])+s,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",s,null,s)}a.content&&"string"!=typeof a.content&&l(a.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||l(e.tokens)}))}(a),function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(t).forEach((function(n){var r=t[n],a=[];/^\w+$/.test(n)||a.push(/\w+/.exec(n)[0]),"diff"===n&&a.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:a,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}})),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(a),a.languages.git={comment:/^#.*/m,deleted:/^[-\u2013].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},a.languages.go=a.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),a.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete a.languages.go["class-name"],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<l.length&&!(a>=o.length);s++){var u=l[s];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=o[a],d=n.tokenStack[c],f="string"==typeof u?u:u.content,p=t(r,c),h=f.indexOf(p);if(h>-1){++a;var m=f.substring(0,h),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),v=f.substring(h+p.length),b=[];m&&b.push.apply(b,i([m])),b.push(g),v&&b.push.apply(b,i([v])),"string"==typeof u?l.splice.apply(l,[s,1].concat(b)):u.content=b}}else u.content&&i(u.content)}return l}(n.tokens)}}}})}(a),function(e){e.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:false|true)\b/,block:{pattern:/^(\s*(?:~\s*)?)[#\/]\S+?(?=\s*(?:~\s*)?$|\s)/,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&':()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",(function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")})),e.languages.hbs=e.languages.handlebars}(a),a.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"}},a.languages.webmanifest=a.languages.json,a.languages.less=a.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/,operator:/[+\-*\/]/}),a.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),a.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"builtin-target":{pattern:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,alias:"builtin"},target:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,alias:"symbol",inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,function:{pattern:/(\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \t])/,lookbehind:!0},operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},a.languages.objectivec=a.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<<?=?|>>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete a.languages.objectivec["class-name"],a.languages.objc=a.languages.objectivec,a.languages.ocaml={comment:{pattern:/\(\*[\s\S]*?\*\)/,greedy:!0},char:{pattern:/'(?:[^\\\r\n']|\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,greedy:!0},string:[{pattern:/"(?:\\(?:[\s\S]|\r\n)|[^\\\r\n"])*"/,greedy:!0},{pattern:/\{([a-z_]*)\|[\s\S]*?\|\1\}/,greedy:!0}],number:[/\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\b/i,/\b0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]*)?(?:p[+-]?\d[\d_]*)?(?!\w)/i,/\b\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?\d[\d_]*)?(?!\w)/i],directive:{pattern:/\B#\w+/,alias:"property"},label:{pattern:/\B~\w+/,alias:"property"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"symbol"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,"operator-like-punctuation":{pattern:/\[[<>|]|[>|]\]|\{<|>\}/,alias:"punctuation"},operator:/\.[.~]|:[=>]|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/;;|::|[(){}\[\].,:;#]|\b_\b/},a.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},a.languages.python["string-interpolation"].inside.interpolation.inside.rest=a.languages.python,a.languages.py=a.languages.python,a.languages.reason=a.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),a.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete a.languages.reason.function,function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|not|or)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})}(a),a.languages.scss=a.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),a.languages.insertBefore("scss","atrule",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),a.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),a.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),a.languages.scss.atrule.inside.rest=a.languages.scss,function(e){var t={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},n={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},r={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/\burl\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:else|for|if|return|unless)(?=\s|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,boolean:/\b(?:false|true)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:n,punctuation:/[{}()\[\];:,]/};r.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^\{|\}$/,alias:"punctuation"},rest:r}},r.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:r}},e.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:r}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:r}},statement:{pattern:/(^[ \t]*)(?:else|for|if|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:r}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,]$(?!(?:\r?\n|\r)(?:\{|\2[ \t])))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:r.interpolation}},rest:r}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t])))/m,lookbehind:!0,inside:{interpolation:r.interpolation,comment:r.comment,punctuation:/[{},]/}},func:r.func,string:r.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:r.interpolation,punctuation:/[{}()\[\];:.]/}}(a),function(e){var t=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"];var n=e.languages.tsx.tag;n.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+n.pattern.source+")",n.pattern.flags),n.lookbehind=!0}(a),a.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^`|~]+/,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/};const o=a},29901:e=>{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to <a href="https://webplatform.github.io/docs/">WebPlatform.org documentation</a>. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (<code>.comment</code> can become <code>.namespace--comment</code>) or replace them with your defined ones (like <code>.editor__comment</code>). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the <code>highlightAll</code> and <code>highlightAllUnder</code> methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},2885:(e,t,n)=>{const r=n(29901),a=n(39642),o=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...o,...Object.keys(Prism.languages)];a(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(16500).resolve(t)],delete Prism.languages[e],n(16500)(t),o.add(e)}))}i.silent=!1,e.exports=i},6726:(e,t,n)=>{var r={"./":2885};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=6726},16500:(e,t,n)=>{var r={"./":2885};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=16500},39642:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n<r;n++)t[e[n]]=!0;return t}function r(e){var n={},r=[];function a(r,o){if(!(r in n)){o.push(r);var i=o.indexOf(r);if(i<o.length-1)throw new Error("Circular dependency: "+o.slice(i).join(" -> "));var l={},s=e[r];if(s){function u(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in l))for(var i in a(t,o),l[t]=!0,n[t])l[i]=!0}t(s.require,u),t(s.optional,u),t(s.modify,u)}n[r]=l,o.pop()}}return function(e){var t=n[e];return t||(a(e,r),t=n[e]),t}}function a(e){for(var t in e)return!0;return!1}return function(o,i,l){var s=function(e){var t={};for(var n in e){var r=e[n];for(var a in r)if("meta"!=a){var o=r[a];t[a]="string"==typeof o?{title:o}:o}}return t}(o),u=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var a in n={},e){var o=e[a];t(o&&o.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+a+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+a+" because it is a component.");n[t]=a}))}return n[r]||r}}(s);i=i.map(u),l=(l||[]).map(u);var c=n(i),d=n(l);i.forEach((function e(n){var r=s[n];t(r&&r.require,(function(t){t in d||(c[t]=!0,e(t))}))}));for(var f,p=r(s),h=c;a(h);){for(var m in f={},h){var g=s[m];t(g&&g.modify,(function(e){e in d&&(f[e]=!0)}))}for(var v in d)if(!(v in c))for(var b in p(v))if(b in c){f[v]=!0;break}for(var y in h=f)c[y]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,a){var o=a?a.series:void 0,i=a?a.parallel:e,l={},s={};function u(e){if(e in l)return l[e];s[e]=!0;var a,c=[];for(var d in t(e))d in n&&c.push(d);if(0===c.length)a=r(e);else{var f=i(c.map((function(e){var t=u(e);return delete s[e],t})));o?a=o(f,(function(){return r(e)})):r(e)}return l[e]=a}for(var c in n)u(c);var d=[];for(var f in s)d.push(l[f]);return i(d)}(p,c,t,n)}};return w}}();e.exports=t},92703:(e,t,n)=>{"use strict";var r=n(50414);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}},45697:(e,t,n)=>{e.exports=n(92703)()},50414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},64448:(e,t,n)=>{"use strict";var r=n(67294),a=n(27418),o=n(63840);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}if(!r)throw Error(i(227));var l=new Set,s={};function u(e,t){c(e,t),c(e+"Capture",t)}function c(e,t){for(s[e]=t,e=0;e<t.length;e++)l.add(t[e])}var d=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),f=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,p=Object.prototype.hasOwnProperty,h={},m={};function g(e,t,n,r,a,o,i){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=a,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=i}var v={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){v[e]=new g(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];v[t]=new g(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){v[e]=new g(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){v[e]=new g(e,2,!1,e,null,!1,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){v[e]=new g(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){v[e]=new g(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){v[e]=new g(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){v[e]=new g(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){v[e]=new g(e,5,!1,e.toLowerCase(),null,!1,!1)}));var b=/[\-:]([a-z])/g;function y(e){return e[1].toUpperCase()}function w(e,t,n,r){var a=v.hasOwnProperty(t)?v[t]:null;(null!==a?0===a.type:!r&&(2<t.length&&("o"===t[0]||"O"===t[0])&&("n"===t[1]||"N"===t[1])))||(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,a,r)&&(n=null),r||null===a?function(e){return!!p.call(m,e)||!p.call(h,e)&&(f.test(e)?m[e]=!0:(h[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):a.mustUseProperty?e[a.propertyName]=null===n?3!==a.type&&"":n:(t=a.attributeName,r=a.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(a=a.type)||4===a&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(b,y);v[t]=new g(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(b,y);v[t]=new g(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(b,y);v[t]=new g(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){v[e]=new g(e,1,!1,e.toLowerCase(),null,!1,!1)})),v.xlinkHref=new g("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){v[e]=new g(e,1,!1,e.toLowerCase(),null,!0,!0)}));var x=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,k=60103,_=60106,E=60107,S=60108,C=60114,T=60109,O=60110,D=60112,P=60113,N=60120,I=60115,A=60116,L=60121,R=60128,j=60129,M=60130,F=60131;if("function"==typeof Symbol&&Symbol.for){var B=Symbol.for;k=B("react.element"),_=B("react.portal"),E=B("react.fragment"),S=B("react.strict_mode"),C=B("react.profiler"),T=B("react.provider"),O=B("react.context"),D=B("react.forward_ref"),P=B("react.suspense"),N=B("react.suspense_list"),I=B("react.memo"),A=B("react.lazy"),L=B("react.block"),B("react.scope"),R=B("react.opaque.id"),j=B("react.debug_trace_mode"),M=B("react.offscreen"),F=B("react.legacy_hidden")}var z,$="function"==typeof Symbol&&Symbol.iterator;function U(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=$&&e[$]||e["@@iterator"])?e:null}function H(e){if(void 0===z)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);z=t&&t[1]||""}return"\n"+z+e}var V=!1;function q(e,t){if(!e||V)return"";V=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(s){var r=s}Reflect.construct(e,[],t)}else{try{t.call()}catch(s){r=s}e.call(t.prototype)}else{try{throw Error()}catch(s){r=s}e()}}catch(s){if(s&&r&&"string"==typeof s.stack){for(var a=s.stack.split("\n"),o=r.stack.split("\n"),i=a.length-1,l=o.length-1;1<=i&&0<=l&&a[i]!==o[l];)l--;for(;1<=i&&0<=l;i--,l--)if(a[i]!==o[l]){if(1!==i||1!==l)do{if(i--,0>--l||a[i]!==o[l])return"\n"+a[i].replace(" at new "," at ")}while(1<=i&&0<=l);break}}}finally{V=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?H(e):""}function W(e){switch(e.tag){case 5:return H(e.type);case 16:return H("Lazy");case 13:return H("Suspense");case 19:return H("SuspenseList");case 0:case 2:case 15:return e=q(e.type,!1);case 11:return e=q(e.type.render,!1);case 22:return e=q(e.type._render,!1);case 1:return e=q(e.type,!0);default:return""}}function G(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case E:return"Fragment";case _:return"Portal";case C:return"Profiler";case S:return"StrictMode";case P:return"Suspense";case N:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case O:return(e.displayName||"Context")+".Consumer";case T:return(e._context.displayName||"Context")+".Provider";case D:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case I:return G(e.type);case L:return G(e._render);case A:t=e._payload,e=e._init;try{return G(e(t))}catch(n){}}return null}function Z(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function Q(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function Y(e){e._valueTracker||(e._valueTracker=function(e){var t=Q(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var a=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return a.call(this)},set:function(e){r=""+e,o.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function X(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=Q(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function K(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function J(e,t){var n=t.checked;return a({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function ee(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=Z(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function te(e,t){null!=(t=t.checked)&&w(e,"checked",t,!1)}function ne(e,t){te(e,t);var n=Z(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?ae(e,t.type,n):t.hasOwnProperty("defaultValue")&&ae(e,t.type,Z(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function re(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function ae(e,t,n){"number"===t&&K(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}function oe(e,t){return e=a({children:void 0},t),(t=function(e){var t="";return r.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(t.children))&&(e.children=t),e}function ie(e,t,n,r){if(e=e.options,t){t={};for(var a=0;a<n.length;a++)t["$"+n[a]]=!0;for(n=0;n<e.length;n++)a=t.hasOwnProperty("$"+e[n].value),e[n].selected!==a&&(e[n].selected=a),a&&r&&(e[n].defaultSelected=!0)}else{for(n=""+Z(n),t=null,a=0;a<e.length;a++){if(e[a].value===n)return e[a].selected=!0,void(r&&(e[a].defaultSelected=!0));null!==t||e[a].disabled||(t=e[a])}null!==t&&(t.selected=!0)}}function le(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(i(91));return a({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function se(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(i(92));if(Array.isArray(n)){if(!(1>=n.length))throw Error(i(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:Z(n)}}function ue(e,t){var n=Z(t.value),r=Z(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function ce(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}var de={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function fe(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function pe(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?fe(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var he,me,ge=(me=function(e,t){if(e.namespaceURI!==de.svg||"innerHTML"in e)e.innerHTML=t;else{for((he=he||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=he.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return me(e,t)}))}:me);function ve(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var be={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ye=["Webkit","ms","Moz","O"];function we(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||be.hasOwnProperty(e)&&be[e]?(""+t).trim():t+"px"}function xe(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),a=we(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,a):e[n]=a}}Object.keys(be).forEach((function(e){ye.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),be[t]=be[e]}))}));var ke=a({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function _e(e,t){if(t){if(ke[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(i(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(i(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(i(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(i(62))}}function Ee(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function Se(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var Ce=null,Te=null,Oe=null;function De(e){if(e=na(e)){if("function"!=typeof Ce)throw Error(i(280));var t=e.stateNode;t&&(t=aa(t),Ce(e.stateNode,e.type,t))}}function Pe(e){Te?Oe?Oe.push(e):Oe=[e]:Te=e}function Ne(){if(Te){var e=Te,t=Oe;if(Oe=Te=null,De(e),t)for(e=0;e<t.length;e++)De(t[e])}}function Ie(e,t){return e(t)}function Ae(e,t,n,r,a){return e(t,n,r,a)}function Le(){}var Re=Ie,je=!1,Me=!1;function Fe(){null===Te&&null===Oe||(Le(),Ne())}function Be(e,t){var n=e.stateNode;if(null===n)return null;var r=aa(n);if(null===r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(i(231,t,typeof n));return n}var ze=!1;if(d)try{var $e={};Object.defineProperty($e,"passive",{get:function(){ze=!0}}),window.addEventListener("test",$e,$e),window.removeEventListener("test",$e,$e)}catch(me){ze=!1}function Ue(e,t,n,r,a,o,i,l,s){var u=Array.prototype.slice.call(arguments,3);try{t.apply(n,u)}catch(c){this.onError(c)}}var He=!1,Ve=null,qe=!1,We=null,Ge={onError:function(e){He=!0,Ve=e}};function Ze(e,t,n,r,a,o,i,l,s){He=!1,Ve=null,Ue.apply(Ge,arguments)}function Qe(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!=(1026&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function Ye(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function Xe(e){if(Qe(e)!==e)throw Error(i(188))}function Ke(e){if(e=function(e){var t=e.alternate;if(!t){if(null===(t=Qe(e)))throw Error(i(188));return t!==e?null:e}for(var n=e,r=t;;){var a=n.return;if(null===a)break;var o=a.alternate;if(null===o){if(null!==(r=a.return)){n=r;continue}break}if(a.child===o.child){for(o=a.child;o;){if(o===n)return Xe(a),e;if(o===r)return Xe(a),t;o=o.sibling}throw Error(i(188))}if(n.return!==r.return)n=a,r=o;else{for(var l=!1,s=a.child;s;){if(s===n){l=!0,n=a,r=o;break}if(s===r){l=!0,r=a,n=o;break}s=s.sibling}if(!l){for(s=o.child;s;){if(s===n){l=!0,n=o,r=a;break}if(s===r){l=!0,r=o,n=a;break}s=s.sibling}if(!l)throw Error(i(189))}}if(n.alternate!==r)throw Error(i(190))}if(3!==n.tag)throw Error(i(188));return n.stateNode.current===n?e:t}(e),!e)return null;for(var t=e;;){if(5===t.tag||6===t.tag)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}function Je(e,t){for(var n=e.alternate;null!==t;){if(t===e||t===n)return!0;t=t.return}return!1}var et,tt,nt,rt,at=!1,ot=[],it=null,lt=null,st=null,ut=new Map,ct=new Map,dt=[],ft="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function pt(e,t,n,r,a){return{blockedOn:e,domEventName:t,eventSystemFlags:16|n,nativeEvent:a,targetContainers:[r]}}function ht(e,t){switch(e){case"focusin":case"focusout":it=null;break;case"dragenter":case"dragleave":lt=null;break;case"mouseover":case"mouseout":st=null;break;case"pointerover":case"pointerout":ut.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":ct.delete(t.pointerId)}}function mt(e,t,n,r,a,o){return null===e||e.nativeEvent!==o?(e=pt(t,n,r,a,o),null!==t&&(null!==(t=na(t))&&tt(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==a&&-1===t.indexOf(a)&&t.push(a),e)}function gt(e){var t=ta(e.target);if(null!==t){var n=Qe(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=Ye(n)))return e.blockedOn=t,void rt(e.lanePriority,(function(){o.unstable_runWithPriority(e.priority,(function(){nt(n)}))}))}else if(3===t&&n.stateNode.hydrate)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function vt(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Kt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=na(n))&&tt(t),e.blockedOn=n,!1;t.shift()}return!0}function bt(e,t,n){vt(e)&&n.delete(t)}function yt(){for(at=!1;0<ot.length;){var e=ot[0];if(null!==e.blockedOn){null!==(e=na(e.blockedOn))&&et(e);break}for(var t=e.targetContainers;0<t.length;){var n=Kt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n){e.blockedOn=n;break}t.shift()}null===e.blockedOn&&ot.shift()}null!==it&&vt(it)&&(it=null),null!==lt&&vt(lt)&&(lt=null),null!==st&&vt(st)&&(st=null),ut.forEach(bt),ct.forEach(bt)}function wt(e,t){e.blockedOn===t&&(e.blockedOn=null,at||(at=!0,o.unstable_scheduleCallback(o.unstable_NormalPriority,yt)))}function xt(e){function t(t){return wt(t,e)}if(0<ot.length){wt(ot[0],e);for(var n=1;n<ot.length;n++){var r=ot[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==it&&wt(it,e),null!==lt&&wt(lt,e),null!==st&&wt(st,e),ut.forEach(t),ct.forEach(t),n=0;n<dt.length;n++)(r=dt[n]).blockedOn===e&&(r.blockedOn=null);for(;0<dt.length&&null===(n=dt[0]).blockedOn;)gt(n),null===n.blockedOn&&dt.shift()}function kt(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var _t={animationend:kt("Animation","AnimationEnd"),animationiteration:kt("Animation","AnimationIteration"),animationstart:kt("Animation","AnimationStart"),transitionend:kt("Transition","TransitionEnd")},Et={},St={};function Ct(e){if(Et[e])return Et[e];if(!_t[e])return e;var t,n=_t[e];for(t in n)if(n.hasOwnProperty(t)&&t in St)return Et[e]=n[t];return e}d&&(St=document.createElement("div").style,"AnimationEvent"in window||(delete _t.animationend.animation,delete _t.animationiteration.animation,delete _t.animationstart.animation),"TransitionEvent"in window||delete _t.transitionend.transition);var Tt=Ct("animationend"),Ot=Ct("animationiteration"),Dt=Ct("animationstart"),Pt=Ct("transitionend"),Nt=new Map,It=new Map,At=["abort","abort",Tt,"animationEnd",Ot,"animationIteration",Dt,"animationStart","canplay","canPlay","canplaythrough","canPlayThrough","durationchange","durationChange","emptied","emptied","encrypted","encrypted","ended","ended","error","error","gotpointercapture","gotPointerCapture","load","load","loadeddata","loadedData","loadedmetadata","loadedMetadata","loadstart","loadStart","lostpointercapture","lostPointerCapture","playing","playing","progress","progress","seeking","seeking","stalled","stalled","suspend","suspend","timeupdate","timeUpdate",Pt,"transitionEnd","waiting","waiting"];function Lt(e,t){for(var n=0;n<e.length;n+=2){var r=e[n],a=e[n+1];a="on"+(a[0].toUpperCase()+a.slice(1)),It.set(r,t),Nt.set(r,a),u(a,[r])}}(0,o.unstable_now)();var Rt=8;function jt(e){if(0!=(1&e))return Rt=15,1;if(0!=(2&e))return Rt=14,2;if(0!=(4&e))return Rt=13,4;var t=24&e;return 0!==t?(Rt=12,t):0!=(32&e)?(Rt=11,32):0!==(t=192&e)?(Rt=10,t):0!=(256&e)?(Rt=9,256):0!==(t=3584&e)?(Rt=8,t):0!=(4096&e)?(Rt=7,4096):0!==(t=4186112&e)?(Rt=6,t):0!==(t=62914560&e)?(Rt=5,t):67108864&e?(Rt=4,67108864):0!=(134217728&e)?(Rt=3,134217728):0!==(t=805306368&e)?(Rt=2,t):0!=(1073741824&e)?(Rt=1,1073741824):(Rt=8,e)}function Mt(e,t){var n=e.pendingLanes;if(0===n)return Rt=0;var r=0,a=0,o=e.expiredLanes,i=e.suspendedLanes,l=e.pingedLanes;if(0!==o)r=o,a=Rt=15;else if(0!==(o=134217727&n)){var s=o&~i;0!==s?(r=jt(s),a=Rt):0!==(l&=o)&&(r=jt(l),a=Rt)}else 0!==(o=n&~i)?(r=jt(o),a=Rt):0!==l&&(r=jt(l),a=Rt);if(0===r)return 0;if(r=n&((0>(r=31-Ht(r))?0:1<<r)<<1)-1,0!==t&&t!==r&&0==(t&i)){if(jt(t),a<=Rt)return t;Rt=a}if(0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)a=1<<(n=31-Ht(t)),r|=e[n],t&=~a;return r}function Ft(e){return 0!==(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function Bt(e,t){switch(e){case 15:return 1;case 14:return 2;case 12:return 0===(e=zt(24&~t))?Bt(10,t):e;case 10:return 0===(e=zt(192&~t))?Bt(8,t):e;case 8:return 0===(e=zt(3584&~t))&&(0===(e=zt(4186112&~t))&&(e=512)),e;case 2:return 0===(t=zt(805306368&~t))&&(t=268435456),t}throw Error(i(358,e))}function zt(e){return e&-e}function $t(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function Ut(e,t,n){e.pendingLanes|=t;var r=t-1;e.suspendedLanes&=r,e.pingedLanes&=r,(e=e.eventTimes)[t=31-Ht(t)]=n}var Ht=Math.clz32?Math.clz32:function(e){return 0===e?32:31-(Vt(e)/qt|0)|0},Vt=Math.log,qt=Math.LN2;var Wt=o.unstable_UserBlockingPriority,Gt=o.unstable_runWithPriority,Zt=!0;function Qt(e,t,n,r){je||Le();var a=Xt,o=je;je=!0;try{Ae(a,e,t,n,r)}finally{(je=o)||Fe()}}function Yt(e,t,n,r){Gt(Wt,Xt.bind(null,e,t,n,r))}function Xt(e,t,n,r){var a;if(Zt)if((a=0==(4&t))&&0<ot.length&&-1<ft.indexOf(e))e=pt(null,e,t,n,r),ot.push(e);else{var o=Kt(e,t,n,r);if(null===o)a&&ht(e,r);else{if(a){if(-1<ft.indexOf(e))return e=pt(o,e,t,n,r),void ot.push(e);if(function(e,t,n,r,a){switch(t){case"focusin":return it=mt(it,e,t,n,r,a),!0;case"dragenter":return lt=mt(lt,e,t,n,r,a),!0;case"mouseover":return st=mt(st,e,t,n,r,a),!0;case"pointerover":var o=a.pointerId;return ut.set(o,mt(ut.get(o)||null,e,t,n,r,a)),!0;case"gotpointercapture":return o=a.pointerId,ct.set(o,mt(ct.get(o)||null,e,t,n,r,a)),!0}return!1}(o,e,t,n,r))return;ht(e,r)}Lr(e,t,r,null,n)}}}function Kt(e,t,n,r){var a=Se(r);if(null!==(a=ta(a))){var o=Qe(a);if(null===o)a=null;else{var i=o.tag;if(13===i){if(null!==(a=Ye(o)))return a;a=null}else if(3===i){if(o.stateNode.hydrate)return 3===o.tag?o.stateNode.containerInfo:null;a=null}else o!==a&&(a=null)}}return Lr(e,t,r,a,n),null}var Jt=null,en=null,tn=null;function nn(){if(tn)return tn;var e,t,n=en,r=n.length,a="value"in Jt?Jt.value:Jt.textContent,o=a.length;for(e=0;e<r&&n[e]===a[e];e++);var i=r-e;for(t=1;t<=i&&n[r-t]===a[o-t];t++);return tn=a.slice(e,1<t?1-t:void 0)}function rn(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function an(){return!0}function on(){return!1}function ln(e){function t(t,n,r,a,o){for(var i in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=a,this.target=o,this.currentTarget=null,e)e.hasOwnProperty(i)&&(t=e[i],this[i]=t?t(a):a[i]);return this.isDefaultPrevented=(null!=a.defaultPrevented?a.defaultPrevented:!1===a.returnValue)?an:on,this.isPropagationStopped=on,this}return a(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=an)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=an)},persist:function(){},isPersistent:an}),t}var sn,un,cn,dn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},fn=ln(dn),pn=a({},dn,{view:0,detail:0}),hn=ln(pn),mn=a({},pn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Tn,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==cn&&(cn&&"mousemove"===e.type?(sn=e.screenX-cn.screenX,un=e.screenY-cn.screenY):un=sn=0,cn=e),sn)},movementY:function(e){return"movementY"in e?e.movementY:un}}),gn=ln(mn),vn=ln(a({},mn,{dataTransfer:0})),bn=ln(a({},pn,{relatedTarget:0})),yn=ln(a({},dn,{animationName:0,elapsedTime:0,pseudoElement:0})),wn=a({},dn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),xn=ln(wn),kn=ln(a({},dn,{data:0})),_n={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},En={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},Sn={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Cn(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=Sn[e])&&!!t[e]}function Tn(){return Cn}var On=a({},pn,{key:function(e){if(e.key){var t=_n[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=rn(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?En[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Tn,charCode:function(e){return"keypress"===e.type?rn(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?rn(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),Dn=ln(On),Pn=ln(a({},mn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),Nn=ln(a({},pn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Tn})),In=ln(a({},dn,{propertyName:0,elapsedTime:0,pseudoElement:0})),An=a({},mn,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),Ln=ln(An),Rn=[9,13,27,32],jn=d&&"CompositionEvent"in window,Mn=null;d&&"documentMode"in document&&(Mn=document.documentMode);var Fn=d&&"TextEvent"in window&&!Mn,Bn=d&&(!jn||Mn&&8<Mn&&11>=Mn),zn=String.fromCharCode(32),$n=!1;function Un(e,t){switch(e){case"keyup":return-1!==Rn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Hn(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Vn=!1;var qn={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Wn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!qn[e.type]:"textarea"===t}function Gn(e,t,n,r){Pe(r),0<(t=jr(t,"onChange")).length&&(n=new fn("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Zn=null,Qn=null;function Yn(e){Or(e,0)}function Xn(e){if(X(ra(e)))return e}function Kn(e,t){if("change"===e)return t}var Jn=!1;if(d){var er;if(d){var tr="oninput"in document;if(!tr){var nr=document.createElement("div");nr.setAttribute("oninput","return;"),tr="function"==typeof nr.oninput}er=tr}else er=!1;Jn=er&&(!document.documentMode||9<document.documentMode)}function rr(){Zn&&(Zn.detachEvent("onpropertychange",ar),Qn=Zn=null)}function ar(e){if("value"===e.propertyName&&Xn(Qn)){var t=[];if(Gn(t,Qn,e,Se(e)),e=Yn,je)e(t);else{je=!0;try{Ie(e,t)}finally{je=!1,Fe()}}}}function or(e,t,n){"focusin"===e?(rr(),Qn=n,(Zn=t).attachEvent("onpropertychange",ar)):"focusout"===e&&rr()}function ir(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Xn(Qn)}function lr(e,t){if("click"===e)return Xn(t)}function sr(e,t){if("input"===e||"change"===e)return Xn(t)}var ur="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},cr=Object.prototype.hasOwnProperty;function dr(e,t){if(ur(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++)if(!cr.call(t,n[r])||!ur(e[n[r]],t[n[r]]))return!1;return!0}function fr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function pr(e,t){var n,r=fr(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=fr(r)}}function hr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?hr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function mr(){for(var e=window,t=K();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=K((e=t.contentWindow).document)}return t}function gr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var vr=d&&"documentMode"in document&&11>=document.documentMode,br=null,yr=null,wr=null,xr=!1;function kr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;xr||null==br||br!==K(r)||("selectionStart"in(r=br)&&gr(r)?r={start:r.selectionStart,end:r.selectionEnd}:r={anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},wr&&dr(wr,r)||(wr=r,0<(r=jr(yr,"onSelect")).length&&(t=new fn("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=br)))}Lt("cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange".split(" "),0),Lt("drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel".split(" "),1),Lt(At,2);for(var _r="change selectionchange textInput compositionstart compositionend compositionupdate".split(" "),Er=0;Er<_r.length;Er++)It.set(_r[Er],0);c("onMouseEnter",["mouseout","mouseover"]),c("onMouseLeave",["mouseout","mouseover"]),c("onPointerEnter",["pointerout","pointerover"]),c("onPointerLeave",["pointerout","pointerover"]),u("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),u("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),u("onBeforeInput",["compositionend","keypress","textInput","paste"]),u("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),u("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),u("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Sr="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Cr=new Set("cancel close invalid load scroll toggle".split(" ").concat(Sr));function Tr(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,r,a,o,l,s,u){if(Ze.apply(this,arguments),He){if(!He)throw Error(i(198));var c=Ve;He=!1,Ve=null,qe||(qe=!0,We=c)}}(r,t,void 0,e),e.currentTarget=null}function Or(e,t){t=0!=(4&t);for(var n=0;n<e.length;n++){var r=e[n],a=r.event;r=r.listeners;e:{var o=void 0;if(t)for(var i=r.length-1;0<=i;i--){var l=r[i],s=l.instance,u=l.currentTarget;if(l=l.listener,s!==o&&a.isPropagationStopped())break e;Tr(a,l,u),o=s}else for(i=0;i<r.length;i++){if(s=(l=r[i]).instance,u=l.currentTarget,l=l.listener,s!==o&&a.isPropagationStopped())break e;Tr(a,l,u),o=s}}}if(qe)throw e=We,qe=!1,We=null,e}function Dr(e,t){var n=oa(t),r=e+"__bubble";n.has(r)||(Ar(t,e,2,!1),n.add(r))}var Pr="_reactListening"+Math.random().toString(36).slice(2);function Nr(e){e[Pr]||(e[Pr]=!0,l.forEach((function(t){Cr.has(t)||Ir(t,!1,e,null),Ir(t,!0,e,null)})))}function Ir(e,t,n,r){var a=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,o=n;if("selectionchange"===e&&9!==n.nodeType&&(o=n.ownerDocument),null!==r&&!t&&Cr.has(e)){if("scroll"!==e)return;a|=2,o=r}var i=oa(o),l=e+"__"+(t?"capture":"bubble");i.has(l)||(t&&(a|=4),Ar(o,e,a,t),i.add(l))}function Ar(e,t,n,r){var a=It.get(t);switch(void 0===a?2:a){case 0:a=Qt;break;case 1:a=Yt;break;default:a=Xt}n=a.bind(null,t,n,e),a=void 0,!ze||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(a=!0),r?void 0!==a?e.addEventListener(t,n,{capture:!0,passive:a}):e.addEventListener(t,n,!0):void 0!==a?e.addEventListener(t,n,{passive:a}):e.addEventListener(t,n,!1)}function Lr(e,t,n,r,a){var o=r;if(0==(1&t)&&0==(2&t)&&null!==r)e:for(;;){if(null===r)return;var i=r.tag;if(3===i||4===i){var l=r.stateNode.containerInfo;if(l===a||8===l.nodeType&&l.parentNode===a)break;if(4===i)for(i=r.return;null!==i;){var s=i.tag;if((3===s||4===s)&&((s=i.stateNode.containerInfo)===a||8===s.nodeType&&s.parentNode===a))return;i=i.return}for(;null!==l;){if(null===(i=ta(l)))return;if(5===(s=i.tag)||6===s){r=o=i;continue e}l=l.parentNode}}r=r.return}!function(e,t,n){if(Me)return e(t,n);Me=!0;try{return Re(e,t,n)}finally{Me=!1,Fe()}}((function(){var r=o,a=Se(n),i=[];e:{var l=Nt.get(e);if(void 0!==l){var s=fn,u=e;switch(e){case"keypress":if(0===rn(n))break e;case"keydown":case"keyup":s=Dn;break;case"focusin":u="focus",s=bn;break;case"focusout":u="blur",s=bn;break;case"beforeblur":case"afterblur":s=bn;break;case"click":if(2===n.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":s=gn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":s=vn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":s=Nn;break;case Tt:case Ot:case Dt:s=yn;break;case Pt:s=In;break;case"scroll":s=hn;break;case"wheel":s=Ln;break;case"copy":case"cut":case"paste":s=xn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":s=Pn}var c=0!=(4&t),d=!c&&"scroll"===e,f=c?null!==l?l+"Capture":null:l;c=[];for(var p,h=r;null!==h;){var m=(p=h).stateNode;if(5===p.tag&&null!==m&&(p=m,null!==f&&(null!=(m=Be(h,f))&&c.push(Rr(h,m,p)))),d)break;h=h.return}0<c.length&&(l=new s(l,u,null,n,a),i.push({event:l,listeners:c}))}}if(0==(7&t)){if(s="mouseout"===e||"pointerout"===e,(!(l="mouseover"===e||"pointerover"===e)||0!=(16&t)||!(u=n.relatedTarget||n.fromElement)||!ta(u)&&!u[Jr])&&(s||l)&&(l=a.window===a?a:(l=a.ownerDocument)?l.defaultView||l.parentWindow:window,s?(s=r,null!==(u=(u=n.relatedTarget||n.toElement)?ta(u):null)&&(u!==(d=Qe(u))||5!==u.tag&&6!==u.tag)&&(u=null)):(s=null,u=r),s!==u)){if(c=gn,m="onMouseLeave",f="onMouseEnter",h="mouse","pointerout"!==e&&"pointerover"!==e||(c=Pn,m="onPointerLeave",f="onPointerEnter",h="pointer"),d=null==s?l:ra(s),p=null==u?l:ra(u),(l=new c(m,h+"leave",s,n,a)).target=d,l.relatedTarget=p,m=null,ta(a)===r&&((c=new c(f,h+"enter",u,n,a)).target=p,c.relatedTarget=d,m=c),d=m,s&&u)e:{for(f=u,h=0,p=c=s;p;p=Mr(p))h++;for(p=0,m=f;m;m=Mr(m))p++;for(;0<h-p;)c=Mr(c),h--;for(;0<p-h;)f=Mr(f),p--;for(;h--;){if(c===f||null!==f&&c===f.alternate)break e;c=Mr(c),f=Mr(f)}c=null}else c=null;null!==s&&Fr(i,l,s,c,!1),null!==u&&null!==d&&Fr(i,d,u,c,!0)}if("select"===(s=(l=r?ra(r):window).nodeName&&l.nodeName.toLowerCase())||"input"===s&&"file"===l.type)var g=Kn;else if(Wn(l))if(Jn)g=sr;else{g=ir;var v=or}else(s=l.nodeName)&&"input"===s.toLowerCase()&&("checkbox"===l.type||"radio"===l.type)&&(g=lr);switch(g&&(g=g(e,r))?Gn(i,g,n,a):(v&&v(e,l,r),"focusout"===e&&(v=l._wrapperState)&&v.controlled&&"number"===l.type&&ae(l,"number",l.value)),v=r?ra(r):window,e){case"focusin":(Wn(v)||"true"===v.contentEditable)&&(br=v,yr=r,wr=null);break;case"focusout":wr=yr=br=null;break;case"mousedown":xr=!0;break;case"contextmenu":case"mouseup":case"dragend":xr=!1,kr(i,n,a);break;case"selectionchange":if(vr)break;case"keydown":case"keyup":kr(i,n,a)}var b;if(jn)e:{switch(e){case"compositionstart":var y="onCompositionStart";break e;case"compositionend":y="onCompositionEnd";break e;case"compositionupdate":y="onCompositionUpdate";break e}y=void 0}else Vn?Un(e,n)&&(y="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(y="onCompositionStart");y&&(Bn&&"ko"!==n.locale&&(Vn||"onCompositionStart"!==y?"onCompositionEnd"===y&&Vn&&(b=nn()):(en="value"in(Jt=a)?Jt.value:Jt.textContent,Vn=!0)),0<(v=jr(r,y)).length&&(y=new kn(y,e,null,n,a),i.push({event:y,listeners:v}),b?y.data=b:null!==(b=Hn(n))&&(y.data=b))),(b=Fn?function(e,t){switch(e){case"compositionend":return Hn(t);case"keypress":return 32!==t.which?null:($n=!0,zn);case"textInput":return(e=t.data)===zn&&$n?null:e;default:return null}}(e,n):function(e,t){if(Vn)return"compositionend"===e||!jn&&Un(e,t)?(e=nn(),tn=en=Jt=null,Vn=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return Bn&&"ko"!==t.locale?null:t.data}}(e,n))&&(0<(r=jr(r,"onBeforeInput")).length&&(a=new kn("onBeforeInput","beforeinput",null,n,a),i.push({event:a,listeners:r}),a.data=b))}Or(i,t)}))}function Rr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function jr(e,t){for(var n=t+"Capture",r=[];null!==e;){var a=e,o=a.stateNode;5===a.tag&&null!==o&&(a=o,null!=(o=Be(e,n))&&r.unshift(Rr(e,o,a)),null!=(o=Be(e,t))&&r.push(Rr(e,o,a))),e=e.return}return r}function Mr(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function Fr(e,t,n,r,a){for(var o=t._reactName,i=[];null!==n&&n!==r;){var l=n,s=l.alternate,u=l.stateNode;if(null!==s&&s===r)break;5===l.tag&&null!==u&&(l=u,a?null!=(s=Be(n,o))&&i.unshift(Rr(n,s,l)):a||null!=(s=Be(n,o))&&i.push(Rr(n,s,l))),n=n.return}0!==i.length&&e.push({event:t,listeners:i})}function Br(){}var zr=null,$r=null;function Ur(e,t){switch(e){case"button":case"input":case"select":case"textarea":return!!t.autoFocus}return!1}function Hr(e,t){return"textarea"===e||"option"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var Vr="function"==typeof setTimeout?setTimeout:void 0,qr="function"==typeof clearTimeout?clearTimeout:void 0;function Wr(e){1===e.nodeType?e.textContent="":9===e.nodeType&&(null!=(e=e.body)&&(e.textContent=""))}function Gr(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break}return e}function Zr(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var Qr=0;var Yr=Math.random().toString(36).slice(2),Xr="__reactFiber$"+Yr,Kr="__reactProps$"+Yr,Jr="__reactContainer$"+Yr,ea="__reactEvents$"+Yr;function ta(e){var t=e[Xr];if(t)return t;for(var n=e.parentNode;n;){if(t=n[Jr]||n[Xr]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=Zr(e);null!==e;){if(n=e[Xr])return n;e=Zr(e)}return t}n=(e=n).parentNode}return null}function na(e){return!(e=e[Xr]||e[Jr])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function ra(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(i(33))}function aa(e){return e[Kr]||null}function oa(e){var t=e[ea];return void 0===t&&(t=e[ea]=new Set),t}var ia=[],la=-1;function sa(e){return{current:e}}function ua(e){0>la||(e.current=ia[la],ia[la]=null,la--)}function ca(e,t){la++,ia[la]=e.current,e.current=t}var da={},fa=sa(da),pa=sa(!1),ha=da;function ma(e,t){var n=e.type.contextTypes;if(!n)return da;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var a,o={};for(a in n)o[a]=t[a];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function ga(e){return null!=(e=e.childContextTypes)}function va(){ua(pa),ua(fa)}function ba(e,t,n){if(fa.current!==da)throw Error(i(168));ca(fa,t),ca(pa,n)}function ya(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var o in r=r.getChildContext())if(!(o in e))throw Error(i(108,G(t)||"Unknown",o));return a({},n,r)}function wa(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||da,ha=fa.current,ca(fa,e),ca(pa,pa.current),!0}function xa(e,t,n){var r=e.stateNode;if(!r)throw Error(i(169));n?(e=ya(e,t,ha),r.__reactInternalMemoizedMergedChildContext=e,ua(pa),ua(fa),ca(fa,e)):ua(pa),ca(pa,n)}var ka=null,_a=null,Ea=o.unstable_runWithPriority,Sa=o.unstable_scheduleCallback,Ca=o.unstable_cancelCallback,Ta=o.unstable_shouldYield,Oa=o.unstable_requestPaint,Da=o.unstable_now,Pa=o.unstable_getCurrentPriorityLevel,Na=o.unstable_ImmediatePriority,Ia=o.unstable_UserBlockingPriority,Aa=o.unstable_NormalPriority,La=o.unstable_LowPriority,Ra=o.unstable_IdlePriority,ja={},Ma=void 0!==Oa?Oa:function(){},Fa=null,Ba=null,za=!1,$a=Da(),Ua=1e4>$a?Da:function(){return Da()-$a};function Ha(){switch(Pa()){case Na:return 99;case Ia:return 98;case Aa:return 97;case La:return 96;case Ra:return 95;default:throw Error(i(332))}}function Va(e){switch(e){case 99:return Na;case 98:return Ia;case 97:return Aa;case 96:return La;case 95:return Ra;default:throw Error(i(332))}}function qa(e,t){return e=Va(e),Ea(e,t)}function Wa(e,t,n){return e=Va(e),Sa(e,t,n)}function Ga(){if(null!==Ba){var e=Ba;Ba=null,Ca(e)}Za()}function Za(){if(!za&&null!==Fa){za=!0;var e=0;try{var t=Fa;qa(99,(function(){for(;e<t.length;e++){var n=t[e];do{n=n(!0)}while(null!==n)}})),Fa=null}catch(n){throw null!==Fa&&(Fa=Fa.slice(e+1)),Sa(Na,Ga),n}finally{za=!1}}}var Qa=x.ReactCurrentBatchConfig;function Ya(e,t){if(e&&e.defaultProps){for(var n in t=a({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}var Xa=sa(null),Ka=null,Ja=null,eo=null;function to(){eo=Ja=Ka=null}function no(e){var t=Xa.current;ua(Xa),e.type._context._currentValue=t}function ro(e,t){for(;null!==e;){var n=e.alternate;if((e.childLanes&t)===t){if(null===n||(n.childLanes&t)===t)break;n.childLanes|=t}else e.childLanes|=t,null!==n&&(n.childLanes|=t);e=e.return}}function ao(e,t){Ka=e,eo=Ja=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(0!=(e.lanes&t)&&(ji=!0),e.firstContext=null)}function oo(e,t){if(eo!==e&&!1!==t&&0!==t)if("number"==typeof t&&1073741823!==t||(eo=e,t=1073741823),t={context:e,observedBits:t,next:null},null===Ja){if(null===Ka)throw Error(i(308));Ja=t,Ka.dependencies={lanes:0,firstContext:t,responders:null}}else Ja=Ja.next=t;return e._currentValue}var io=!1;function lo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}function so(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function uo(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function co(e,t){if(null!==(e=e.updateQueue)){var n=(e=e.shared).pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}}function fo(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var a=null,o=null;if(null!==(n=n.firstBaseUpdate)){do{var i={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};null===o?a=o=i:o=o.next=i,n=n.next}while(null!==n);null===o?a=o=t:o=o.next=t}else a=o=t;return n={baseState:r.baseState,firstBaseUpdate:a,lastBaseUpdate:o,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function po(e,t,n,r){var o=e.updateQueue;io=!1;var i=o.firstBaseUpdate,l=o.lastBaseUpdate,s=o.shared.pending;if(null!==s){o.shared.pending=null;var u=s,c=u.next;u.next=null,null===l?i=c:l.next=c,l=u;var d=e.alternate;if(null!==d){var f=(d=d.updateQueue).lastBaseUpdate;f!==l&&(null===f?d.firstBaseUpdate=c:f.next=c,d.lastBaseUpdate=u)}}if(null!==i){for(f=o.baseState,l=0,d=c=u=null;;){s=i.lane;var p=i.eventTime;if((r&s)===s){null!==d&&(d=d.next={eventTime:p,lane:0,tag:i.tag,payload:i.payload,callback:i.callback,next:null});e:{var h=e,m=i;switch(s=t,p=n,m.tag){case 1:if("function"==typeof(h=m.payload)){f=h.call(p,f,s);break e}f=h;break e;case 3:h.flags=-4097&h.flags|64;case 0:if(null==(s="function"==typeof(h=m.payload)?h.call(p,f,s):h))break e;f=a({},f,s);break e;case 2:io=!0}}null!==i.callback&&(e.flags|=32,null===(s=o.effects)?o.effects=[i]:s.push(i))}else p={eventTime:p,lane:s,tag:i.tag,payload:i.payload,callback:i.callback,next:null},null===d?(c=d=p,u=f):d=d.next=p,l|=s;if(null===(i=i.next)){if(null===(s=o.shared.pending))break;i=s.next,s.next=null,o.lastBaseUpdate=s,o.shared.pending=null}}null===d&&(u=f),o.baseState=u,o.firstBaseUpdate=c,o.lastBaseUpdate=d,$l|=l,e.lanes=l,e.memoizedState=f}}function ho(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],a=r.callback;if(null!==a){if(r.callback=null,r=n,"function"!=typeof a)throw Error(i(191,a));a.call(r)}}}var mo=(new r.Component).refs;function go(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:a({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var vo={isMounted:function(e){return!!(e=e._reactInternals)&&Qe(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=fs(),a=ps(e),o=uo(r,a);o.payload=t,null!=n&&(o.callback=n),co(e,o),hs(e,a,r)},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=fs(),a=ps(e),o=uo(r,a);o.tag=1,o.payload=t,null!=n&&(o.callback=n),co(e,o),hs(e,a,r)},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=fs(),r=ps(e),a=uo(n,r);a.tag=2,null!=t&&(a.callback=t),co(e,a),hs(e,r,n)}};function bo(e,t,n,r,a,o,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,o,i):!t.prototype||!t.prototype.isPureReactComponent||(!dr(n,r)||!dr(a,o))}function yo(e,t,n){var r=!1,a=da,o=t.contextType;return"object"==typeof o&&null!==o?o=oo(o):(a=ga(t)?ha:fa.current,o=(r=null!=(r=t.contextTypes))?ma(e,a):da),t=new t(n,o),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=vo,e.stateNode=t,t._reactInternals=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=a,e.__reactInternalMemoizedMaskedChildContext=o),t}function wo(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&vo.enqueueReplaceState(t,t.state,null)}function xo(e,t,n,r){var a=e.stateNode;a.props=n,a.state=e.memoizedState,a.refs=mo,lo(e);var o=t.contextType;"object"==typeof o&&null!==o?a.context=oo(o):(o=ga(t)?ha:fa.current,a.context=ma(e,o)),po(e,n,a,r),a.state=e.memoizedState,"function"==typeof(o=t.getDerivedStateFromProps)&&(go(e,t,o,n),a.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof a.getSnapshotBeforeUpdate||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||(t=a.state,"function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount(),t!==a.state&&vo.enqueueReplaceState(a,a.state,null),po(e,n,a,r),a.state=e.memoizedState),"function"==typeof a.componentDidMount&&(e.flags|=4)}var ko=Array.isArray;function _o(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(i(309));var r=n.stateNode}if(!r)throw Error(i(147,e));var a=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===a?t.ref:(t=function(e){var t=r.refs;t===mo&&(t=r.refs={}),null===e?delete t[a]:t[a]=e},t._stringRef=a,t)}if("string"!=typeof e)throw Error(i(284));if(!n._owner)throw Error(i(290,e))}return e}function Eo(e,t){if("textarea"!==e.type)throw Error(i(31,"[object Object]"===Object.prototype.toString.call(t)?"object with keys {"+Object.keys(t).join(", ")+"}":t))}function So(e){function t(t,n){if(e){var r=t.lastEffect;null!==r?(r.nextEffect=n,t.lastEffect=n):t.firstEffect=t.lastEffect=n,n.nextEffect=null,n.flags=8}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function a(e,t){return(e=Ws(e,t)).index=0,e.sibling=null,e}function o(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.flags=2,n):r:(t.flags=2,n):n}function l(t){return e&&null===t.alternate&&(t.flags=2),t}function s(e,t,n,r){return null===t||6!==t.tag?((t=Ys(n,e.mode,r)).return=e,t):((t=a(t,n)).return=e,t)}function u(e,t,n,r){return null!==t&&t.elementType===n.type?((r=a(t,n.props)).ref=_o(e,t,n),r.return=e,r):((r=Gs(n.type,n.key,n.props,null,e.mode,r)).ref=_o(e,t,n),r.return=e,r)}function c(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Xs(n,e.mode,r)).return=e,t):((t=a(t,n.children||[])).return=e,t)}function d(e,t,n,r,o){return null===t||7!==t.tag?((t=Zs(n,e.mode,r,o)).return=e,t):((t=a(t,n)).return=e,t)}function f(e,t,n){if("string"==typeof t||"number"==typeof t)return(t=Ys(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case k:return(n=Gs(t.type,t.key,t.props,null,e.mode,n)).ref=_o(e,null,t),n.return=e,n;case _:return(t=Xs(t,e.mode,n)).return=e,t}if(ko(t)||U(t))return(t=Zs(t,e.mode,n,null)).return=e,t;Eo(e,t)}return null}function p(e,t,n,r){var a=null!==t?t.key:null;if("string"==typeof n||"number"==typeof n)return null!==a?null:s(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case k:return n.key===a?n.type===E?d(e,t,n.props.children,r,a):u(e,t,n,r):null;case _:return n.key===a?c(e,t,n,r):null}if(ko(n)||U(n))return null!==a?null:d(e,t,n,r,null);Eo(e,n)}return null}function h(e,t,n,r,a){if("string"==typeof r||"number"==typeof r)return s(t,e=e.get(n)||null,""+r,a);if("object"==typeof r&&null!==r){switch(r.$$typeof){case k:return e=e.get(null===r.key?n:r.key)||null,r.type===E?d(t,e,r.props.children,a,r.key):u(t,e,r,a);case _:return c(t,e=e.get(null===r.key?n:r.key)||null,r,a)}if(ko(r)||U(r))return d(t,e=e.get(n)||null,r,a,null);Eo(t,r)}return null}function m(a,i,l,s){for(var u=null,c=null,d=i,m=i=0,g=null;null!==d&&m<l.length;m++){d.index>m?(g=d,d=null):g=d.sibling;var v=p(a,d,l[m],s);if(null===v){null===d&&(d=g);break}e&&d&&null===v.alternate&&t(a,d),i=o(v,i,m),null===c?u=v:c.sibling=v,c=v,d=g}if(m===l.length)return n(a,d),u;if(null===d){for(;m<l.length;m++)null!==(d=f(a,l[m],s))&&(i=o(d,i,m),null===c?u=d:c.sibling=d,c=d);return u}for(d=r(a,d);m<l.length;m++)null!==(g=h(d,a,m,l[m],s))&&(e&&null!==g.alternate&&d.delete(null===g.key?m:g.key),i=o(g,i,m),null===c?u=g:c.sibling=g,c=g);return e&&d.forEach((function(e){return t(a,e)})),u}function g(a,l,s,u){var c=U(s);if("function"!=typeof c)throw Error(i(150));if(null==(s=c.call(s)))throw Error(i(151));for(var d=c=null,m=l,g=l=0,v=null,b=s.next();null!==m&&!b.done;g++,b=s.next()){m.index>g?(v=m,m=null):v=m.sibling;var y=p(a,m,b.value,u);if(null===y){null===m&&(m=v);break}e&&m&&null===y.alternate&&t(a,m),l=o(y,l,g),null===d?c=y:d.sibling=y,d=y,m=v}if(b.done)return n(a,m),c;if(null===m){for(;!b.done;g++,b=s.next())null!==(b=f(a,b.value,u))&&(l=o(b,l,g),null===d?c=b:d.sibling=b,d=b);return c}for(m=r(a,m);!b.done;g++,b=s.next())null!==(b=h(m,a,g,b.value,u))&&(e&&null!==b.alternate&&m.delete(null===b.key?g:b.key),l=o(b,l,g),null===d?c=b:d.sibling=b,d=b);return e&&m.forEach((function(e){return t(a,e)})),c}return function(e,r,o,s){var u="object"==typeof o&&null!==o&&o.type===E&&null===o.key;u&&(o=o.props.children);var c="object"==typeof o&&null!==o;if(c)switch(o.$$typeof){case k:e:{for(c=o.key,u=r;null!==u;){if(u.key===c){if(7===u.tag){if(o.type===E){n(e,u.sibling),(r=a(u,o.props.children)).return=e,e=r;break e}}else if(u.elementType===o.type){n(e,u.sibling),(r=a(u,o.props)).ref=_o(e,u,o),r.return=e,e=r;break e}n(e,u);break}t(e,u),u=u.sibling}o.type===E?((r=Zs(o.props.children,e.mode,s,o.key)).return=e,e=r):((s=Gs(o.type,o.key,o.props,null,e.mode,s)).ref=_o(e,r,o),s.return=e,e=s)}return l(e);case _:e:{for(u=o.key;null!==r;){if(r.key===u){if(4===r.tag&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),(r=a(r,o.children||[])).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=Xs(o,e.mode,s)).return=e,e=r}return l(e)}if("string"==typeof o||"number"==typeof o)return o=""+o,null!==r&&6===r.tag?(n(e,r.sibling),(r=a(r,o)).return=e,e=r):(n(e,r),(r=Ys(o,e.mode,s)).return=e,e=r),l(e);if(ko(o))return m(e,r,o,s);if(U(o))return g(e,r,o,s);if(c&&Eo(e,o),void 0===o&&!u)switch(e.tag){case 1:case 22:case 0:case 11:case 15:throw Error(i(152,G(e.type)||"Component"))}return n(e,r)}}var Co=So(!0),To=So(!1),Oo={},Do=sa(Oo),Po=sa(Oo),No=sa(Oo);function Io(e){if(e===Oo)throw Error(i(174));return e}function Ao(e,t){switch(ca(No,t),ca(Po,e),ca(Do,Oo),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:pe(null,"");break;default:t=pe(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}ua(Do),ca(Do,t)}function Lo(){ua(Do),ua(Po),ua(No)}function Ro(e){Io(No.current);var t=Io(Do.current),n=pe(t,e.type);t!==n&&(ca(Po,e),ca(Do,n))}function jo(e){Po.current===e&&(ua(Do),ua(Po))}var Mo=sa(0);function Fo(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(64&t.flags))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Bo=null,zo=null,$o=!1;function Uo(e,t){var n=Vs(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.flags=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function Ho(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,!0);default:return!1}}function Vo(e){if($o){var t=zo;if(t){var n=t;if(!Ho(e,t)){if(!(t=Gr(n.nextSibling))||!Ho(e,t))return e.flags=-1025&e.flags|2,$o=!1,void(Bo=e);Uo(Bo,n)}Bo=e,zo=Gr(t.firstChild)}else e.flags=-1025&e.flags|2,$o=!1,Bo=e}}function qo(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;Bo=e}function Wo(e){if(e!==Bo)return!1;if(!$o)return qo(e),$o=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!Hr(t,e.memoizedProps))for(t=zo;t;)Uo(e,t),t=Gr(t.nextSibling);if(qo(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(i(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){zo=Gr(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}zo=null}}else zo=Bo?Gr(e.stateNode.nextSibling):null;return!0}function Go(){zo=Bo=null,$o=!1}var Zo=[];function Qo(){for(var e=0;e<Zo.length;e++)Zo[e]._workInProgressVersionPrimary=null;Zo.length=0}var Yo=x.ReactCurrentDispatcher,Xo=x.ReactCurrentBatchConfig,Ko=0,Jo=null,ei=null,ti=null,ni=!1,ri=!1;function ai(){throw Error(i(321))}function oi(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!ur(e[n],t[n]))return!1;return!0}function ii(e,t,n,r,a,o){if(Ko=o,Jo=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,Yo.current=null===e||null===e.memoizedState?Ii:Ai,e=n(r,a),ri){o=0;do{if(ri=!1,!(25>o))throw Error(i(301));o+=1,ti=ei=null,t.updateQueue=null,Yo.current=Li,e=n(r,a)}while(ri)}if(Yo.current=Ni,t=null!==ei&&null!==ei.next,Ko=0,ti=ei=Jo=null,ni=!1,t)throw Error(i(300));return e}function li(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===ti?Jo.memoizedState=ti=e:ti=ti.next=e,ti}function si(){if(null===ei){var e=Jo.alternate;e=null!==e?e.memoizedState:null}else e=ei.next;var t=null===ti?Jo.memoizedState:ti.next;if(null!==t)ti=t,ei=e;else{if(null===e)throw Error(i(310));e={memoizedState:(ei=e).memoizedState,baseState:ei.baseState,baseQueue:ei.baseQueue,queue:ei.queue,next:null},null===ti?Jo.memoizedState=ti=e:ti=ti.next=e}return ti}function ui(e,t){return"function"==typeof t?t(e):t}function ci(e){var t=si(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=ei,a=r.baseQueue,o=n.pending;if(null!==o){if(null!==a){var l=a.next;a.next=o.next,o.next=l}r.baseQueue=a=o,n.pending=null}if(null!==a){a=a.next,r=r.baseState;var s=l=o=null,u=a;do{var c=u.lane;if((Ko&c)===c)null!==s&&(s=s.next={lane:0,action:u.action,eagerReducer:u.eagerReducer,eagerState:u.eagerState,next:null}),r=u.eagerReducer===e?u.eagerState:e(r,u.action);else{var d={lane:c,action:u.action,eagerReducer:u.eagerReducer,eagerState:u.eagerState,next:null};null===s?(l=s=d,o=r):s=s.next=d,Jo.lanes|=c,$l|=c}u=u.next}while(null!==u&&u!==a);null===s?o=r:s.next=l,ur(r,t.memoizedState)||(ji=!0),t.memoizedState=r,t.baseState=o,t.baseQueue=s,n.lastRenderedState=r}return[t.memoizedState,n.dispatch]}function di(e){var t=si(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=n.dispatch,a=n.pending,o=t.memoizedState;if(null!==a){n.pending=null;var l=a=a.next;do{o=e(o,l.action),l=l.next}while(l!==a);ur(o,t.memoizedState)||(ji=!0),t.memoizedState=o,null===t.baseQueue&&(t.baseState=o),n.lastRenderedState=o}return[o,r]}function fi(e,t,n){var r=t._getVersion;r=r(t._source);var a=t._workInProgressVersionPrimary;if(null!==a?e=a===r:(e=e.mutableReadLanes,(e=(Ko&e)===e)&&(t._workInProgressVersionPrimary=r,Zo.push(t))),e)return n(t._source);throw Zo.push(t),Error(i(350))}function pi(e,t,n,r){var a=Al;if(null===a)throw Error(i(349));var o=t._getVersion,l=o(t._source),s=Yo.current,u=s.useState((function(){return fi(a,t,n)})),c=u[1],d=u[0];u=ti;var f=e.memoizedState,p=f.refs,h=p.getSnapshot,m=f.source;f=f.subscribe;var g=Jo;return e.memoizedState={refs:p,source:t,subscribe:r},s.useEffect((function(){p.getSnapshot=n,p.setSnapshot=c;var e=o(t._source);if(!ur(l,e)){e=n(t._source),ur(d,e)||(c(e),e=ps(g),a.mutableReadLanes|=e&a.pendingLanes),e=a.mutableReadLanes,a.entangledLanes|=e;for(var r=a.entanglements,i=e;0<i;){var s=31-Ht(i),u=1<<s;r[s]|=e,i&=~u}}}),[n,t,r]),s.useEffect((function(){return r(t._source,(function(){var e=p.getSnapshot,n=p.setSnapshot;try{n(e(t._source));var r=ps(g);a.mutableReadLanes|=r&a.pendingLanes}catch(o){n((function(){throw o}))}}))}),[t,r]),ur(h,n)&&ur(m,t)&&ur(f,r)||((e={pending:null,dispatch:null,lastRenderedReducer:ui,lastRenderedState:d}).dispatch=c=Pi.bind(null,Jo,e),u.queue=e,u.baseQueue=null,d=fi(a,t,n),u.memoizedState=u.baseState=d),d}function hi(e,t,n){return pi(si(),e,t,n)}function mi(e){var t=li();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={pending:null,dispatch:null,lastRenderedReducer:ui,lastRenderedState:e}).dispatch=Pi.bind(null,Jo,e),[t.memoizedState,e]}function gi(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=Jo.updateQueue)?(t={lastEffect:null},Jo.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function vi(e){return e={current:e},li().memoizedState=e}function bi(){return si().memoizedState}function yi(e,t,n,r){var a=li();Jo.flags|=e,a.memoizedState=gi(1|t,n,void 0,void 0===r?null:r)}function wi(e,t,n,r){var a=si();r=void 0===r?null:r;var o=void 0;if(null!==ei){var i=ei.memoizedState;if(o=i.destroy,null!==r&&oi(r,i.deps))return void gi(t,n,o,r)}Jo.flags|=e,a.memoizedState=gi(1|t,n,o,r)}function xi(e,t){return yi(516,4,e,t)}function ki(e,t){return wi(516,4,e,t)}function _i(e,t){return wi(4,2,e,t)}function Ei(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function Si(e,t,n){return n=null!=n?n.concat([e]):null,wi(4,2,Ei.bind(null,t,e),n)}function Ci(){}function Ti(e,t){var n=si();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&oi(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Oi(e,t){var n=si();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&oi(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function Di(e,t){var n=Ha();qa(98>n?98:n,(function(){e(!0)})),qa(97<n?97:n,(function(){var n=Xo.transition;Xo.transition=1;try{e(!1),t()}finally{Xo.transition=n}}))}function Pi(e,t,n){var r=fs(),a=ps(e),o={lane:a,action:n,eagerReducer:null,eagerState:null,next:null},i=t.pending;if(null===i?o.next=o:(o.next=i.next,i.next=o),t.pending=o,i=e.alternate,e===Jo||null!==i&&i===Jo)ri=ni=!0;else{if(0===e.lanes&&(null===i||0===i.lanes)&&null!==(i=t.lastRenderedReducer))try{var l=t.lastRenderedState,s=i(l,n);if(o.eagerReducer=i,o.eagerState=s,ur(s,l))return}catch(u){}hs(e,a,r)}}var Ni={readContext:oo,useCallback:ai,useContext:ai,useEffect:ai,useImperativeHandle:ai,useLayoutEffect:ai,useMemo:ai,useReducer:ai,useRef:ai,useState:ai,useDebugValue:ai,useDeferredValue:ai,useTransition:ai,useMutableSource:ai,useOpaqueIdentifier:ai,unstable_isNewReconciler:!1},Ii={readContext:oo,useCallback:function(e,t){return li().memoizedState=[e,void 0===t?null:t],e},useContext:oo,useEffect:xi,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,yi(4,2,Ei.bind(null,t,e),n)},useLayoutEffect:function(e,t){return yi(4,2,e,t)},useMemo:function(e,t){var n=li();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=li();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e=(e=r.queue={pending:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=Pi.bind(null,Jo,e),[r.memoizedState,e]},useRef:vi,useState:mi,useDebugValue:Ci,useDeferredValue:function(e){var t=mi(e),n=t[0],r=t[1];return xi((function(){var t=Xo.transition;Xo.transition=1;try{r(e)}finally{Xo.transition=t}}),[e]),n},useTransition:function(){var e=mi(!1),t=e[0];return vi(e=Di.bind(null,e[1])),[e,t]},useMutableSource:function(e,t,n){var r=li();return r.memoizedState={refs:{getSnapshot:t,setSnapshot:null},source:e,subscribe:n},pi(r,e,t,n)},useOpaqueIdentifier:function(){if($o){var e=!1,t=function(e){return{$$typeof:R,toString:e,valueOf:e}}((function(){throw e||(e=!0,n("r:"+(Qr++).toString(36))),Error(i(355))})),n=mi(t)[1];return 0==(2&Jo.mode)&&(Jo.flags|=516,gi(5,(function(){n("r:"+(Qr++).toString(36))}),void 0,null)),t}return mi(t="r:"+(Qr++).toString(36)),t},unstable_isNewReconciler:!1},Ai={readContext:oo,useCallback:Ti,useContext:oo,useEffect:ki,useImperativeHandle:Si,useLayoutEffect:_i,useMemo:Oi,useReducer:ci,useRef:bi,useState:function(){return ci(ui)},useDebugValue:Ci,useDeferredValue:function(e){var t=ci(ui),n=t[0],r=t[1];return ki((function(){var t=Xo.transition;Xo.transition=1;try{r(e)}finally{Xo.transition=t}}),[e]),n},useTransition:function(){var e=ci(ui)[0];return[bi().current,e]},useMutableSource:hi,useOpaqueIdentifier:function(){return ci(ui)[0]},unstable_isNewReconciler:!1},Li={readContext:oo,useCallback:Ti,useContext:oo,useEffect:ki,useImperativeHandle:Si,useLayoutEffect:_i,useMemo:Oi,useReducer:di,useRef:bi,useState:function(){return di(ui)},useDebugValue:Ci,useDeferredValue:function(e){var t=di(ui),n=t[0],r=t[1];return ki((function(){var t=Xo.transition;Xo.transition=1;try{r(e)}finally{Xo.transition=t}}),[e]),n},useTransition:function(){var e=di(ui)[0];return[bi().current,e]},useMutableSource:hi,useOpaqueIdentifier:function(){return di(ui)[0]},unstable_isNewReconciler:!1},Ri=x.ReactCurrentOwner,ji=!1;function Mi(e,t,n,r){t.child=null===e?To(t,null,n,r):Co(t,e.child,n,r)}function Fi(e,t,n,r,a){n=n.render;var o=t.ref;return ao(t,a),r=ii(e,t,n,r,o,a),null===e||ji?(t.flags|=1,Mi(e,t,r,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~a,ol(e,t,a))}function Bi(e,t,n,r,a,o){if(null===e){var i=n.type;return"function"!=typeof i||qs(i)||void 0!==i.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Gs(n.type,null,r,t,t.mode,o)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=i,zi(e,t,i,r,a,o))}return i=e.child,0==(a&o)&&(a=i.memoizedProps,(n=null!==(n=n.compare)?n:dr)(a,r)&&e.ref===t.ref)?ol(e,t,o):(t.flags|=1,(e=Ws(i,r)).ref=t.ref,e.return=t,t.child=e)}function zi(e,t,n,r,a,o){if(null!==e&&dr(e.memoizedProps,r)&&e.ref===t.ref){if(ji=!1,0==(o&a))return t.lanes=e.lanes,ol(e,t,o);0!=(16384&e.flags)&&(ji=!0)}return Hi(e,t,n,r,o)}function $i(e,t,n){var r=t.pendingProps,a=r.children,o=null!==e?e.memoizedState:null;if("hidden"===r.mode||"unstable-defer-without-hiding"===r.mode)if(0==(4&t.mode))t.memoizedState={baseLanes:0},ks(t,n);else{if(0==(1073741824&n))return e=null!==o?o.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e},ks(t,e),null;t.memoizedState={baseLanes:0},ks(t,null!==o?o.baseLanes:n)}else null!==o?(r=o.baseLanes|n,t.memoizedState=null):r=n,ks(t,r);return Mi(e,t,a,n),t.child}function Ui(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=128)}function Hi(e,t,n,r,a){var o=ga(n)?ha:fa.current;return o=ma(t,o),ao(t,a),n=ii(e,t,n,r,o,a),null===e||ji?(t.flags|=1,Mi(e,t,n,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~a,ol(e,t,a))}function Vi(e,t,n,r,a){if(ga(n)){var o=!0;wa(t)}else o=!1;if(ao(t,a),null===t.stateNode)null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),yo(t,n,r),xo(t,n,r,a),r=!0;else if(null===e){var i=t.stateNode,l=t.memoizedProps;i.props=l;var s=i.context,u=n.contextType;"object"==typeof u&&null!==u?u=oo(u):u=ma(t,u=ga(n)?ha:fa.current);var c=n.getDerivedStateFromProps,d="function"==typeof c||"function"==typeof i.getSnapshotBeforeUpdate;d||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==r||s!==u)&&wo(t,i,r,u),io=!1;var f=t.memoizedState;i.state=f,po(t,r,i,a),s=t.memoizedState,l!==r||f!==s||pa.current||io?("function"==typeof c&&(go(t,n,c,r),s=t.memoizedState),(l=io||bo(t,n,l,r,f,s,u))?(d||"function"!=typeof i.UNSAFE_componentWillMount&&"function"!=typeof i.componentWillMount||("function"==typeof i.componentWillMount&&i.componentWillMount(),"function"==typeof i.UNSAFE_componentWillMount&&i.UNSAFE_componentWillMount()),"function"==typeof i.componentDidMount&&(t.flags|=4)):("function"==typeof i.componentDidMount&&(t.flags|=4),t.memoizedProps=r,t.memoizedState=s),i.props=r,i.state=s,i.context=u,r=l):("function"==typeof i.componentDidMount&&(t.flags|=4),r=!1)}else{i=t.stateNode,so(e,t),l=t.memoizedProps,u=t.type===t.elementType?l:Ya(t.type,l),i.props=u,d=t.pendingProps,f=i.context,"object"==typeof(s=n.contextType)&&null!==s?s=oo(s):s=ma(t,s=ga(n)?ha:fa.current);var p=n.getDerivedStateFromProps;(c="function"==typeof p||"function"==typeof i.getSnapshotBeforeUpdate)||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==d||f!==s)&&wo(t,i,r,s),io=!1,f=t.memoizedState,i.state=f,po(t,r,i,a);var h=t.memoizedState;l!==d||f!==h||pa.current||io?("function"==typeof p&&(go(t,n,p,r),h=t.memoizedState),(u=io||bo(t,n,u,r,f,h,s))?(c||"function"!=typeof i.UNSAFE_componentWillUpdate&&"function"!=typeof i.componentWillUpdate||("function"==typeof i.componentWillUpdate&&i.componentWillUpdate(r,h,s),"function"==typeof i.UNSAFE_componentWillUpdate&&i.UNSAFE_componentWillUpdate(r,h,s)),"function"==typeof i.componentDidUpdate&&(t.flags|=4),"function"==typeof i.getSnapshotBeforeUpdate&&(t.flags|=256)):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=256),t.memoizedProps=r,t.memoizedState=h),i.props=r,i.state=h,i.context=s,r=u):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=256),r=!1)}return qi(e,t,n,r,o,a)}function qi(e,t,n,r,a,o){Ui(e,t);var i=0!=(64&t.flags);if(!r&&!i)return a&&xa(t,n,!1),ol(e,t,o);r=t.stateNode,Ri.current=t;var l=i&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&i?(t.child=Co(t,e.child,null,o),t.child=Co(t,null,l,o)):Mi(e,t,l,o),t.memoizedState=r.state,a&&xa(t,n,!0),t.child}function Wi(e){var t=e.stateNode;t.pendingContext?ba(0,t.pendingContext,t.pendingContext!==t.context):t.context&&ba(0,t.context,!1),Ao(e,t.containerInfo)}var Gi,Zi,Qi,Yi,Xi={dehydrated:null,retryLane:0};function Ki(e,t,n){var r,a=t.pendingProps,o=Mo.current,i=!1;return(r=0!=(64&t.flags))||(r=(null===e||null!==e.memoizedState)&&0!=(2&o)),r?(i=!0,t.flags&=-65):null!==e&&null===e.memoizedState||void 0===a.fallback||!0===a.unstable_avoidThisFallback||(o|=1),ca(Mo,1&o),null===e?(void 0!==a.fallback&&Vo(t),e=a.children,o=a.fallback,i?(e=Ji(t,e,o,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Xi,e):"number"==typeof a.unstable_expectedLoadTime?(e=Ji(t,e,o,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Xi,t.lanes=33554432,e):((n=Qs({mode:"visible",children:e},t.mode,n,null)).return=t,t.child=n)):(e.memoizedState,i?(a=tl(e,t,a.children,a.fallback,n),i=t.child,o=e.child.memoizedState,i.memoizedState=null===o?{baseLanes:n}:{baseLanes:o.baseLanes|n},i.childLanes=e.childLanes&~n,t.memoizedState=Xi,a):(n=el(e,t,a.children,n),t.memoizedState=null,n))}function Ji(e,t,n,r){var a=e.mode,o=e.child;return t={mode:"hidden",children:t},0==(2&a)&&null!==o?(o.childLanes=0,o.pendingProps=t):o=Qs(t,a,0,null),n=Zs(n,a,r,null),o.return=e,n.return=e,o.sibling=n,e.child=o,n}function el(e,t,n,r){var a=e.child;return e=a.sibling,n=Ws(a,{mode:"visible",children:n}),0==(2&t.mode)&&(n.lanes=r),n.return=t,n.sibling=null,null!==e&&(e.nextEffect=null,e.flags=8,t.firstEffect=t.lastEffect=e),t.child=n}function tl(e,t,n,r,a){var o=t.mode,i=e.child;e=i.sibling;var l={mode:"hidden",children:n};return 0==(2&o)&&t.child!==i?((n=t.child).childLanes=0,n.pendingProps=l,null!==(i=n.lastEffect)?(t.firstEffect=n.firstEffect,t.lastEffect=i,i.nextEffect=null):t.firstEffect=t.lastEffect=null):n=Ws(i,l),null!==e?r=Ws(e,r):(r=Zs(r,o,a,null)).flags|=2,r.return=t,n.return=t,n.sibling=r,t.child=n,r}function nl(e,t){e.lanes|=t;var n=e.alternate;null!==n&&(n.lanes|=t),ro(e.return,t)}function rl(e,t,n,r,a,o){var i=e.memoizedState;null===i?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:a,lastEffect:o}:(i.isBackwards=t,i.rendering=null,i.renderingStartTime=0,i.last=r,i.tail=n,i.tailMode=a,i.lastEffect=o)}function al(e,t,n){var r=t.pendingProps,a=r.revealOrder,o=r.tail;if(Mi(e,t,r.children,n),0!=(2&(r=Mo.current)))r=1&r|2,t.flags|=64;else{if(null!==e&&0!=(64&e.flags))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&nl(e,n);else if(19===e.tag)nl(e,n);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(ca(Mo,r),0==(2&t.mode))t.memoizedState=null;else switch(a){case"forwards":for(n=t.child,a=null;null!==n;)null!==(e=n.alternate)&&null===Fo(e)&&(a=n),n=n.sibling;null===(n=a)?(a=t.child,t.child=null):(a=n.sibling,n.sibling=null),rl(t,!1,a,n,o,t.lastEffect);break;case"backwards":for(n=null,a=t.child,t.child=null;null!==a;){if(null!==(e=a.alternate)&&null===Fo(e)){t.child=a;break}e=a.sibling,a.sibling=n,n=a,a=e}rl(t,!0,n,null,o,t.lastEffect);break;case"together":rl(t,!1,null,null,void 0,t.lastEffect);break;default:t.memoizedState=null}return t.child}function ol(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),$l|=t.lanes,0!=(n&t.childLanes)){if(null!==e&&t.child!==e.child)throw Error(i(153));if(null!==t.child){for(n=Ws(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Ws(e,e.pendingProps)).return=t;n.sibling=null}return t.child}return null}function il(e,t){if(!$o)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function ll(e,t,n){var r=t.pendingProps;switch(t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:case 17:return ga(t.type)&&va(),null;case 3:return Lo(),ua(pa),ua(fa),Qo(),(r=t.stateNode).pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(Wo(t)?t.flags|=4:r.hydrate||(t.flags|=256)),Zi(t),null;case 5:jo(t);var o=Io(No.current);if(n=t.type,null!==e&&null!=t.stateNode)Qi(e,t,n,r,o),e.ref!==t.ref&&(t.flags|=128);else{if(!r){if(null===t.stateNode)throw Error(i(166));return null}if(e=Io(Do.current),Wo(t)){r=t.stateNode,n=t.type;var l=t.memoizedProps;switch(r[Xr]=t,r[Kr]=l,n){case"dialog":Dr("cancel",r),Dr("close",r);break;case"iframe":case"object":case"embed":Dr("load",r);break;case"video":case"audio":for(e=0;e<Sr.length;e++)Dr(Sr[e],r);break;case"source":Dr("error",r);break;case"img":case"image":case"link":Dr("error",r),Dr("load",r);break;case"details":Dr("toggle",r);break;case"input":ee(r,l),Dr("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!l.multiple},Dr("invalid",r);break;case"textarea":se(r,l),Dr("invalid",r)}for(var u in _e(n,l),e=null,l)l.hasOwnProperty(u)&&(o=l[u],"children"===u?"string"==typeof o?r.textContent!==o&&(e=["children",o]):"number"==typeof o&&r.textContent!==""+o&&(e=["children",""+o]):s.hasOwnProperty(u)&&null!=o&&"onScroll"===u&&Dr("scroll",r));switch(n){case"input":Y(r),re(r,l,!0);break;case"textarea":Y(r),ce(r);break;case"select":case"option":break;default:"function"==typeof l.onClick&&(r.onclick=Br)}r=e,t.updateQueue=r,null!==r&&(t.flags|=4)}else{switch(u=9===o.nodeType?o:o.ownerDocument,e===de.html&&(e=fe(n)),e===de.html?"script"===n?((e=u.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=u.createElement(n,{is:r.is}):(e=u.createElement(n),"select"===n&&(u=e,r.multiple?u.multiple=!0:r.size&&(u.size=r.size))):e=u.createElementNS(e,n),e[Xr]=t,e[Kr]=r,Gi(e,t,!1,!1),t.stateNode=e,u=Ee(n,r),n){case"dialog":Dr("cancel",e),Dr("close",e),o=r;break;case"iframe":case"object":case"embed":Dr("load",e),o=r;break;case"video":case"audio":for(o=0;o<Sr.length;o++)Dr(Sr[o],e);o=r;break;case"source":Dr("error",e),o=r;break;case"img":case"image":case"link":Dr("error",e),Dr("load",e),o=r;break;case"details":Dr("toggle",e),o=r;break;case"input":ee(e,r),o=J(e,r),Dr("invalid",e);break;case"option":o=oe(e,r);break;case"select":e._wrapperState={wasMultiple:!!r.multiple},o=a({},r,{value:void 0}),Dr("invalid",e);break;case"textarea":se(e,r),o=le(e,r),Dr("invalid",e);break;default:o=r}_e(n,o);var c=o;for(l in c)if(c.hasOwnProperty(l)){var d=c[l];"style"===l?xe(e,d):"dangerouslySetInnerHTML"===l?null!=(d=d?d.__html:void 0)&&ge(e,d):"children"===l?"string"==typeof d?("textarea"!==n||""!==d)&&ve(e,d):"number"==typeof d&&ve(e,""+d):"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&"autoFocus"!==l&&(s.hasOwnProperty(l)?null!=d&&"onScroll"===l&&Dr("scroll",e):null!=d&&w(e,l,d,u))}switch(n){case"input":Y(e),re(e,r,!1);break;case"textarea":Y(e),ce(e);break;case"option":null!=r.value&&e.setAttribute("value",""+Z(r.value));break;case"select":e.multiple=!!r.multiple,null!=(l=r.value)?ie(e,!!r.multiple,l,!1):null!=r.defaultValue&&ie(e,!!r.multiple,r.defaultValue,!0);break;default:"function"==typeof o.onClick&&(e.onclick=Br)}Ur(n,r)&&(t.flags|=4)}null!==t.ref&&(t.flags|=128)}return null;case 6:if(e&&null!=t.stateNode)Yi(e,t,e.memoizedProps,r);else{if("string"!=typeof r&&null===t.stateNode)throw Error(i(166));n=Io(No.current),Io(Do.current),Wo(t)?(r=t.stateNode,n=t.memoizedProps,r[Xr]=t,r.nodeValue!==n&&(t.flags|=4)):((r=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[Xr]=t,t.stateNode=r)}return null;case 13:return ua(Mo),r=t.memoizedState,0!=(64&t.flags)?(t.lanes=n,t):(r=null!==r,n=!1,null===e?void 0!==t.memoizedProps.fallback&&Wo(t):n=null!==e.memoizedState,r&&!n&&0!=(2&t.mode)&&(null===e&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!=(1&Mo.current)?0===Fl&&(Fl=3):(0!==Fl&&3!==Fl||(Fl=4),null===Al||0==(134217727&$l)&&0==(134217727&Ul)||bs(Al,Rl))),(r||n)&&(t.flags|=4),null);case 4:return Lo(),Zi(t),null===e&&Nr(t.stateNode.containerInfo),null;case 10:return no(t),null;case 19:if(ua(Mo),null===(r=t.memoizedState))return null;if(l=0!=(64&t.flags),null===(u=r.rendering))if(l)il(r,!1);else{if(0!==Fl||null!==e&&0!=(64&e.flags))for(e=t.child;null!==e;){if(null!==(u=Fo(e))){for(t.flags|=64,il(r,!1),null!==(l=u.updateQueue)&&(t.updateQueue=l,t.flags|=4),null===r.lastEffect&&(t.firstEffect=null),t.lastEffect=r.lastEffect,r=n,n=t.child;null!==n;)e=r,(l=n).flags&=2,l.nextEffect=null,l.firstEffect=null,l.lastEffect=null,null===(u=l.alternate)?(l.childLanes=0,l.lanes=e,l.child=null,l.memoizedProps=null,l.memoizedState=null,l.updateQueue=null,l.dependencies=null,l.stateNode=null):(l.childLanes=u.childLanes,l.lanes=u.lanes,l.child=u.child,l.memoizedProps=u.memoizedProps,l.memoizedState=u.memoizedState,l.updateQueue=u.updateQueue,l.type=u.type,e=u.dependencies,l.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return ca(Mo,1&Mo.current|2),t.child}e=e.sibling}null!==r.tail&&Ua()>Wl&&(t.flags|=64,l=!0,il(r,!1),t.lanes=33554432)}else{if(!l)if(null!==(e=Fo(u))){if(t.flags|=64,l=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),il(r,!0),null===r.tail&&"hidden"===r.tailMode&&!u.alternate&&!$o)return null!==(t=t.lastEffect=r.lastEffect)&&(t.nextEffect=null),null}else 2*Ua()-r.renderingStartTime>Wl&&1073741824!==n&&(t.flags|=64,l=!0,il(r,!1),t.lanes=33554432);r.isBackwards?(u.sibling=t.child,t.child=u):(null!==(n=r.last)?n.sibling=u:t.child=u,r.last=u)}return null!==r.tail?(n=r.tail,r.rendering=n,r.tail=n.sibling,r.lastEffect=t.lastEffect,r.renderingStartTime=Ua(),n.sibling=null,t=Mo.current,ca(Mo,l?1&t|2:1&t),n):null;case 23:case 24:return _s(),null!==e&&null!==e.memoizedState!=(null!==t.memoizedState)&&"unstable-defer-without-hiding"!==r.mode&&(t.flags|=4),null}throw Error(i(156,t.tag))}function sl(e){switch(e.tag){case 1:ga(e.type)&&va();var t=e.flags;return 4096&t?(e.flags=-4097&t|64,e):null;case 3:if(Lo(),ua(pa),ua(fa),Qo(),0!=(64&(t=e.flags)))throw Error(i(285));return e.flags=-4097&t|64,e;case 5:return jo(e),null;case 13:return ua(Mo),4096&(t=e.flags)?(e.flags=-4097&t|64,e):null;case 19:return ua(Mo),null;case 4:return Lo(),null;case 10:return no(e),null;case 23:case 24:return _s(),null;default:return null}}function ul(e,t){try{var n="",r=t;do{n+=W(r),r=r.return}while(r);var a=n}catch(o){a="\nError generating stack: "+o.message+"\n"+o.stack}return{value:e,source:t,stack:a}}function cl(e,t){try{console.error(t.value)}catch(n){setTimeout((function(){throw n}))}}Gi=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Zi=function(){},Qi=function(e,t,n,r){var o=e.memoizedProps;if(o!==r){e=t.stateNode,Io(Do.current);var i,l=null;switch(n){case"input":o=J(e,o),r=J(e,r),l=[];break;case"option":o=oe(e,o),r=oe(e,r),l=[];break;case"select":o=a({},o,{value:void 0}),r=a({},r,{value:void 0}),l=[];break;case"textarea":o=le(e,o),r=le(e,r),l=[];break;default:"function"!=typeof o.onClick&&"function"==typeof r.onClick&&(e.onclick=Br)}for(d in _e(n,r),n=null,o)if(!r.hasOwnProperty(d)&&o.hasOwnProperty(d)&&null!=o[d])if("style"===d){var u=o[d];for(i in u)u.hasOwnProperty(i)&&(n||(n={}),n[i]="")}else"dangerouslySetInnerHTML"!==d&&"children"!==d&&"suppressContentEditableWarning"!==d&&"suppressHydrationWarning"!==d&&"autoFocus"!==d&&(s.hasOwnProperty(d)?l||(l=[]):(l=l||[]).push(d,null));for(d in r){var c=r[d];if(u=null!=o?o[d]:void 0,r.hasOwnProperty(d)&&c!==u&&(null!=c||null!=u))if("style"===d)if(u){for(i in u)!u.hasOwnProperty(i)||c&&c.hasOwnProperty(i)||(n||(n={}),n[i]="");for(i in c)c.hasOwnProperty(i)&&u[i]!==c[i]&&(n||(n={}),n[i]=c[i])}else n||(l||(l=[]),l.push(d,n)),n=c;else"dangerouslySetInnerHTML"===d?(c=c?c.__html:void 0,u=u?u.__html:void 0,null!=c&&u!==c&&(l=l||[]).push(d,c)):"children"===d?"string"!=typeof c&&"number"!=typeof c||(l=l||[]).push(d,""+c):"suppressContentEditableWarning"!==d&&"suppressHydrationWarning"!==d&&(s.hasOwnProperty(d)?(null!=c&&"onScroll"===d&&Dr("scroll",e),l||u===c||(l=[])):"object"==typeof c&&null!==c&&c.$$typeof===R?c.toString():(l=l||[]).push(d,c))}n&&(l=l||[]).push("style",n);var d=l;(t.updateQueue=d)&&(t.flags|=4)}},Yi=function(e,t,n,r){n!==r&&(t.flags|=4)};var dl="function"==typeof WeakMap?WeakMap:Map;function fl(e,t,n){(n=uo(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Yl||(Yl=!0,Xl=r),cl(0,t)},n}function pl(e,t,n){(n=uo(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var a=t.value;n.payload=function(){return cl(0,t),r(a)}}var o=e.stateNode;return null!==o&&"function"==typeof o.componentDidCatch&&(n.callback=function(){"function"!=typeof r&&(null===Kl?Kl=new Set([this]):Kl.add(this),cl(0,t));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}var hl="function"==typeof WeakSet?WeakSet:Set;function ml(e){var t=e.ref;if(null!==t)if("function"==typeof t)try{t(null)}catch(n){zs(e,n)}else t.current=null}function gl(e,t){switch(t.tag){case 0:case 11:case 15:case 22:case 5:case 6:case 4:case 17:return;case 1:if(256&t.flags&&null!==e){var n=e.memoizedProps,r=e.memoizedState;t=(e=t.stateNode).getSnapshotBeforeUpdate(t.elementType===t.type?n:Ya(t.type,n),r),e.__reactInternalSnapshotBeforeUpdate=t}return;case 3:return void(256&t.flags&&Wr(t.stateNode.containerInfo))}throw Error(i(163))}function vl(e,t,n){switch(n.tag){case 0:case 11:case 15:case 22:if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{if(3==(3&e.tag)){var r=e.create;e.destroy=r()}e=e.next}while(e!==t)}if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{var a=e;r=a.next,0!=(4&(a=a.tag))&&0!=(1&a)&&(Ms(n,e),js(n,e)),e=r}while(e!==t)}return;case 1:return e=n.stateNode,4&n.flags&&(null===t?e.componentDidMount():(r=n.elementType===n.type?t.memoizedProps:Ya(n.type,t.memoizedProps),e.componentDidUpdate(r,t.memoizedState,e.__reactInternalSnapshotBeforeUpdate))),void(null!==(t=n.updateQueue)&&ho(n,t,e));case 3:if(null!==(t=n.updateQueue)){if(e=null,null!==n.child)switch(n.child.tag){case 5:case 1:e=n.child.stateNode}ho(n,t,e)}return;case 5:return e=n.stateNode,void(null===t&&4&n.flags&&Ur(n.type,n.memoizedProps)&&e.focus());case 6:case 4:case 12:case 19:case 17:case 20:case 21:case 23:case 24:return;case 13:return void(null===n.memoizedState&&(n=n.alternate,null!==n&&(n=n.memoizedState,null!==n&&(n=n.dehydrated,null!==n&&xt(n)))))}throw Error(i(163))}function bl(e,t){for(var n=e;;){if(5===n.tag){var r=n.stateNode;if(t)"function"==typeof(r=r.style).setProperty?r.setProperty("display","none","important"):r.display="none";else{r=n.stateNode;var a=n.memoizedProps.style;a=null!=a&&a.hasOwnProperty("display")?a.display:null,r.style.display=we("display",a)}}else if(6===n.tag)n.stateNode.nodeValue=t?"":n.memoizedProps;else if((23!==n.tag&&24!==n.tag||null===n.memoizedState||n===e)&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===e)break;for(;null===n.sibling;){if(null===n.return||n.return===e)return;n=n.return}n.sibling.return=n.return,n=n.sibling}}function yl(e,t){if(_a&&"function"==typeof _a.onCommitFiberUnmount)try{_a.onCommitFiberUnmount(ka,t)}catch(o){}switch(t.tag){case 0:case 11:case 14:case 15:case 22:if(null!==(e=t.updateQueue)&&null!==(e=e.lastEffect)){var n=e=e.next;do{var r=n,a=r.destroy;if(r=r.tag,void 0!==a)if(0!=(4&r))Ms(t,n);else{r=t;try{a()}catch(o){zs(r,o)}}n=n.next}while(n!==e)}break;case 1:if(ml(t),"function"==typeof(e=t.stateNode).componentWillUnmount)try{e.props=t.memoizedProps,e.state=t.memoizedState,e.componentWillUnmount()}catch(o){zs(t,o)}break;case 5:ml(t);break;case 4:Sl(e,t)}}function wl(e){e.alternate=null,e.child=null,e.dependencies=null,e.firstEffect=null,e.lastEffect=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.return=null,e.updateQueue=null}function xl(e){return 5===e.tag||3===e.tag||4===e.tag}function kl(e){e:{for(var t=e.return;null!==t;){if(xl(t))break e;t=t.return}throw Error(i(160))}var n=t;switch(t=n.stateNode,n.tag){case 5:var r=!1;break;case 3:case 4:t=t.containerInfo,r=!0;break;default:throw Error(i(161))}16&n.flags&&(ve(t,""),n.flags&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||xl(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag&&18!==n.tag;){if(2&n.flags)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.flags)){n=n.stateNode;break e}}r?_l(e,n,t):El(e,n,t)}function _l(e,t,n){var r=e.tag,a=5===r||6===r;if(a)e=a?e.stateNode:e.stateNode.instance,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=Br));else if(4!==r&&null!==(e=e.child))for(_l(e,t,n),e=e.sibling;null!==e;)_l(e,t,n),e=e.sibling}function El(e,t,n){var r=e.tag,a=5===r||6===r;if(a)e=a?e.stateNode:e.stateNode.instance,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(El(e,t,n),e=e.sibling;null!==e;)El(e,t,n),e=e.sibling}function Sl(e,t){for(var n,r,a=t,o=!1;;){if(!o){o=a.return;e:for(;;){if(null===o)throw Error(i(160));switch(n=o.stateNode,o.tag){case 5:r=!1;break e;case 3:case 4:n=n.containerInfo,r=!0;break e}o=o.return}o=!0}if(5===a.tag||6===a.tag){e:for(var l=e,s=a,u=s;;)if(yl(l,u),null!==u.child&&4!==u.tag)u.child.return=u,u=u.child;else{if(u===s)break e;for(;null===u.sibling;){if(null===u.return||u.return===s)break e;u=u.return}u.sibling.return=u.return,u=u.sibling}r?(l=n,s=a.stateNode,8===l.nodeType?l.parentNode.removeChild(s):l.removeChild(s)):n.removeChild(a.stateNode)}else if(4===a.tag){if(null!==a.child){n=a.stateNode.containerInfo,r=!0,a.child.return=a,a=a.child;continue}}else if(yl(e,a),null!==a.child){a.child.return=a,a=a.child;continue}if(a===t)break;for(;null===a.sibling;){if(null===a.return||a.return===t)return;4===(a=a.return).tag&&(o=!1)}a.sibling.return=a.return,a=a.sibling}}function Cl(e,t){switch(t.tag){case 0:case 11:case 14:case 15:case 22:var n=t.updateQueue;if(null!==(n=null!==n?n.lastEffect:null)){var r=n=n.next;do{3==(3&r.tag)&&(e=r.destroy,r.destroy=void 0,void 0!==e&&e()),r=r.next}while(r!==n)}return;case 1:case 12:case 17:return;case 5:if(null!=(n=t.stateNode)){r=t.memoizedProps;var a=null!==e?e.memoizedProps:r;e=t.type;var o=t.updateQueue;if(t.updateQueue=null,null!==o){for(n[Kr]=r,"input"===e&&"radio"===r.type&&null!=r.name&&te(n,r),Ee(e,a),t=Ee(e,r),a=0;a<o.length;a+=2){var l=o[a],s=o[a+1];"style"===l?xe(n,s):"dangerouslySetInnerHTML"===l?ge(n,s):"children"===l?ve(n,s):w(n,l,s,t)}switch(e){case"input":ne(n,r);break;case"textarea":ue(n,r);break;case"select":e=n._wrapperState.wasMultiple,n._wrapperState.wasMultiple=!!r.multiple,null!=(o=r.value)?ie(n,!!r.multiple,o,!1):e!==!!r.multiple&&(null!=r.defaultValue?ie(n,!!r.multiple,r.defaultValue,!0):ie(n,!!r.multiple,r.multiple?[]:"",!1))}}}return;case 6:if(null===t.stateNode)throw Error(i(162));return void(t.stateNode.nodeValue=t.memoizedProps);case 3:return void((n=t.stateNode).hydrate&&(n.hydrate=!1,xt(n.containerInfo)));case 13:return null!==t.memoizedState&&(ql=Ua(),bl(t.child,!0)),void Tl(t);case 19:return void Tl(t);case 23:case 24:return void bl(t,null!==t.memoizedState)}throw Error(i(163))}function Tl(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new hl),t.forEach((function(t){var r=Us.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function Ol(e,t){return null!==e&&(null===(e=e.memoizedState)||null!==e.dehydrated)&&(null!==(t=t.memoizedState)&&null===t.dehydrated)}var Dl=Math.ceil,Pl=x.ReactCurrentDispatcher,Nl=x.ReactCurrentOwner,Il=0,Al=null,Ll=null,Rl=0,jl=0,Ml=sa(0),Fl=0,Bl=null,zl=0,$l=0,Ul=0,Hl=0,Vl=null,ql=0,Wl=1/0;function Gl(){Wl=Ua()+500}var Zl,Ql=null,Yl=!1,Xl=null,Kl=null,Jl=!1,es=null,ts=90,ns=[],rs=[],as=null,os=0,is=null,ls=-1,ss=0,us=0,cs=null,ds=!1;function fs(){return 0!=(48&Il)?Ua():-1!==ls?ls:ls=Ua()}function ps(e){if(0==(2&(e=e.mode)))return 1;if(0==(4&e))return 99===Ha()?1:2;if(0===ss&&(ss=zl),0!==Qa.transition){0!==us&&(us=null!==Vl?Vl.pendingLanes:0),e=ss;var t=4186112&~us;return 0===(t&=-t)&&(0===(t=(e=4186112&~e)&-e)&&(t=8192)),t}return e=Ha(),0!=(4&Il)&&98===e?e=Bt(12,ss):e=Bt(e=function(e){switch(e){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}(e),ss),e}function hs(e,t,n){if(50<os)throw os=0,is=null,Error(i(185));if(null===(e=ms(e,t)))return null;Ut(e,t,n),e===Al&&(Ul|=t,4===Fl&&bs(e,Rl));var r=Ha();1===t?0!=(8&Il)&&0==(48&Il)?ys(e):(gs(e,n),0===Il&&(Gl(),Ga())):(0==(4&Il)||98!==r&&99!==r||(null===as?as=new Set([e]):as.add(e)),gs(e,n)),Vl=e}function ms(e,t){e.lanes|=t;var n=e.alternate;for(null!==n&&(n.lanes|=t),n=e,e=e.return;null!==e;)e.childLanes|=t,null!==(n=e.alternate)&&(n.childLanes|=t),n=e,e=e.return;return 3===n.tag?n.stateNode:null}function gs(e,t){for(var n=e.callbackNode,r=e.suspendedLanes,a=e.pingedLanes,o=e.expirationTimes,l=e.pendingLanes;0<l;){var s=31-Ht(l),u=1<<s,c=o[s];if(-1===c){if(0==(u&r)||0!=(u&a)){c=t,jt(u);var d=Rt;o[s]=10<=d?c+250:6<=d?c+5e3:-1}}else c<=t&&(e.expiredLanes|=u);l&=~u}if(r=Mt(e,e===Al?Rl:0),t=Rt,0===r)null!==n&&(n!==ja&&Ca(n),e.callbackNode=null,e.callbackPriority=0);else{if(null!==n){if(e.callbackPriority===t)return;n!==ja&&Ca(n)}15===t?(n=ys.bind(null,e),null===Fa?(Fa=[n],Ba=Sa(Na,Za)):Fa.push(n),n=ja):14===t?n=Wa(99,ys.bind(null,e)):(n=function(e){switch(e){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(i(358,e))}}(t),n=Wa(n,vs.bind(null,e))),e.callbackPriority=t,e.callbackNode=n}}function vs(e){if(ls=-1,us=ss=0,0!=(48&Il))throw Error(i(327));var t=e.callbackNode;if(Rs()&&e.callbackNode!==t)return null;var n=Mt(e,e===Al?Rl:0);if(0===n)return null;var r=n,a=Il;Il|=16;var o=Cs();for(Al===e&&Rl===r||(Gl(),Es(e,r));;)try{Ds();break}catch(s){Ss(e,s)}if(to(),Pl.current=o,Il=a,null!==Ll?r=0:(Al=null,Rl=0,r=Fl),0!=(zl&Ul))Es(e,0);else if(0!==r){if(2===r&&(Il|=64,e.hydrate&&(e.hydrate=!1,Wr(e.containerInfo)),0!==(n=Ft(e))&&(r=Ts(e,n))),1===r)throw t=Bl,Es(e,0),bs(e,n),gs(e,Ua()),t;switch(e.finishedWork=e.current.alternate,e.finishedLanes=n,r){case 0:case 1:throw Error(i(345));case 2:case 5:Is(e);break;case 3:if(bs(e,n),(62914560&n)===n&&10<(r=ql+500-Ua())){if(0!==Mt(e,0))break;if(((a=e.suspendedLanes)&n)!==n){fs(),e.pingedLanes|=e.suspendedLanes&a;break}e.timeoutHandle=Vr(Is.bind(null,e),r);break}Is(e);break;case 4:if(bs(e,n),(4186112&n)===n)break;for(r=e.eventTimes,a=-1;0<n;){var l=31-Ht(n);o=1<<l,(l=r[l])>a&&(a=l),n&=~o}if(n=a,10<(n=(120>(n=Ua()-n)?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*Dl(n/1960))-n)){e.timeoutHandle=Vr(Is.bind(null,e),n);break}Is(e);break;default:throw Error(i(329))}}return gs(e,Ua()),e.callbackNode===t?vs.bind(null,e):null}function bs(e,t){for(t&=~Hl,t&=~Ul,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-Ht(t),r=1<<n;e[n]=-1,t&=~r}}function ys(e){if(0!=(48&Il))throw Error(i(327));if(Rs(),e===Al&&0!=(e.expiredLanes&Rl)){var t=Rl,n=Ts(e,t);0!=(zl&Ul)&&(n=Ts(e,t=Mt(e,t)))}else n=Ts(e,t=Mt(e,0));if(0!==e.tag&&2===n&&(Il|=64,e.hydrate&&(e.hydrate=!1,Wr(e.containerInfo)),0!==(t=Ft(e))&&(n=Ts(e,t))),1===n)throw n=Bl,Es(e,0),bs(e,t),gs(e,Ua()),n;return e.finishedWork=e.current.alternate,e.finishedLanes=t,Is(e),gs(e,Ua()),null}function ws(e,t){var n=Il;Il|=1;try{return e(t)}finally{0===(Il=n)&&(Gl(),Ga())}}function xs(e,t){var n=Il;Il&=-2,Il|=8;try{return e(t)}finally{0===(Il=n)&&(Gl(),Ga())}}function ks(e,t){ca(Ml,jl),jl|=t,zl|=t}function _s(){jl=Ml.current,ua(Ml)}function Es(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,qr(n)),null!==Ll)for(n=Ll.return;null!==n;){var r=n;switch(r.tag){case 1:null!=(r=r.type.childContextTypes)&&va();break;case 3:Lo(),ua(pa),ua(fa),Qo();break;case 5:jo(r);break;case 4:Lo();break;case 13:case 19:ua(Mo);break;case 10:no(r);break;case 23:case 24:_s()}n=n.return}Al=e,Ll=Ws(e.current,null),Rl=jl=zl=t,Fl=0,Bl=null,Hl=Ul=$l=0}function Ss(e,t){for(;;){var n=Ll;try{if(to(),Yo.current=Ni,ni){for(var r=Jo.memoizedState;null!==r;){var a=r.queue;null!==a&&(a.pending=null),r=r.next}ni=!1}if(Ko=0,ti=ei=Jo=null,ri=!1,Nl.current=null,null===n||null===n.return){Fl=1,Bl=t,Ll=null;break}e:{var o=e,i=n.return,l=n,s=t;if(t=Rl,l.flags|=2048,l.firstEffect=l.lastEffect=null,null!==s&&"object"==typeof s&&"function"==typeof s.then){var u=s;if(0==(2&l.mode)){var c=l.alternate;c?(l.updateQueue=c.updateQueue,l.memoizedState=c.memoizedState,l.lanes=c.lanes):(l.updateQueue=null,l.memoizedState=null)}var d=0!=(1&Mo.current),f=i;do{var p;if(p=13===f.tag){var h=f.memoizedState;if(null!==h)p=null!==h.dehydrated;else{var m=f.memoizedProps;p=void 0!==m.fallback&&(!0!==m.unstable_avoidThisFallback||!d)}}if(p){var g=f.updateQueue;if(null===g){var v=new Set;v.add(u),f.updateQueue=v}else g.add(u);if(0==(2&f.mode)){if(f.flags|=64,l.flags|=16384,l.flags&=-2981,1===l.tag)if(null===l.alternate)l.tag=17;else{var b=uo(-1,1);b.tag=2,co(l,b)}l.lanes|=1;break e}s=void 0,l=t;var y=o.pingCache;if(null===y?(y=o.pingCache=new dl,s=new Set,y.set(u,s)):void 0===(s=y.get(u))&&(s=new Set,y.set(u,s)),!s.has(l)){s.add(l);var w=$s.bind(null,o,u,l);u.then(w,w)}f.flags|=4096,f.lanes=t;break e}f=f.return}while(null!==f);s=Error((G(l.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.")}5!==Fl&&(Fl=2),s=ul(s,l),f=i;do{switch(f.tag){case 3:o=s,f.flags|=4096,t&=-t,f.lanes|=t,fo(f,fl(0,o,t));break e;case 1:o=s;var x=f.type,k=f.stateNode;if(0==(64&f.flags)&&("function"==typeof x.getDerivedStateFromError||null!==k&&"function"==typeof k.componentDidCatch&&(null===Kl||!Kl.has(k)))){f.flags|=4096,t&=-t,f.lanes|=t,fo(f,pl(f,o,t));break e}}f=f.return}while(null!==f)}Ns(n)}catch(_){t=_,Ll===n&&null!==n&&(Ll=n=n.return);continue}break}}function Cs(){var e=Pl.current;return Pl.current=Ni,null===e?Ni:e}function Ts(e,t){var n=Il;Il|=16;var r=Cs();for(Al===e&&Rl===t||Es(e,t);;)try{Os();break}catch(a){Ss(e,a)}if(to(),Il=n,Pl.current=r,null!==Ll)throw Error(i(261));return Al=null,Rl=0,Fl}function Os(){for(;null!==Ll;)Ps(Ll)}function Ds(){for(;null!==Ll&&!Ta();)Ps(Ll)}function Ps(e){var t=Zl(e.alternate,e,jl);e.memoizedProps=e.pendingProps,null===t?Ns(e):Ll=t,Nl.current=null}function Ns(e){var t=e;do{var n=t.alternate;if(e=t.return,0==(2048&t.flags)){if(null!==(n=ll(n,t,jl)))return void(Ll=n);if(24!==(n=t).tag&&23!==n.tag||null===n.memoizedState||0!=(1073741824&jl)||0==(4&n.mode)){for(var r=0,a=n.child;null!==a;)r|=a.lanes|a.childLanes,a=a.sibling;n.childLanes=r}null!==e&&0==(2048&e.flags)&&(null===e.firstEffect&&(e.firstEffect=t.firstEffect),null!==t.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=t.firstEffect),e.lastEffect=t.lastEffect),1<t.flags&&(null!==e.lastEffect?e.lastEffect.nextEffect=t:e.firstEffect=t,e.lastEffect=t))}else{if(null!==(n=sl(t)))return n.flags&=2047,void(Ll=n);null!==e&&(e.firstEffect=e.lastEffect=null,e.flags|=2048)}if(null!==(t=t.sibling))return void(Ll=t);Ll=t=e}while(null!==t);0===Fl&&(Fl=5)}function Is(e){var t=Ha();return qa(99,As.bind(null,e,t)),null}function As(e,t){do{Rs()}while(null!==es);if(0!=(48&Il))throw Error(i(327));var n=e.finishedWork;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(i(177));e.callbackNode=null;var r=n.lanes|n.childLanes,a=r,o=e.pendingLanes&~a;e.pendingLanes=a,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=a,e.mutableReadLanes&=a,e.entangledLanes&=a,a=e.entanglements;for(var l=e.eventTimes,s=e.expirationTimes;0<o;){var u=31-Ht(o),c=1<<u;a[u]=0,l[u]=-1,s[u]=-1,o&=~c}if(null!==as&&0==(24&r)&&as.has(e)&&as.delete(e),e===Al&&(Ll=Al=null,Rl=0),1<n.flags?null!==n.lastEffect?(n.lastEffect.nextEffect=n,r=n.firstEffect):r=n:r=n.firstEffect,null!==r){if(a=Il,Il|=32,Nl.current=null,zr=Zt,gr(l=mr())){if("selectionStart"in l)s={start:l.selectionStart,end:l.selectionEnd};else e:if(s=(s=l.ownerDocument)&&s.defaultView||window,(c=s.getSelection&&s.getSelection())&&0!==c.rangeCount){s=c.anchorNode,o=c.anchorOffset,u=c.focusNode,c=c.focusOffset;try{s.nodeType,u.nodeType}catch(C){s=null;break e}var d=0,f=-1,p=-1,h=0,m=0,g=l,v=null;t:for(;;){for(var b;g!==s||0!==o&&3!==g.nodeType||(f=d+o),g!==u||0!==c&&3!==g.nodeType||(p=d+c),3===g.nodeType&&(d+=g.nodeValue.length),null!==(b=g.firstChild);)v=g,g=b;for(;;){if(g===l)break t;if(v===s&&++h===o&&(f=d),v===u&&++m===c&&(p=d),null!==(b=g.nextSibling))break;v=(g=v).parentNode}g=b}s=-1===f||-1===p?null:{start:f,end:p}}else s=null;s=s||{start:0,end:0}}else s=null;$r={focusedElem:l,selectionRange:s},Zt=!1,cs=null,ds=!1,Ql=r;do{try{Ls()}catch(C){if(null===Ql)throw Error(i(330));zs(Ql,C),Ql=Ql.nextEffect}}while(null!==Ql);cs=null,Ql=r;do{try{for(l=e;null!==Ql;){var y=Ql.flags;if(16&y&&ve(Ql.stateNode,""),128&y){var w=Ql.alternate;if(null!==w){var x=w.ref;null!==x&&("function"==typeof x?x(null):x.current=null)}}switch(1038&y){case 2:kl(Ql),Ql.flags&=-3;break;case 6:kl(Ql),Ql.flags&=-3,Cl(Ql.alternate,Ql);break;case 1024:Ql.flags&=-1025;break;case 1028:Ql.flags&=-1025,Cl(Ql.alternate,Ql);break;case 4:Cl(Ql.alternate,Ql);break;case 8:Sl(l,s=Ql);var k=s.alternate;wl(s),null!==k&&wl(k)}Ql=Ql.nextEffect}}catch(C){if(null===Ql)throw Error(i(330));zs(Ql,C),Ql=Ql.nextEffect}}while(null!==Ql);if(x=$r,w=mr(),y=x.focusedElem,l=x.selectionRange,w!==y&&y&&y.ownerDocument&&hr(y.ownerDocument.documentElement,y)){null!==l&&gr(y)&&(w=l.start,void 0===(x=l.end)&&(x=w),"selectionStart"in y?(y.selectionStart=w,y.selectionEnd=Math.min(x,y.value.length)):(x=(w=y.ownerDocument||document)&&w.defaultView||window).getSelection&&(x=x.getSelection(),s=y.textContent.length,k=Math.min(l.start,s),l=void 0===l.end?k:Math.min(l.end,s),!x.extend&&k>l&&(s=l,l=k,k=s),s=pr(y,k),o=pr(y,l),s&&o&&(1!==x.rangeCount||x.anchorNode!==s.node||x.anchorOffset!==s.offset||x.focusNode!==o.node||x.focusOffset!==o.offset)&&((w=w.createRange()).setStart(s.node,s.offset),x.removeAllRanges(),k>l?(x.addRange(w),x.extend(o.node,o.offset)):(w.setEnd(o.node,o.offset),x.addRange(w))))),w=[];for(x=y;x=x.parentNode;)1===x.nodeType&&w.push({element:x,left:x.scrollLeft,top:x.scrollTop});for("function"==typeof y.focus&&y.focus(),y=0;y<w.length;y++)(x=w[y]).element.scrollLeft=x.left,x.element.scrollTop=x.top}Zt=!!zr,$r=zr=null,e.current=n,Ql=r;do{try{for(y=e;null!==Ql;){var _=Ql.flags;if(36&_&&vl(y,Ql.alternate,Ql),128&_){w=void 0;var E=Ql.ref;if(null!==E){var S=Ql.stateNode;Ql.tag,w=S,"function"==typeof E?E(w):E.current=w}}Ql=Ql.nextEffect}}catch(C){if(null===Ql)throw Error(i(330));zs(Ql,C),Ql=Ql.nextEffect}}while(null!==Ql);Ql=null,Ma(),Il=a}else e.current=n;if(Jl)Jl=!1,es=e,ts=t;else for(Ql=r;null!==Ql;)t=Ql.nextEffect,Ql.nextEffect=null,8&Ql.flags&&((_=Ql).sibling=null,_.stateNode=null),Ql=t;if(0===(r=e.pendingLanes)&&(Kl=null),1===r?e===is?os++:(os=0,is=e):os=0,n=n.stateNode,_a&&"function"==typeof _a.onCommitFiberRoot)try{_a.onCommitFiberRoot(ka,n,void 0,64==(64&n.current.flags))}catch(C){}if(gs(e,Ua()),Yl)throw Yl=!1,e=Xl,Xl=null,e;return 0!=(8&Il)||Ga(),null}function Ls(){for(;null!==Ql;){var e=Ql.alternate;ds||null===cs||(0!=(8&Ql.flags)?Je(Ql,cs)&&(ds=!0):13===Ql.tag&&Ol(e,Ql)&&Je(Ql,cs)&&(ds=!0));var t=Ql.flags;0!=(256&t)&&gl(e,Ql),0==(512&t)||Jl||(Jl=!0,Wa(97,(function(){return Rs(),null}))),Ql=Ql.nextEffect}}function Rs(){if(90!==ts){var e=97<ts?97:ts;return ts=90,qa(e,Fs)}return!1}function js(e,t){ns.push(t,e),Jl||(Jl=!0,Wa(97,(function(){return Rs(),null})))}function Ms(e,t){rs.push(t,e),Jl||(Jl=!0,Wa(97,(function(){return Rs(),null})))}function Fs(){if(null===es)return!1;var e=es;if(es=null,0!=(48&Il))throw Error(i(331));var t=Il;Il|=32;var n=rs;rs=[];for(var r=0;r<n.length;r+=2){var a=n[r],o=n[r+1],l=a.destroy;if(a.destroy=void 0,"function"==typeof l)try{l()}catch(u){if(null===o)throw Error(i(330));zs(o,u)}}for(n=ns,ns=[],r=0;r<n.length;r+=2){a=n[r],o=n[r+1];try{var s=a.create;a.destroy=s()}catch(u){if(null===o)throw Error(i(330));zs(o,u)}}for(s=e.current.firstEffect;null!==s;)e=s.nextEffect,s.nextEffect=null,8&s.flags&&(s.sibling=null,s.stateNode=null),s=e;return Il=t,Ga(),!0}function Bs(e,t,n){co(e,t=fl(0,t=ul(n,t),1)),t=fs(),null!==(e=ms(e,1))&&(Ut(e,1,t),gs(e,t))}function zs(e,t){if(3===e.tag)Bs(e,e,t);else for(var n=e.return;null!==n;){if(3===n.tag){Bs(n,e,t);break}if(1===n.tag){var r=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Kl||!Kl.has(r))){var a=pl(n,e=ul(t,e),1);if(co(n,a),a=fs(),null!==(n=ms(n,1)))Ut(n,1,a),gs(n,a);else if("function"==typeof r.componentDidCatch&&(null===Kl||!Kl.has(r)))try{r.componentDidCatch(t,e)}catch(o){}break}}n=n.return}}function $s(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),t=fs(),e.pingedLanes|=e.suspendedLanes&n,Al===e&&(Rl&n)===n&&(4===Fl||3===Fl&&(62914560&Rl)===Rl&&500>Ua()-ql?Es(e,0):Hl|=n),gs(e,t)}function Us(e,t){var n=e.stateNode;null!==n&&n.delete(t),0===(t=0)&&(0==(2&(t=e.mode))?t=1:0==(4&t)?t=99===Ha()?1:2:(0===ss&&(ss=zl),0===(t=zt(62914560&~ss))&&(t=4194304))),n=fs(),null!==(e=ms(e,t))&&(Ut(e,t,n),gs(e,n))}function Hs(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.flags=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childLanes=this.lanes=0,this.alternate=null}function Vs(e,t,n,r){return new Hs(e,t,n,r)}function qs(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Ws(e,t){var n=e.alternate;return null===n?((n=Vs(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Gs(e,t,n,r,a,o){var l=2;if(r=e,"function"==typeof e)qs(e)&&(l=1);else if("string"==typeof e)l=5;else e:switch(e){case E:return Zs(n.children,a,o,t);case j:l=8,a|=16;break;case S:l=8,a|=1;break;case C:return(e=Vs(12,n,t,8|a)).elementType=C,e.type=C,e.lanes=o,e;case P:return(e=Vs(13,n,t,a)).type=P,e.elementType=P,e.lanes=o,e;case N:return(e=Vs(19,n,t,a)).elementType=N,e.lanes=o,e;case M:return Qs(n,a,o,t);case F:return(e=Vs(24,n,t,a)).elementType=F,e.lanes=o,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case T:l=10;break e;case O:l=9;break e;case D:l=11;break e;case I:l=14;break e;case A:l=16,r=null;break e;case L:l=22;break e}throw Error(i(130,null==e?e:typeof e,""))}return(t=Vs(l,n,t,a)).elementType=e,t.type=r,t.lanes=o,t}function Zs(e,t,n,r){return(e=Vs(7,e,r,t)).lanes=n,e}function Qs(e,t,n,r){return(e=Vs(23,e,r,t)).elementType=M,e.lanes=n,e}function Ys(e,t,n){return(e=Vs(6,e,null,t)).lanes=n,e}function Xs(e,t,n){return(t=Vs(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Ks(e,t,n){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.pendingContext=this.context=null,this.hydrate=n,this.callbackNode=null,this.callbackPriority=0,this.eventTimes=$t(0),this.expirationTimes=$t(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=$t(0),this.mutableSourceEagerHydrationData=null}function Js(e,t,n,r){var a=t.current,o=fs(),l=ps(a);e:if(n){t:{if(Qe(n=n._reactInternals)!==n||1!==n.tag)throw Error(i(170));var s=n;do{switch(s.tag){case 3:s=s.stateNode.context;break t;case 1:if(ga(s.type)){s=s.stateNode.__reactInternalMemoizedMergedChildContext;break t}}s=s.return}while(null!==s);throw Error(i(171))}if(1===n.tag){var u=n.type;if(ga(u)){n=ya(n,u,s);break e}}n=s}else n=da;return null===t.context?t.context=n:t.pendingContext=n,(t=uo(o,l)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),co(a,t),hs(a,l,o),l}function eu(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function tu(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function nu(e,t){tu(e,t),(e=e.alternate)&&tu(e,t)}function ru(e,t,n){var r=null!=n&&null!=n.hydrationOptions&&n.hydrationOptions.mutableSources||null;if(n=new Ks(e,t,null!=n&&!0===n.hydrate),t=Vs(3,null,null,2===t?7:1===t?3:0),n.current=t,t.stateNode=n,lo(t),e[Jr]=n.current,Nr(8===e.nodeType?e.parentNode:e),r)for(e=0;e<r.length;e++){var a=(t=r[e])._getVersion;a=a(t._source),null==n.mutableSourceEagerHydrationData?n.mutableSourceEagerHydrationData=[t,a]:n.mutableSourceEagerHydrationData.push(t,a)}this._internalRoot=n}function au(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function ou(e,t,n,r,a){var o=n._reactRootContainer;if(o){var i=o._internalRoot;if("function"==typeof a){var l=a;a=function(){var e=eu(i);l.call(e)}}Js(t,i,e,a)}else{if(o=n._reactRootContainer=function(e,t){if(t||(t=!(!(t=e?9===e.nodeType?e.documentElement:e.firstChild:null)||1!==t.nodeType||!t.hasAttribute("data-reactroot"))),!t)for(var n;n=e.lastChild;)e.removeChild(n);return new ru(e,0,t?{hydrate:!0}:void 0)}(n,r),i=o._internalRoot,"function"==typeof a){var s=a;a=function(){var e=eu(i);s.call(e)}}xs((function(){Js(t,i,e,a)}))}return eu(i)}function iu(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!au(t))throw Error(i(200));return function(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:_,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}(e,t,null,n)}Zl=function(e,t,n){var r=t.lanes;if(null!==e)if(e.memoizedProps!==t.pendingProps||pa.current)ji=!0;else{if(0==(n&r)){switch(ji=!1,t.tag){case 3:Wi(t),Go();break;case 5:Ro(t);break;case 1:ga(t.type)&&wa(t);break;case 4:Ao(t,t.stateNode.containerInfo);break;case 10:r=t.memoizedProps.value;var a=t.type._context;ca(Xa,a._currentValue),a._currentValue=r;break;case 13:if(null!==t.memoizedState)return 0!=(n&t.child.childLanes)?Ki(e,t,n):(ca(Mo,1&Mo.current),null!==(t=ol(e,t,n))?t.sibling:null);ca(Mo,1&Mo.current);break;case 19:if(r=0!=(n&t.childLanes),0!=(64&e.flags)){if(r)return al(e,t,n);t.flags|=64}if(null!==(a=t.memoizedState)&&(a.rendering=null,a.tail=null,a.lastEffect=null),ca(Mo,Mo.current),r)break;return null;case 23:case 24:return t.lanes=0,$i(e,t,n)}return ol(e,t,n)}ji=0!=(16384&e.flags)}else ji=!1;switch(t.lanes=0,t.tag){case 2:if(r=t.type,null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,a=ma(t,fa.current),ao(t,n),a=ii(null,t,r,e,a,n),t.flags|=1,"object"==typeof a&&null!==a&&"function"==typeof a.render&&void 0===a.$$typeof){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,ga(r)){var o=!0;wa(t)}else o=!1;t.memoizedState=null!==a.state&&void 0!==a.state?a.state:null,lo(t);var l=r.getDerivedStateFromProps;"function"==typeof l&&go(t,r,l,e),a.updater=vo,t.stateNode=a,a._reactInternals=t,xo(t,r,e,n),t=qi(null,t,r,!0,o,n)}else t.tag=0,Mi(null,t,a,n),t=t.child;return t;case 16:a=t.elementType;e:{switch(null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,a=(o=a._init)(a._payload),t.type=a,o=t.tag=function(e){if("function"==typeof e)return qs(e)?1:0;if(null!=e){if((e=e.$$typeof)===D)return 11;if(e===I)return 14}return 2}(a),e=Ya(a,e),o){case 0:t=Hi(null,t,a,e,n);break e;case 1:t=Vi(null,t,a,e,n);break e;case 11:t=Fi(null,t,a,e,n);break e;case 14:t=Bi(null,t,a,Ya(a.type,e),r,n);break e}throw Error(i(306,a,""))}return t;case 0:return r=t.type,a=t.pendingProps,Hi(e,t,r,a=t.elementType===r?a:Ya(r,a),n);case 1:return r=t.type,a=t.pendingProps,Vi(e,t,r,a=t.elementType===r?a:Ya(r,a),n);case 3:if(Wi(t),r=t.updateQueue,null===e||null===r)throw Error(i(282));if(r=t.pendingProps,a=null!==(a=t.memoizedState)?a.element:null,so(e,t),po(t,r,null,n),(r=t.memoizedState.element)===a)Go(),t=ol(e,t,n);else{if((o=(a=t.stateNode).hydrate)&&(zo=Gr(t.stateNode.containerInfo.firstChild),Bo=t,o=$o=!0),o){if(null!=(e=a.mutableSourceEagerHydrationData))for(a=0;a<e.length;a+=2)(o=e[a])._workInProgressVersionPrimary=e[a+1],Zo.push(o);for(n=To(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|1024,n=n.sibling}else Mi(e,t,r,n),Go();t=t.child}return t;case 5:return Ro(t),null===e&&Vo(t),r=t.type,a=t.pendingProps,o=null!==e?e.memoizedProps:null,l=a.children,Hr(r,a)?l=null:null!==o&&Hr(r,o)&&(t.flags|=16),Ui(e,t),Mi(e,t,l,n),t.child;case 6:return null===e&&Vo(t),null;case 13:return Ki(e,t,n);case 4:return Ao(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=Co(t,null,r,n):Mi(e,t,r,n),t.child;case 11:return r=t.type,a=t.pendingProps,Fi(e,t,r,a=t.elementType===r?a:Ya(r,a),n);case 7:return Mi(e,t,t.pendingProps,n),t.child;case 8:case 12:return Mi(e,t,t.pendingProps.children,n),t.child;case 10:e:{r=t.type._context,a=t.pendingProps,l=t.memoizedProps,o=a.value;var s=t.type._context;if(ca(Xa,s._currentValue),s._currentValue=o,null!==l)if(s=l.value,0===(o=ur(s,o)?0:0|("function"==typeof r._calculateChangedBits?r._calculateChangedBits(s,o):1073741823))){if(l.children===a.children&&!pa.current){t=ol(e,t,n);break e}}else for(null!==(s=t.child)&&(s.return=t);null!==s;){var u=s.dependencies;if(null!==u){l=s.child;for(var c=u.firstContext;null!==c;){if(c.context===r&&0!=(c.observedBits&o)){1===s.tag&&((c=uo(-1,n&-n)).tag=2,co(s,c)),s.lanes|=n,null!==(c=s.alternate)&&(c.lanes|=n),ro(s.return,n),u.lanes|=n;break}c=c.next}}else l=10===s.tag&&s.type===t.type?null:s.child;if(null!==l)l.return=s;else for(l=s;null!==l;){if(l===t){l=null;break}if(null!==(s=l.sibling)){s.return=l.return,l=s;break}l=l.return}s=l}Mi(e,t,a.children,n),t=t.child}return t;case 9:return a=t.type,r=(o=t.pendingProps).children,ao(t,n),r=r(a=oo(a,o.unstable_observedBits)),t.flags|=1,Mi(e,t,r,n),t.child;case 14:return o=Ya(a=t.type,t.pendingProps),Bi(e,t,a,o=Ya(a.type,o),r,n);case 15:return zi(e,t,t.type,t.pendingProps,r,n);case 17:return r=t.type,a=t.pendingProps,a=t.elementType===r?a:Ya(r,a),null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),t.tag=1,ga(r)?(e=!0,wa(t)):e=!1,ao(t,n),yo(t,r,a),xo(t,r,a,n),qi(null,t,r,!0,e,n);case 19:return al(e,t,n);case 23:case 24:return $i(e,t,n)}throw Error(i(156,t.tag))},ru.prototype.render=function(e){Js(e,this._internalRoot,null,null)},ru.prototype.unmount=function(){var e=this._internalRoot,t=e.containerInfo;Js(null,e,null,(function(){t[Jr]=null}))},et=function(e){13===e.tag&&(hs(e,4,fs()),nu(e,4))},tt=function(e){13===e.tag&&(hs(e,67108864,fs()),nu(e,67108864))},nt=function(e){if(13===e.tag){var t=fs(),n=ps(e);hs(e,n,t),nu(e,n)}},rt=function(e,t){return t()},Ce=function(e,t,n){switch(t){case"input":if(ne(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var a=aa(r);if(!a)throw Error(i(90));X(r),ne(r,a)}}}break;case"textarea":ue(e,n);break;case"select":null!=(t=n.value)&&ie(e,!!n.multiple,t,!1)}},Ie=ws,Ae=function(e,t,n,r,a){var o=Il;Il|=4;try{return qa(98,e.bind(null,t,n,r,a))}finally{0===(Il=o)&&(Gl(),Ga())}},Le=function(){0==(49&Il)&&(function(){if(null!==as){var e=as;as=null,e.forEach((function(e){e.expiredLanes|=24&e.pendingLanes,gs(e,Ua())}))}Ga()}(),Rs())},Re=function(e,t){var n=Il;Il|=2;try{return e(t)}finally{0===(Il=n)&&(Gl(),Ga())}};var lu={Events:[na,ra,aa,Pe,Ne,Rs,{current:!1}]},su={findFiberByHostInstance:ta,bundleType:0,version:"17.0.2",rendererPackageName:"react-dom"},uu={bundleType:su.bundleType,version:su.version,rendererPackageName:su.rendererPackageName,rendererConfig:su.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:x.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=Ke(e))?null:e.stateNode},findFiberByHostInstance:su.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var cu=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!cu.isDisabled&&cu.supportsFiber)try{ka=cu.inject(uu),_a=cu}catch(me){}}t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=lu,t.createPortal=iu,t.findDOMNode=function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternals;if(void 0===t){if("function"==typeof e.render)throw Error(i(188));throw Error(i(268,Object.keys(e)))}return e=null===(e=Ke(t))?null:e.stateNode},t.flushSync=function(e,t){var n=Il;if(0!=(48&n))return e(t);Il|=1;try{if(e)return qa(99,e.bind(null,t))}finally{Il=n,Ga()}},t.hydrate=function(e,t,n){if(!au(t))throw Error(i(200));return ou(null,e,t,!0,n)},t.render=function(e,t,n){if(!au(t))throw Error(i(200));return ou(null,e,t,!1,n)},t.unmountComponentAtNode=function(e){if(!au(e))throw Error(i(40));return!!e._reactRootContainer&&(xs((function(){ou(null,null,e,!1,(function(){e._reactRootContainer=null,e[Jr]=null}))})),!0)},t.unstable_batchedUpdates=ws,t.unstable_createPortal=function(e,t){return iu(e,t,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)},t.unstable_renderSubtreeIntoContainer=function(e,t,n,r){if(!au(n))throw Error(i(200));if(null==e||void 0===e._reactInternals)throw Error(i(38));return ou(e,t,n,!1,r)},t.version="17.0.2"},73935:(e,t,n)=>{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(64448)},69590:e=>{var t="undefined"!=typeof Element,n="function"==typeof Map,r="function"==typeof Set,a="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function o(e,i){if(e===i)return!0;if(e&&i&&"object"==typeof e&&"object"==typeof i){if(e.constructor!==i.constructor)return!1;var l,s,u,c;if(Array.isArray(e)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(!o(e[s],i[s]))return!1;return!0}if(n&&e instanceof Map&&i instanceof Map){if(e.size!==i.size)return!1;for(c=e.entries();!(s=c.next()).done;)if(!i.has(s.value[0]))return!1;for(c=e.entries();!(s=c.next()).done;)if(!o(s.value[1],i.get(s.value[0])))return!1;return!0}if(r&&e instanceof Set&&i instanceof Set){if(e.size!==i.size)return!1;for(c=e.entries();!(s=c.next()).done;)if(!i.has(s.value[0]))return!1;return!0}if(a&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(i)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(e[s]!==i[s])return!1;return!0}if(e.constructor===RegExp)return e.source===i.source&&e.flags===i.flags;if(e.valueOf!==Object.prototype.valueOf&&"function"==typeof e.valueOf&&"function"==typeof i.valueOf)return e.valueOf()===i.valueOf();if(e.toString!==Object.prototype.toString&&"function"==typeof e.toString&&"function"==typeof i.toString)return e.toString()===i.toString();if((l=(u=Object.keys(e)).length)!==Object.keys(i).length)return!1;for(s=l;0!=s--;)if(!Object.prototype.hasOwnProperty.call(i,u[s]))return!1;if(t&&e instanceof Element)return!1;for(s=l;0!=s--;)if(("_owner"!==u[s]&&"__v"!==u[s]&&"__o"!==u[s]||!e.$$typeof)&&!o(e[u[s]],i[u[s]]))return!1;return!0}return e!=e&&i!=i}e.exports=function(e,t){try{return o(e,t)}catch(n){if((n.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw n}}},70405:(e,t,n)=>{"use strict";n.d(t,{B6:()=>q,ql:()=>J});var r=n(67294),a=n(45697),o=n.n(a),i=n(69590),l=n.n(i),s=n(41143),u=n.n(s),c=n(96774),d=n.n(c);function f(){return f=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},f.apply(this,arguments)}function p(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,h(e,t)}function h(e,t){return h=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},h(e,t)}function m(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t.indexOf(n=o[r])>=0||(a[n]=e[n]);return a}var g={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title",FRAGMENT:"Symbol(react.fragment)"},v={rel:["amphtml","canonical","alternate"]},b={type:["application/ld+json"]},y={charset:"",name:["robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]},w=Object.keys(g).map((function(e){return g[e]})),x={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},k=Object.keys(x).reduce((function(e,t){return e[x[t]]=t,e}),{}),_=function(e,t){for(var n=e.length-1;n>=0;n-=1){var r=e[n];if(Object.prototype.hasOwnProperty.call(r,t))return r[t]}return null},E=function(e){var t=_(e,g.TITLE),n=_(e,"titleTemplate");if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,(function(){return t}));var r=_(e,"defaultTitle");return t||r||void 0},S=function(e){return _(e,"onChangeClientState")||function(){}},C=function(e,t){return t.filter((function(t){return void 0!==t[e]})).map((function(t){return t[e]})).reduce((function(e,t){return f({},e,t)}),{})},T=function(e,t){return t.filter((function(e){return void 0!==e[g.BASE]})).map((function(e){return e[g.BASE]})).reverse().reduce((function(t,n){if(!t.length)for(var r=Object.keys(n),a=0;a<r.length;a+=1){var o=r[a].toLowerCase();if(-1!==e.indexOf(o)&&n[o])return t.concat(n)}return t}),[])},O=function(e,t,n){var r={};return n.filter((function(t){return!!Array.isArray(t[e])||(void 0!==t[e]&&console&&"function"==typeof console.warn&&console.warn("Helmet: "+e+' should be of type "Array". Instead found type "'+typeof t[e]+'"'),!1)})).map((function(t){return t[e]})).reverse().reduce((function(e,n){var a={};n.filter((function(e){for(var n,o=Object.keys(e),i=0;i<o.length;i+=1){var l=o[i],s=l.toLowerCase();-1===t.indexOf(s)||"rel"===n&&"canonical"===e[n].toLowerCase()||"rel"===s&&"stylesheet"===e[s].toLowerCase()||(n=s),-1===t.indexOf(l)||"innerHTML"!==l&&"cssText"!==l&&"itemprop"!==l||(n=l)}if(!n||!e[n])return!1;var u=e[n].toLowerCase();return r[n]||(r[n]={}),a[n]||(a[n]={}),!r[n][u]&&(a[n][u]=!0,!0)})).reverse().forEach((function(t){return e.push(t)}));for(var o=Object.keys(a),i=0;i<o.length;i+=1){var l=o[i],s=f({},r[l],a[l]);r[l]=s}return e}),[]).reverse()},D=function(e,t){if(Array.isArray(e)&&e.length)for(var n=0;n<e.length;n+=1)if(e[n][t])return!0;return!1},P=function(e){return Array.isArray(e)?e.join(""):e},N=function(e,t){return Array.isArray(e)?e.reduce((function(e,n){return function(e,t){for(var n=Object.keys(e),r=0;r<n.length;r+=1)if(t[n[r]]&&t[n[r]].includes(e[n[r]]))return!0;return!1}(n,t)?e.priority.push(n):e.default.push(n),e}),{priority:[],default:[]}):{default:e}},I=function(e,t){var n;return f({},e,((n={})[t]=void 0,n))},A=[g.NOSCRIPT,g.SCRIPT,g.STYLE],L=function(e,t){return void 0===t&&(t=!0),!1===t?String(e):String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")},R=function(e){return Object.keys(e).reduce((function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r}),"")},j=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce((function(t,n){return t[x[n]||n]=e[n],t}),t)},M=function(e,t){return t.map((function(t,n){var a,o=((a={key:n})["data-rh"]=!0,a);return Object.keys(t).forEach((function(e){var n=x[e]||e;"innerHTML"===n||"cssText"===n?o.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:o[n]=t[e]})),r.createElement(e,o)}))},F=function(e,t,n){switch(e){case g.TITLE:return{toComponent:function(){return n=t.titleAttributes,(a={key:e=t.title})["data-rh"]=!0,o=j(n,a),[r.createElement(g.TITLE,o,e)];var e,n,a,o},toString:function(){return function(e,t,n,r){var a=R(n),o=P(t);return a?"<"+e+' data-rh="true" '+a+">"+L(o,r)+"</"+e+">":"<"+e+' data-rh="true">'+L(o,r)+"</"+e+">"}(e,t.title,t.titleAttributes,n)}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return j(t)},toString:function(){return R(t)}};default:return{toComponent:function(){return M(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var a=Object.keys(r).filter((function(e){return!("innerHTML"===e||"cssText"===e)})).reduce((function(e,t){var a=void 0===r[t]?t:t+'="'+L(r[t],n)+'"';return e?e+" "+a:a}),""),o=r.innerHTML||r.cssText||"",i=-1===A.indexOf(e);return t+"<"+e+' data-rh="true" '+a+(i?"/>":">"+o+"</"+e+">")}),"")}(e,t,n)}}}},B=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,a=e.htmlAttributes,o=e.noscriptTags,i=e.styleTags,l=e.title,s=void 0===l?"":l,u=e.titleAttributes,c=e.linkTags,d=e.metaTags,f=e.scriptTags,p={toComponent:function(){},toString:function(){return""}};if(e.prioritizeSeoTags){var h=function(e){var t=e.linkTags,n=e.scriptTags,r=e.encode,a=N(e.metaTags,y),o=N(t,v),i=N(n,b);return{priorityMethods:{toComponent:function(){return[].concat(M(g.META,a.priority),M(g.LINK,o.priority),M(g.SCRIPT,i.priority))},toString:function(){return F(g.META,a.priority,r)+" "+F(g.LINK,o.priority,r)+" "+F(g.SCRIPT,i.priority,r)}},metaTags:a.default,linkTags:o.default,scriptTags:i.default}}(e);p=h.priorityMethods,c=h.linkTags,d=h.metaTags,f=h.scriptTags}return{priority:p,base:F(g.BASE,t,r),bodyAttributes:F("bodyAttributes",n,r),htmlAttributes:F("htmlAttributes",a,r),link:F(g.LINK,c,r),meta:F(g.META,d,r),noscript:F(g.NOSCRIPT,o,r),script:F(g.SCRIPT,f,r),style:F(g.STYLE,i,r),title:F(g.TITLE,{title:s,titleAttributes:u},r)}},z=[],$=function(e,t){var n=this;void 0===t&&(t="undefined"!=typeof document),this.instances=[],this.value={setHelmet:function(e){n.context.helmet=e},helmetInstances:{get:function(){return n.canUseDOM?z:n.instances},add:function(e){(n.canUseDOM?z:n.instances).push(e)},remove:function(e){var t=(n.canUseDOM?z:n.instances).indexOf(e);(n.canUseDOM?z:n.instances).splice(t,1)}}},this.context=e,this.canUseDOM=t,t||(e.helmet=B({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},U=r.createContext({}),H=o().shape({setHelmet:o().func,helmetInstances:o().shape({get:o().func,add:o().func,remove:o().func})}),V="undefined"!=typeof document,q=function(e){function t(n){var r;return(r=e.call(this,n)||this).helmetData=new $(r.props.context,t.canUseDOM),r}return p(t,e),t.prototype.render=function(){return r.createElement(U.Provider,{value:this.helmetData.value},this.props.children)},t}(r.Component);q.canUseDOM=V,q.propTypes={context:o().shape({helmet:o().shape()}),children:o().node.isRequired},q.defaultProps={context:{}},q.displayName="HelmetProvider";var W=function(e,t){var n,r=document.head||document.querySelector(g.HEAD),a=r.querySelectorAll(e+"[data-rh]"),o=[].slice.call(a),i=[];return t&&t.length&&t.forEach((function(t){var r=document.createElement(e);for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&("innerHTML"===a?r.innerHTML=t.innerHTML:"cssText"===a?r.styleSheet?r.styleSheet.cssText=t.cssText:r.appendChild(document.createTextNode(t.cssText)):r.setAttribute(a,void 0===t[a]?"":t[a]));r.setAttribute("data-rh","true"),o.some((function(e,t){return n=t,r.isEqualNode(e)}))?o.splice(n,1):i.push(r)})),o.forEach((function(e){return e.parentNode.removeChild(e)})),i.forEach((function(e){return r.appendChild(e)})),{oldTags:o,newTags:i}},G=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute("data-rh"),a=r?r.split(","):[],o=[].concat(a),i=Object.keys(t),l=0;l<i.length;l+=1){var s=i[l],u=t[s]||"";n.getAttribute(s)!==u&&n.setAttribute(s,u),-1===a.indexOf(s)&&a.push(s);var c=o.indexOf(s);-1!==c&&o.splice(c,1)}for(var d=o.length-1;d>=0;d-=1)n.removeAttribute(o[d]);a.length===o.length?n.removeAttribute("data-rh"):n.getAttribute("data-rh")!==i.join(",")&&n.setAttribute("data-rh",i.join(","))}},Z=function(e,t){var n=e.baseTag,r=e.htmlAttributes,a=e.linkTags,o=e.metaTags,i=e.noscriptTags,l=e.onChangeClientState,s=e.scriptTags,u=e.styleTags,c=e.title,d=e.titleAttributes;G(g.BODY,e.bodyAttributes),G(g.HTML,r),function(e,t){void 0!==e&&document.title!==e&&(document.title=P(e)),G(g.TITLE,t)}(c,d);var f={baseTag:W(g.BASE,n),linkTags:W(g.LINK,a),metaTags:W(g.META,o),noscriptTags:W(g.NOSCRIPT,i),scriptTags:W(g.SCRIPT,s),styleTags:W(g.STYLE,u)},p={},h={};Object.keys(f).forEach((function(e){var t=f[e],n=t.newTags,r=t.oldTags;n.length&&(p[e]=n),r.length&&(h[e]=f[e].oldTags)})),t&&t(),l(e,p,h)},Q=null,Y=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).rendered=!1,t}p(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!d()(e,this.props)},n.componentDidUpdate=function(){this.emitChange()},n.componentWillUnmount=function(){this.props.context.helmetInstances.remove(this),this.emitChange()},n.emitChange=function(){var e,t,n=this.props.context,r=n.setHelmet,a=null,o=(e=n.helmetInstances.get().map((function(e){var t=f({},e.props);return delete t.context,t})),{baseTag:T(["href"],e),bodyAttributes:C("bodyAttributes",e),defer:_(e,"defer"),encode:_(e,"encodeSpecialCharacters"),htmlAttributes:C("htmlAttributes",e),linkTags:O(g.LINK,["rel","href"],e),metaTags:O(g.META,["name","charset","http-equiv","property","itemprop"],e),noscriptTags:O(g.NOSCRIPT,["innerHTML"],e),onChangeClientState:S(e),scriptTags:O(g.SCRIPT,["src","innerHTML"],e),styleTags:O(g.STYLE,["cssText"],e),title:E(e),titleAttributes:C("titleAttributes",e),prioritizeSeoTags:D(e,"prioritizeSeoTags")});q.canUseDOM?(t=o,Q&&cancelAnimationFrame(Q),t.defer?Q=requestAnimationFrame((function(){Z(t,(function(){Q=null}))})):(Z(t),Q=null)):B&&(a=B(o)),r(a)},n.init=function(){this.rendered||(this.rendered=!0,this.props.context.helmetInstances.add(this),this.emitChange())},n.render=function(){return this.init(),null},t}(r.Component);Y.propTypes={context:H.isRequired},Y.displayName="HelmetDispatcher";var X=["children"],K=["children"],J=function(e){function t(){return e.apply(this,arguments)||this}p(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!l()(I(this.props,"helmetData"),I(e,"helmetData"))},n.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case g.SCRIPT:case g.NOSCRIPT:return{innerHTML:t};case g.STYLE:return{cssText:t};default:throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")}},n.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren;return f({},r,((t={})[n.type]=[].concat(r[n.type]||[],[f({},e.newChildProps,this.mapNestedChildrenToProps(n,e.nestedChildren))]),t))},n.mapObjectTypeChildren=function(e){var t,n,r=e.child,a=e.newProps,o=e.newChildProps,i=e.nestedChildren;switch(r.type){case g.TITLE:return f({},a,((t={})[r.type]=i,t.titleAttributes=f({},o),t));case g.BODY:return f({},a,{bodyAttributes:f({},o)});case g.HTML:return f({},a,{htmlAttributes:f({},o)});default:return f({},a,((n={})[r.type]=f({},o),n))}},n.mapArrayTypeChildrenToProps=function(e,t){var n=f({},t);return Object.keys(e).forEach((function(t){var r;n=f({},n,((r={})[t]=e[t],r))})),n},n.warnOnInvalidChildren=function(e,t){return u()(w.some((function(t){return e.type===t})),"function"==typeof e.type?"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.":"Only elements types "+w.join(", ")+" are allowed. Helmet does not support rendering <"+e.type+"> elements. Refer to our API for more information."),u()(!t||"string"==typeof t||Array.isArray(t)&&!t.some((function(e){return"string"!=typeof e})),"Helmet expects a string as a child of <"+e.type+">. Did you forget to wrap your children in braces? ( <"+e.type+">{``}</"+e.type+"> ) Refer to our API for more information."),!0},n.mapChildrenToProps=function(e,t){var n=this,a={};return r.Children.forEach(e,(function(e){if(e&&e.props){var r=e.props,o=r.children,i=m(r,X),l=Object.keys(i).reduce((function(e,t){return e[k[t]||t]=i[t],e}),{}),s=e.type;switch("symbol"==typeof s?s=s.toString():n.warnOnInvalidChildren(e,o),s){case g.FRAGMENT:t=n.mapChildrenToProps(o,t);break;case g.LINK:case g.META:case g.NOSCRIPT:case g.SCRIPT:case g.STYLE:a=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:a,newChildProps:l,nestedChildren:o});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:l,nestedChildren:o})}}})),this.mapArrayTypeChildrenToProps(a,t)},n.render=function(){var e=this.props,t=e.children,n=m(e,K),a=f({},n),o=n.helmetData;return t&&(a=this.mapChildrenToProps(t,a)),!o||o instanceof $||(o=new $(o.context,o.instances)),o?r.createElement(Y,f({},a,{context:o.value,helmetData:void 0})):r.createElement(U.Consumer,null,(function(e){return r.createElement(Y,f({},a,{context:e}))}))},t}(r.Component);J.propTypes={base:o().object,bodyAttributes:o().object,children:o().oneOfType([o().arrayOf(o().node),o().node]),defaultTitle:o().string,defer:o().bool,encodeSpecialCharacters:o().bool,htmlAttributes:o().object,link:o().arrayOf(o().object),meta:o().arrayOf(o().object),noscript:o().arrayOf(o().object),onChangeClientState:o().func,script:o().arrayOf(o().object),style:o().arrayOf(o().object),title:o().string,titleAttributes:o().object,titleTemplate:o().string,prioritizeSeoTags:o().bool,helmetData:o().object},J.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},J.displayName="Helmet"},69921:(e,t)=>{"use strict";var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,a=n?Symbol.for("react.portal"):60106,o=n?Symbol.for("react.fragment"):60107,i=n?Symbol.for("react.strict_mode"):60108,l=n?Symbol.for("react.profiler"):60114,s=n?Symbol.for("react.provider"):60109,u=n?Symbol.for("react.context"):60110,c=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,f=n?Symbol.for("react.forward_ref"):60112,p=n?Symbol.for("react.suspense"):60113,h=n?Symbol.for("react.suspense_list"):60120,m=n?Symbol.for("react.memo"):60115,g=n?Symbol.for("react.lazy"):60116,v=n?Symbol.for("react.block"):60121,b=n?Symbol.for("react.fundamental"):60117,y=n?Symbol.for("react.responder"):60118,w=n?Symbol.for("react.scope"):60119;function x(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case c:case d:case o:case l:case i:case p:return e;default:switch(e=e&&e.$$typeof){case u:case f:case g:case m:case s:return e;default:return t}}case a:return t}}}function k(e){return x(e)===d}t.AsyncMode=c,t.ConcurrentMode=d,t.ContextConsumer=u,t.ContextProvider=s,t.Element=r,t.ForwardRef=f,t.Fragment=o,t.Lazy=g,t.Memo=m,t.Portal=a,t.Profiler=l,t.StrictMode=i,t.Suspense=p,t.isAsyncMode=function(e){return k(e)||x(e)===c},t.isConcurrentMode=k,t.isContextConsumer=function(e){return x(e)===u},t.isContextProvider=function(e){return x(e)===s},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return x(e)===f},t.isFragment=function(e){return x(e)===o},t.isLazy=function(e){return x(e)===g},t.isMemo=function(e){return x(e)===m},t.isPortal=function(e){return x(e)===a},t.isProfiler=function(e){return x(e)===l},t.isStrictMode=function(e){return x(e)===i},t.isSuspense=function(e){return x(e)===p},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===d||e===l||e===i||e===p||e===h||"object"==typeof e&&null!==e&&(e.$$typeof===g||e.$$typeof===m||e.$$typeof===s||e.$$typeof===u||e.$$typeof===f||e.$$typeof===b||e.$$typeof===y||e.$$typeof===w||e.$$typeof===v)},t.typeOf=x},59864:(e,t,n)=>{"use strict";e.exports=n(69921)},68356:(e,t,n)=>{"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function a(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i.apply(this,arguments)}var l=n(67294),s=n(45697),u=[],c=[];function d(e){var t=e(),n={loading:!0,loaded:null,error:null};return n.promise=t.then((function(e){return n.loading=!1,n.loaded=e,e})).catch((function(e){throw n.loading=!1,n.error=e,e})),n}function f(e){var t={loading:!1,loaded:{},error:null},n=[];try{Object.keys(e).forEach((function(r){var a=d(e[r]);a.loading?t.loading=!0:(t.loaded[r]=a.loaded,t.error=a.error),n.push(a.promise),a.promise.then((function(e){t.loaded[r]=e})).catch((function(e){t.error=e}))}))}catch(r){t.error=r}return t.promise=Promise.all(n).then((function(e){return t.loading=!1,e})).catch((function(e){throw t.loading=!1,e})),t}function p(e,t){return l.createElement((n=e)&&n.__esModule?n.default:n,t);var n}function h(e,t){var d,f;if(!t.loading)throw new Error("react-loadable requires a `loading` component");var h=i({loader:null,loading:null,delay:200,timeout:null,render:p,webpack:null,modules:null},t),m=null;function g(){return m||(m=e(h.loader)),m.promise}return u.push(g),"function"==typeof h.webpack&&c.push((function(){if((0,h.webpack)().every((function(e){return void 0!==e&&void 0!==n.m[e]})))return g()})),f=d=function(t){function n(n){var r;return o(a(a(r=t.call(this,n)||this)),"retry",(function(){r.setState({error:null,loading:!0,timedOut:!1}),m=e(h.loader),r._loadModule()})),g(),r.state={error:m.error,pastDelay:!1,timedOut:!1,loading:m.loading,loaded:m.loaded},r}r(n,t),n.preload=function(){return g()};var i=n.prototype;return i.UNSAFE_componentWillMount=function(){this._loadModule()},i.componentDidMount=function(){this._mounted=!0},i._loadModule=function(){var e=this;if(this.context.loadable&&Array.isArray(h.modules)&&h.modules.forEach((function(t){e.context.loadable.report(t)})),m.loading){var t=function(t){e._mounted&&e.setState(t)};"number"==typeof h.delay&&(0===h.delay?this.setState({pastDelay:!0}):this._delay=setTimeout((function(){t({pastDelay:!0})}),h.delay)),"number"==typeof h.timeout&&(this._timeout=setTimeout((function(){t({timedOut:!0})}),h.timeout));var n=function(){t({error:m.error,loaded:m.loaded,loading:m.loading}),e._clearTimeouts()};m.promise.then((function(){return n(),null})).catch((function(e){return n(),null}))}},i.componentWillUnmount=function(){this._mounted=!1,this._clearTimeouts()},i._clearTimeouts=function(){clearTimeout(this._delay),clearTimeout(this._timeout)},i.render=function(){return this.state.loading||this.state.error?l.createElement(h.loading,{isLoading:this.state.loading,pastDelay:this.state.pastDelay,timedOut:this.state.timedOut,error:this.state.error,retry:this.retry}):this.state.loaded?h.render(this.state.loaded,this.props):null},n}(l.Component),o(d,"contextTypes",{loadable:s.shape({report:s.func.isRequired})}),f}function m(e){return h(d,e)}m.Map=function(e){if("function"!=typeof e.render)throw new Error("LoadableMap requires a `render(loaded, props)` function");return h(f,e)};var g=function(e){function t(){return e.apply(this,arguments)||this}r(t,e);var n=t.prototype;return n.getChildContext=function(){return{loadable:{report:this.props.report}}},n.render=function(){return l.Children.only(this.props.children)},t}(l.Component);function v(e){for(var t=[];e.length;){var n=e.pop();t.push(n())}return Promise.all(t).then((function(){if(e.length)return v(e)}))}o(g,"propTypes",{report:s.func.isRequired}),o(g,"childContextTypes",{loadable:s.shape({report:s.func.isRequired}).isRequired}),m.Capture=g,m.preloadAll=function(){return new Promise((function(e,t){v(u).then(e,t)}))},m.preloadReady=function(){return new Promise((function(e,t){v(c).then(e,e)}))},e.exports=m},33199:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>M,hasTranslate3DSupport:()=>h,isTouch:()=>d,make2dTransformValue:()=>f,make3dTransformValue:()=>p});var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)};function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var o=function(){return o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e},o.apply(this,arguments)};Object.create;Object.create;var i=n(67294),l="kvfysmfp",s="ufhsfnkm",u=".".concat(l,"{overflow:hidden;touch-action:none}.").concat(s,"{transform-origin: 0 0}"),c="undefined"==typeof window,d=function(){return!c&&("ontouchstart"in window||navigator.maxTouchPoints>0)},f=function(e){var t=e.x,n=e.y,r=e.scale;return"scale(".concat(r,") translate(").concat(t,"px, ").concat(n,"px)")},p=function(e){var t=e.x,n=e.y,r=e.scale;return"scale3d(".concat(r,",").concat(r,", 1) translate3d(").concat(t,"px, ").concat(n,"px, 0)")},h=function(){var e=!c&&window.CSS;return e&&e.supports&&e.supports("transform","translate3d(0,0,0)")},m=Math.min,g=Math.max;function v(e){var t=e.containerDimension,n=e.childDimension,r=e.padding,a=e.centerContained,o=n-t;return o+2*r<=0&&a?[o/2,o/2]:[m(o+r,0)-r,g(0,o+r)]}var b=function(e,t){return t?"".concat(e," ").concat(t):e},y=Math.abs,w=Math.min,x=Math.sqrt,k="undefined"==typeof window,_=!k&&/(Mac)/i.test(navigator.platform),E=function(e){return"drag"===e},S=function(e){return"zoom"===e},C=function(e){e.stopPropagation(),e.preventDefault()},T=function(e,t){var n=e.x-t.x,r=e.y-t.y;return x(n*n+r*r)},O=function(e){return-Math.cos(e*Math.PI)/2+.5},D=function(e){return{x:e.pageX,y:e.pageY}},P=function(e){return Array.from(e).map(D)},N=function(e,t){return e+t},I=function(e,t,n){return n<e?e:n>t?t:n},A=function(e){return!(e.ctrlKey||e.metaKey)},L=function(){},R={x:0,y:0},j=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._prevDragMovePoint=null,t._containerObserver=null,t._fingers=0,t._firstMove=!0,t._initialOffset=o({},R),t._interaction=null,t._isDoubleTap=!1,t._isOffsetsSet=!1,t._lastDragPosition=null,t._lastScale=1,t._lastTouchStart=0,t._lastZoomCenter=null,t._listenMouseMove=!1,t._nthZoom=0,t._offset=o({},R),t._startOffset=o({},R),t._startTouches=null,t._updatePlaned=!1,t._wheelTimeOut=null,t._zoomFactor=1,t._initialZoomFactor=1,t._draggingPoint=o({},R),t._ignoreNextClick=!1,t._containerRef=i.createRef(),t._handleClick=function(e){t._ignoreNextClick&&(t._ignoreNextClick=!1,e.stopPropagation())},t._onResize=function(){var e;(null===(e=t._containerRef)||void 0===e?void 0:e.current)&&(t._updateInitialZoomFactor(),t._setupOffsets(),t._update())},t._handlerOnTouchEnd=t._handlerIfEnable((function(e){t._fingers=e.touches.length,t.props.shouldCancelHandledTouchEndEvents&&(S(t._interaction)||E(t._interaction)&&(t._startOffset.x!==t._offset.x||t._startOffset.y!==t._offset.y))&&C(e),E(t._interaction)&&!t._enoughToDrag()&&t._handleClick(e),t._updateInteraction(e)})),t._handlerOnTouchStart=t._handlerIfEnable((function(e){t._firstMove=!0,t._fingers=e.touches.length,t._detectDoubleTap(e)})),t._handlerOnTouchMove=t._handlerIfEnable((function(e){var n,r,a;t._isDoubleTap||(t._collectInertia(e),t._firstMove?(t._updateInteraction(e),t._interaction&&C(e),t._startOffset=o({},t._offset),t._startTouches=P(e.touches)):(S(t._interaction)?t._startTouches&&2===t._startTouches.length&&2===e.touches.length&&t._handleZoom(e,(n=t._startTouches,r=P(e.touches),a=T(n[0],n[1]),T(r[0],r[1])/a)):E(t._interaction)&&t._handleDrag(e),t._interaction&&(C(e),t._update())),t._firstMove=!1)})),t._handlerWheel=function(e){if(!t.props.shouldInterceptWheel(e)){C(e);var n=e.pageX,r=e.pageY,a=e.deltaY,o=e.deltaMode,i=1;(function(e){return _&&e.ctrlKey}(e)||1===o)&&(i=15);var l={touches:[{pageX:n,pageY:r}]},s=t._getOffsetByFirstTouch(l),u=a*i;t._stopAnimation(),t._scaleTo(t._zoomFactor-u/t.props.wheelScaleFactor,s),t._update(),clearTimeout(t._wheelTimeOut),t._wheelTimeOut=setTimeout((function(){return t._sanitize()}),100)}},t._handlers=t.props.isTouch()?[["touchstart",t._handlerOnTouchStart],["touchend",t._handlerOnTouchEnd],["touchmove",t._handlerOnTouchMove]]:[["mousemove",t.simulate(t._handlerOnTouchMove),t.props._document],["mouseup",t.simulate(t._handlerOnTouchEnd),t.props._document],["mousedown",t.simulate(t._handlerOnTouchStart)],["click",t._handleClick],["wheel",t._handlerWheel]],t}return a(t,e),t.prototype._handleDragStart=function(e){this._ignoreNextClick=!0,this.props.onDragStart(),this._stopAnimation(),this._resetInertia(),this._lastDragPosition=null,this._hasInteraction=!0,this._draggingPoint=this._offset,this._handleDrag(e)},t.prototype._handleDrag=function(e){var t=this._getOffsetByFirstTouch(e);this._enoughToDrag()?this._drag(t,this._lastDragPosition):this._virtualDrag(t,this._lastDragPosition),this._offset=this._sanitizeOffset(this._offset),this._lastDragPosition=t},t.prototype._resetInertia=function(){this._velocity=null,this._prevDragMovePoint=null},t.prototype._realizeInertia=function(){var e=this,t=this.props,n=t.inertiaFriction;if(t.inertia&&this._velocity){var r=this._velocity,a=r.x,i=r.y;if(a||i){this._stopAnimation(),this._resetInertia();this._animate((function(){if(i*=n,!(a*=n)&&!i)return e._stopAnimation();var t,r,l=o({},e._offset);if(e._addOffset({x:a,y:i}),e._offset=e._sanitizeOffset(e._offset),t=l,r=e._offset,t.x===r.x&&t.y===r.y)return e._stopAnimation();e._update({isAnimation:!0})}),{duration:9999})}}},t.prototype._collectInertia=function(e){var t=e.touches;if(this.props.inertia){var n,r,a=P(t)[0],o=this._prevDragMovePoint;o&&(this._velocity=(n=a,{x:(r=o).x-n.x,y:r.y-n.y})),this._prevDragMovePoint=a}},t.prototype._handleDragEnd=function(){this.props.onDragEnd(),this._end(),this._realizeInertia()},t.prototype._handleZoomStart=function(){this.props.onZoomStart(),this._stopAnimation(),this._lastScale=1,this._nthZoom=0,this._lastZoomCenter=null,this._hasInteraction=!0},t.prototype._handleZoom=function(e,t){var n,r={x:(n=this._getOffsetTouches(e)).map((function(e){return e.x})).reduce(N,0)/n.length,y:n.map((function(e){return e.y})).reduce(N,0)/n.length},a=t/this._lastScale;this._lastScale=t,this._nthZoom+=1,this._nthZoom>3&&(this._scale(a,r),this._drag(r,this._lastZoomCenter),this.props.enforceBoundsDuringZoom&&(this._offset=this._sanitizeOffset(this._offset))),this._lastZoomCenter=r},t.prototype._handleZoomEnd=function(){this.props.onZoomEnd(),this._end()},t.prototype._handleDoubleTap=function(e){var t=this;if(!this._hasInteraction&&0!==this.props.tapZoomFactor){var n=this.props.doubleTapZoomOutOnMaxScale&&this._zoomFactor===this.props.maxZoom||this.props.doubleTapToggleZoom&&this._zoomFactor>1;this.props.onDoubleTap(),this._ignoreNextClick=!0;var r=this._zoomFactor+this.props.tapZoomFactor,a=this._zoomFactor,o=this._getOffsetByFirstTouch(e);this._isDoubleTap=!0,a>r&&(o=this._getCurrentZoomCenter()),n?this._zoomOutAnimation():this._animate((function(e){t._scaleTo(a+e*(r-a),o)}))}},t.prototype._computeInitialOffset=function(){var e=this._getContainerRect(),t=this._getChildSize(),n=t.width,r=t.height,a=-y(n*this._getInitialZoomFactor()-e.width)/2,o=-y(r*this._getInitialZoomFactor()-e.height)/2;this._initialOffset={x:a,y:o}},t.prototype._resetOffset=function(){this._offset=o({},this._initialOffset)},t.prototype._setupOffsets=function(){this.props.setOffsetsOnce&&this._isOffsetsSet||(this._isOffsetsSet=!0,this._computeInitialOffset(),this._resetOffset())},t.prototype._sanitizeOffset=function(e){var t=this._getContainerRect(),n=this._getChildSize(),r=n.width,a=n.height,o=r*this._getInitialZoomFactor()*this._zoomFactor,i=a*this._getInitialZoomFactor()*this._zoomFactor,l=v({containerDimension:t.width,childDimension:o,padding:this.props.horizontalPadding,centerContained:this.props.centerContained}),s=l[0],u=l[1],c=v({containerDimension:t.height,childDimension:i,padding:this.props.verticalPadding,centerContained:this.props.centerContained}),d=c[0],f=c[1];return{x:I(s,u,e.x),y:I(d,f,e.y)}},t.prototype.alignCenter=function(e){var t=this,n=o({duration:250,animated:!0},e),r=n.x,a=n.y,i=n.scale,l=n.animated,s=n.duration,u=this._zoomFactor,c=o({},this._offset),d=this._getContainerRect(),f={x:d.width/2,y:d.height/2};if(this._zoomFactor=1,this._offset={x:-(f.x-r),y:-(f.y-a)},this._scaleTo(i,f),this._stopAnimation(),!l)return this._update();var p=this._zoomFactor-u,h=this._offset.x-c.x,m=this._offset.y-c.y;this._zoomFactor=u,this._offset=o({},c);this._animate((function(e){var n=c.x+h*e,r=c.y+m*e;t._zoomFactor=u+p*e,t._offset=t._sanitizeOffset({x:n,y:r}),t._update()}),{callback:function(){return t._sanitize()},duration:s})},t.prototype.scaleTo=function(e){var t=this,n=o({duration:250,animated:!0},e),r=n.x,a=n.y,i=n.scale,l=n.animated,s=n.duration,u=this._zoomFactor,c=o({},this._offset);if(this._zoomFactor=1,this._offset={x:0,y:0},this._scaleTo(i,{x:r,y:a}),this._stopAnimation(),!l)return this._update();var d=this._zoomFactor-u,f=this._offset.x-c.x,p=this._offset.y-c.y;this._zoomFactor=u,this._offset=o({},c);this._animate((function(e){var n=c.x+f*e,r=c.y+p*e;t._zoomFactor=u+d*e,t._offset={x:n,y:r},t._update()}),{callback:function(){return t._sanitize()},duration:s})},t.prototype._scaleTo=function(e,t){this._scale(e/this._zoomFactor,t),this._offset=this._sanitizeOffset(this._offset)},t.prototype._scale=function(e,t){e=this._scaleZoomFactor(e),this._addOffset({x:(e-1)*(t.x+this._offset.x),y:(e-1)*(t.y+this._offset.y)}),this.props.onZoomUpdate()},t.prototype._scaleZoomFactor=function(e){var t=this._zoomFactor;return this._zoomFactor*=e,this._zoomFactor=I(this.props.minZoom,this.props.maxZoom,this._zoomFactor),this._zoomFactor/t},t.prototype._canDrag=function(){return this.props.draggableUnZoomed||!((e=this._zoomFactor)>(t=1)-.01&&e<t+.01);var e,t},t.prototype._drag=function(e,t){if(t){var n=-(e.y-t.y),r=-(e.x-t.x);this.props.lockDragAxis?y(r)>y(n)?this._addOffset({x:r,y:0}):this._addOffset({y:n,x:0}):this._addOffset({x:r,y:n}),this.props.onDragUpdate()}},t.prototype._virtualDrag=function(e,t){if(t){var n=-(e.y-t.y),r=-(e.x-t.x);this._draggingPoint={x:r+this._draggingPoint.x,y:n+this._draggingPoint.y}}},t.prototype._addOffset=function(e){var t=this._offset,n=t.x,r=t.y;this._offset={x:n+e.x,y:r+e.y}},t.prototype._sanitize=function(){this._zoomFactor<this.props.zoomOutFactor?(this._resetInertia(),this._zoomOutAnimation()):this._isInsaneOffset()&&this._sanitizeOffsetAnimation()},t.prototype._isInsaneOffset=function(){var e=this._offset,t=this._sanitizeOffset(e);return t.x!==e.x||t.y!==e.y},t.prototype._sanitizeOffsetAnimation=function(){var e=this,t=this._sanitizeOffset(this._offset),n=o({},this._offset);this._animate((function(r){var a=n.x+r*(t.x-n.x),o=n.y+r*(t.y-n.y);e._offset={x:a,y:o},e._update()}))},t.prototype._zoomOutAnimation=function(){var e=this;if(1!==this._zoomFactor){var t=this._zoomFactor,n=this._getCurrentZoomCenter();this._animate((function(r){var a=t+r*(1-t);e._scaleTo(a,n)}))}},t.prototype._getInitialZoomFactor=function(){return this._initialZoomFactor},t.prototype._getCurrentZoomCenter=function(){var e=this._offset,t=e.x,n=e.y,r=t-this._initialOffset.x,a=n-this._initialOffset.y;return{x:-1*t-r/(1/this._zoomFactor-1),y:-1*n-a/(1/this._zoomFactor-1)}},t.prototype._getOffsetByFirstTouch=function(e){return this._getOffsetTouches(e)[0]},t.prototype._getOffsetTouches=function(e){var t=this.props._document,n=t.documentElement,r=t.body,a=this._getContainerRect(),o=a.top,i=a.left,l=n.scrollTop||r.scrollTop,s=n.scrollLeft||r.scrollLeft,u=o+l,c=i+s;return P(e.touches).map((function(e){var t=e.x,n=e.y;return{x:t-c,y:n-u}}))},t.prototype._animate=function(e,t){var n=this,r=(new Date).getTime(),a=o({timeFn:O,callback:function(){},duration:this.props.animationDuration},t),i=a.timeFn,l=a.callback,s=a.duration,u=function(){if(n._inAnimation){var t=(new Date).getTime()-r,a=t/s;t>=s?(e(1),n._stopAnimation(),l(),n._update()):(a=i(a),e(a),n._update({isAnimation:!0}),requestAnimationFrame(u))}};this._inAnimation=!0,requestAnimationFrame(u)},t.prototype._stopAnimation=function(){this._inAnimation=!1},t.prototype._end=function(){this._hasInteraction=!1,this._sanitize(),this._update()},t.prototype._getContainerRect=function(){return this._containerRef.current.getBoundingClientRect()},t.prototype._getChildSize=function(){var e=this._containerRef.current;return function(e){if(e){var t=e.offsetWidth,n=e.offsetHeight;if(t&&n)return{width:t,height:n};var r=getComputedStyle(e),a=parseFloat(r.width),o=parseFloat(r.height);if(o&&a)return{width:a,height:o}}return{width:0,height:0}}(null==e?void 0:e.firstElementChild)},t.prototype._updateInitialZoomFactor=function(){var e=this._getContainerRect(),t=this._getChildSize(),n=e.width/t.width,r=e.height/t.height;this._initialZoomFactor=w(n,r)},t.prototype._bindEvents=function(){var e=this,t=this._containerRef.current;window.ResizeObserver?(this._containerObserver=new ResizeObserver(this._onResize),this._containerObserver.observe(t)):window.addEventListener("resize",this._onResize),this._handlers.forEach((function(e){var n=e[0],r=e[1];(e[2]||t).addEventListener(n,r,!0)})),Array.from(t.querySelectorAll("img")).forEach((function(t){return t.addEventListener("load",e._onResize)}))},t.prototype._unSubscribe=function(){var e=this,t=this._containerRef.current;this._containerObserver&&(this._containerObserver.disconnect(),this._containerObserver=null),window.removeEventListener("resize",this._onResize),this._handlers.forEach((function(e){var n=e[0],r=e[1];(e[2]||t).removeEventListener(n,r,!0)})),Array.from(t.querySelectorAll("img")).forEach((function(t){return t.removeEventListener("load",e._onResize)}))},t.prototype._update=function(e){var t=this;if(!this._updatePlaned){var n=function(){var e=t._getInitialZoomFactor()*t._zoomFactor,n=-t._offset.x/e,r=-t._offset.y/e;t.props.onUpdate({scale:e,x:n,y:r})};if(null==e?void 0:e.isAnimation)return n();this._updatePlaned=!0,requestAnimationFrame((function(){t._updatePlaned=!1,n()}))}},t.prototype._handlerIfEnable=function(e){var t=this;return function(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];t.props.enabled&&e.apply(void 0,n)}},t.prototype._setInteraction=function(e,t){var n=this._interaction;n!==e&&(n&&!e&&(S(n)?this._handleZoomEnd():E(n)&&this._handleDragEnd()),S(e)?this._handleZoomStart():E(e)&&this._handleDragStart(t)),this._interaction=e},t.prototype._distanceBetweenNumbers=function(e,t){return e>t?e-t:t-e},t.prototype._enoughToDrag=function(){return this._distanceBetweenNumbers(this._startOffset.x,this._draggingPoint.x)>5||this._distanceBetweenNumbers(this._startOffset.y,this._draggingPoint.y)>5},t.prototype._updateInteraction=function(e){var t=this._fingers;return 2===t?this._setInteraction("zoom",e):1===t&&this._canDrag()?this._setInteraction("drag",e):void this._setInteraction(null,e)},t.prototype._detectDoubleTap=function(e){var t=(new Date).getTime();this._fingers>1&&(this._lastTouchStart=0),t-this._lastTouchStart<300?(C(e),this._handleDoubleTap(e),S(this._interaction)?this._handleZoomEnd():E(this._interaction)&&this._handleDragEnd()):this._isDoubleTap=!1,1===this._fingers&&(this._lastTouchStart=t)},t.prototype.simulate=function(e){var t=this;return function(n){var r=n.pageX,a=n.pageY,o=n.type,i="mouseup"===o;"mousedown"===o&&(n.preventDefault(),t._listenMouseMove=!0),t._listenMouseMove&&(n.touches=i?[]:[{pageX:r,pageY:a}],e(n)),i&&(t._listenMouseMove=!1)}},t.prototype.componentDidMount=function(){this._bindEvents(),this._update()},t.prototype.componentWillUnmount=function(){this._stopAnimation(),this._unSubscribe()},t.prototype.render=function(){var e=this.props,t=e.children,n=e.containerProps,r=i.Children.only(t),a=n||{};return i.createElement(i.Fragment,null,i.createElement("style",null,u),i.createElement("div",o({},a,{ref:this._containerRef,className:b(l,a.className)}),i.cloneElement(r,{className:b(s,r.props.className)})))},t.defaultProps={animationDuration:250,draggableUnZoomed:!0,enforceBoundsDuringZoom:!1,centerContained:!1,enabled:!0,inertia:!0,inertiaFriction:.96,horizontalPadding:0,isTouch:d,lockDragAxis:!1,maxZoom:5,minZoom:.5,onDoubleTap:L,onDragEnd:L,onDragStart:L,onDragUpdate:L,onZoomEnd:L,onZoomStart:L,onZoomUpdate:L,setOffsetsOnce:!1,shouldInterceptWheel:A,shouldCancelHandledTouchEndEvents:!1,tapZoomFactor:1,verticalPadding:0,wheelScaleFactor:1500,zoomOutFactor:1.3,doubleTapZoomOutOnMaxScale:!1,doubleTapToggleZoom:!1,_document:k?null:window.document},t}(i.Component);const M=j},18790:(e,t,n)=>{"use strict";n.d(t,{H:()=>l,f:()=>i});var r=n(16550),a=n(87462),o=n(67294);function i(e,t,n){return void 0===n&&(n=[]),e.some((function(e){var a=e.path?(0,r.LX)(t,e):n.length?n[n.length-1].match:r.F0.computeRootMatch(t);return a&&(n.push({route:e,match:a}),e.routes&&i(e.routes,t,n)),a})),n}function l(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e?o.createElement(r.rs,n,e.map((function(e,n){return o.createElement(r.AW,{key:e.key||n,path:e.path,exact:e.exact,strict:e.strict,render:function(n){return e.render?e.render((0,a.Z)({},n,{},t,{route:e})):o.createElement(e.component,(0,a.Z)({},n,t,{route:e}))}})}))):null}},73727:(e,t,n)=>{"use strict";n.d(t,{OL:()=>y,VK:()=>c,rU:()=>g});var r=n(16550),a=n(75068),o=n(67294),i=n(42358),l=n(87462),s=n(63366),u=n(38776),c=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).history=(0,i.lX)(t.props),t}return(0,a.Z)(t,e),t.prototype.render=function(){return o.createElement(r.F0,{history:this.history,children:this.props.children})},t}(o.Component);o.Component;var d=function(e,t){return"function"==typeof e?e(t):e},f=function(e,t){return"string"==typeof e?(0,i.ob)(e,null,null,t):e},p=function(e){return e},h=o.forwardRef;void 0===h&&(h=p);var m=h((function(e,t){var n=e.innerRef,r=e.navigate,a=e.onClick,i=(0,s.Z)(e,["innerRef","navigate","onClick"]),u=i.target,c=(0,l.Z)({},i,{onClick:function(e){try{a&&a(e)}catch(t){throw e.preventDefault(),t}e.defaultPrevented||0!==e.button||u&&"_self"!==u||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)||(e.preventDefault(),r())}});return c.ref=p!==h&&t||n,o.createElement("a",c)}));var g=h((function(e,t){var n=e.component,a=void 0===n?m:n,c=e.replace,g=e.to,v=e.innerRef,b=(0,s.Z)(e,["component","replace","to","innerRef"]);return o.createElement(r.s6.Consumer,null,(function(e){e||(0,u.Z)(!1);var n=e.history,r=f(d(g,e.location),e.location),s=r?n.createHref(r):"",m=(0,l.Z)({},b,{href:s,navigate:function(){var t=d(g,e.location),r=(0,i.Ep)(e.location)===(0,i.Ep)(f(t));(c||r?n.replace:n.push)(t)}});return p!==h?m.ref=t||v:m.innerRef=v,o.createElement(a,m)}))})),v=function(e){return e},b=o.forwardRef;void 0===b&&(b=v);var y=b((function(e,t){var n=e["aria-current"],a=void 0===n?"page":n,i=e.activeClassName,c=void 0===i?"active":i,p=e.activeStyle,h=e.className,m=e.exact,y=e.isActive,w=e.location,x=e.sensitive,k=e.strict,_=e.style,E=e.to,S=e.innerRef,C=(0,s.Z)(e,["aria-current","activeClassName","activeStyle","className","exact","isActive","location","sensitive","strict","style","to","innerRef"]);return o.createElement(r.s6.Consumer,null,(function(e){e||(0,u.Z)(!1);var n=w||e.location,i=f(d(E,n),n),s=i.pathname,T=s&&s.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),O=T?(0,r.LX)(n.pathname,{path:T,exact:m,sensitive:x,strict:k}):null,D=!!(y?y(O,n):O),P="function"==typeof h?h(D):h,N="function"==typeof _?_(D):_;D&&(P=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter((function(e){return e})).join(" ")}(P,c),N=(0,l.Z)({},N,p));var I=(0,l.Z)({"aria-current":D&&a||null,className:P,style:N,to:i},C);return v!==b?I.ref=t||S:I.innerRef=S,o.createElement(g,I)}))}))},16550:(e,t,n)=>{"use strict";n.d(t,{AW:()=>P,F0:()=>y,LX:()=>D,TH:()=>B,k6:()=>F,l_:()=>S,rs:()=>j,s6:()=>b});var r=n(75068),a=n(67294),o=n(45697),i=n.n(o),l=n(42358),s=n(38776),u=n(87462),c=n(39658),d=n.n(c),f=(n(59864),n(63366)),p=(n(8679),1073741823),h="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:{};var m=a.createContext||function(e,t){var n,o,l="__create-react-context-"+function(){var e="__global_unique_id__";return h[e]=(h[e]||0)+1}()+"__",s=function(e){function n(){for(var t,n,r,a=arguments.length,o=new Array(a),i=0;i<a;i++)o[i]=arguments[i];return(t=e.call.apply(e,[this].concat(o))||this).emitter=(n=t.props.value,r=[],{on:function(e){r.push(e)},off:function(e){r=r.filter((function(t){return t!==e}))},get:function(){return n},set:function(e,t){n=e,r.forEach((function(e){return e(n,t)}))}}),t}(0,r.Z)(n,e);var a=n.prototype;return a.getChildContext=function(){var e;return(e={})[l]=this.emitter,e},a.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var n,r=this.props.value,a=e.value;((o=r)===(i=a)?0!==o||1/o==1/i:o!=o&&i!=i)?n=0:(n="function"==typeof t?t(r,a):p,0!==(n|=0)&&this.emitter.set(e.value,n))}var o,i},a.render=function(){return this.props.children},n}(a.Component);s.childContextTypes=((n={})[l]=i().object.isRequired,n);var u=function(t){function n(){for(var e,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(e=t.call.apply(t,[this].concat(r))||this).observedBits=void 0,e.state={value:e.getValue()},e.onUpdate=function(t,n){0!=((0|e.observedBits)&n)&&e.setState({value:e.getValue()})},e}(0,r.Z)(n,t);var a=n.prototype;return a.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=null==t?p:t},a.componentDidMount=function(){this.context[l]&&this.context[l].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?p:e},a.componentWillUnmount=function(){this.context[l]&&this.context[l].off(this.onUpdate)},a.getValue=function(){return this.context[l]?this.context[l].get():e},a.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(a.Component);return u.contextTypes=((o={})[l]=i().object,o),{Provider:s,Consumer:u}},g=function(e){var t=m();return t.displayName=e,t},v=g("Router-History"),b=g("Router"),y=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={location:t.history.location},n._isMounted=!1,n._pendingLocation=null,t.staticContext||(n.unlisten=t.history.listen((function(e){n._pendingLocation=e}))),n}(0,r.Z)(t,e),t.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var n=t.prototype;return n.componentDidMount=function(){var e=this;this._isMounted=!0,this.unlisten&&this.unlisten(),this.props.staticContext||(this.unlisten=this.props.history.listen((function(t){e._isMounted&&e.setState({location:t})}))),this._pendingLocation&&this.setState({location:this._pendingLocation})},n.componentWillUnmount=function(){this.unlisten&&(this.unlisten(),this._isMounted=!1,this._pendingLocation=null)},n.render=function(){return a.createElement(b.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},a.createElement(v.Provider,{children:this.props.children||null,value:this.props.history}))},t}(a.Component);a.Component;var w=function(e){function t(){return e.apply(this,arguments)||this}(0,r.Z)(t,e);var n=t.prototype;return n.componentDidMount=function(){this.props.onMount&&this.props.onMount.call(this,this)},n.componentDidUpdate=function(e){this.props.onUpdate&&this.props.onUpdate.call(this,this,e)},n.componentWillUnmount=function(){this.props.onUnmount&&this.props.onUnmount.call(this,this)},n.render=function(){return null},t}(a.Component);var x={},k=1e4,_=0;function E(e,t){return void 0===e&&(e="/"),void 0===t&&(t={}),"/"===e?e:function(e){if(x[e])return x[e];var t=d().compile(e);return _<k&&(x[e]=t,_++),t}(e)(t,{pretty:!0})}function S(e){var t=e.computedMatch,n=e.to,r=e.push,o=void 0!==r&&r;return a.createElement(b.Consumer,null,(function(e){e||(0,s.Z)(!1);var r=e.history,i=e.staticContext,c=o?r.push:r.replace,d=(0,l.ob)(t?"string"==typeof n?E(n,t.params):(0,u.Z)({},n,{pathname:E(n.pathname,t.params)}):n);return i?(c(d),null):a.createElement(w,{onMount:function(){c(d)},onUpdate:function(e,t){var n=(0,l.ob)(t.to);(0,l.Hp)(n,(0,u.Z)({},d,{key:n.key}))||c(d)},to:n})}))}var C={},T=1e4,O=0;function D(e,t){void 0===t&&(t={}),("string"==typeof t||Array.isArray(t))&&(t={path:t});var n=t,r=n.path,a=n.exact,o=void 0!==a&&a,i=n.strict,l=void 0!==i&&i,s=n.sensitive,u=void 0!==s&&s;return[].concat(r).reduce((function(t,n){if(!n&&""!==n)return null;if(t)return t;var r=function(e,t){var n=""+t.end+t.strict+t.sensitive,r=C[n]||(C[n]={});if(r[e])return r[e];var a=[],o={regexp:d()(e,a,t),keys:a};return O<T&&(r[e]=o,O++),o}(n,{end:o,strict:l,sensitive:u}),a=r.regexp,i=r.keys,s=a.exec(e);if(!s)return null;var c=s[0],f=s.slice(1),p=e===c;return o&&!p?null:{path:n,url:"/"===n&&""===c?"/":c,isExact:p,params:i.reduce((function(e,t,n){return e[t.name]=f[n],e}),{})}}),null)}var P=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return a.createElement(b.Consumer,null,(function(t){t||(0,s.Z)(!1);var n=e.props.location||t.location,r=e.props.computedMatch?e.props.computedMatch:e.props.path?D(n.pathname,e.props):t.match,o=(0,u.Z)({},t,{location:n,match:r}),i=e.props,l=i.children,c=i.component,d=i.render;return Array.isArray(l)&&function(e){return 0===a.Children.count(e)}(l)&&(l=null),a.createElement(b.Provider,{value:o},o.match?l?"function"==typeof l?l(o):l:c?a.createElement(c,o):d?d(o):null:"function"==typeof l?l(o):null)}))},t}(a.Component);function N(e){return"/"===e.charAt(0)?e:"/"+e}function I(e,t){if(!e)return t;var n=N(e);return 0!==t.pathname.indexOf(n)?t:(0,u.Z)({},t,{pathname:t.pathname.substr(n.length)})}function A(e){return"string"==typeof e?e:(0,l.Ep)(e)}function L(e){return function(){(0,s.Z)(!1)}}function R(){}a.Component;var j=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return a.createElement(b.Consumer,null,(function(t){t||(0,s.Z)(!1);var n,r,o=e.props.location||t.location;return a.Children.forEach(e.props.children,(function(e){if(null==r&&a.isValidElement(e)){n=e;var i=e.props.path||e.props.from;r=i?D(o.pathname,(0,u.Z)({},e.props,{path:i})):t.match}})),r?a.cloneElement(n,{location:o,computedMatch:r}):null}))},t}(a.Component);var M=a.useContext;function F(){return M(v)}function B(){return M(b).location}},39658:(e,t,n)=>{var r=n(5826);e.exports=p,e.exports.parse=o,e.exports.compile=function(e,t){return l(o(e,t),t)},e.exports.tokensToFunction=l,e.exports.tokensToRegExp=f;var a=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function o(e,t){for(var n,r=[],o=0,i=0,l="",c=t&&t.delimiter||"/";null!=(n=a.exec(e));){var d=n[0],f=n[1],p=n.index;if(l+=e.slice(i,p),i=p+d.length,f)l+=f[1];else{var h=e[i],m=n[2],g=n[3],v=n[4],b=n[5],y=n[6],w=n[7];l&&(r.push(l),l="");var x=null!=m&&null!=h&&h!==m,k="+"===y||"*"===y,_="?"===y||"*"===y,E=n[2]||c,S=v||b;r.push({name:g||o++,prefix:m||"",delimiter:E,optional:_,repeat:k,partial:x,asterisk:!!w,pattern:S?u(S):w?".*":"[^"+s(E)+"]+?"})}}return i<e.length&&(l+=e.substr(i)),l&&r.push(l),r}function i(e){return encodeURI(e).replace(/[\/?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function l(e,t){for(var n=new Array(e.length),a=0;a<e.length;a++)"object"==typeof e[a]&&(n[a]=new RegExp("^(?:"+e[a].pattern+")$",d(t)));return function(t,a){for(var o="",l=t||{},s=(a||{}).pretty?i:encodeURIComponent,u=0;u<e.length;u++){var c=e[u];if("string"!=typeof c){var d,f=l[c.name];if(null==f){if(c.optional){c.partial&&(o+=c.prefix);continue}throw new TypeError('Expected "'+c.name+'" to be defined')}if(r(f)){if(!c.repeat)throw new TypeError('Expected "'+c.name+'" to not repeat, but received `'+JSON.stringify(f)+"`");if(0===f.length){if(c.optional)continue;throw new TypeError('Expected "'+c.name+'" to not be empty')}for(var p=0;p<f.length;p++){if(d=s(f[p]),!n[u].test(d))throw new TypeError('Expected all "'+c.name+'" to match "'+c.pattern+'", but received `'+JSON.stringify(d)+"`");o+=(0===p?c.prefix:c.delimiter)+d}}else{if(d=c.asterisk?encodeURI(f).replace(/[?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})):s(f),!n[u].test(d))throw new TypeError('Expected "'+c.name+'" to match "'+c.pattern+'", but received "'+d+'"');o+=c.prefix+d}}else o+=c}return o}}function s(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function u(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function c(e,t){return e.keys=t,e}function d(e){return e&&e.sensitive?"":"i"}function f(e,t,n){r(t)||(n=t||n,t=[]);for(var a=(n=n||{}).strict,o=!1!==n.end,i="",l=0;l<e.length;l++){var u=e[l];if("string"==typeof u)i+=s(u);else{var f=s(u.prefix),p="(?:"+u.pattern+")";t.push(u),u.repeat&&(p+="(?:"+f+p+")*"),i+=p=u.optional?u.partial?f+"("+p+")?":"(?:"+f+"("+p+"))?":f+"("+p+")"}}var h=s(n.delimiter||"/"),m=i.slice(-h.length)===h;return a||(i=(m?i.slice(0,-h.length):i)+"(?:"+h+"(?=$))?"),i+=o?"$":a&&m?"":"(?="+h+"|$)",c(new RegExp("^"+i,d(n)),t)}function p(e,t,n){return r(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?function(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var r=0;r<n.length;r++)t.push({name:r,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return c(e,t)}(e,t):r(e)?function(e,t,n){for(var r=[],a=0;a<e.length;a++)r.push(p(e[a],t,n).source);return c(new RegExp("(?:"+r.join("|")+")",d(n)),t)}(e,t,n):function(e,t,n){return f(o(e,n),t,n)}(e,t,n)}},86718:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(70655).__importDefault(n(45503));t.default=function(e){return!e.prototype?r.default(e):e}},27162:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.divWrapper=void 0;var r=n(70655),a=r.__importStar(n(67294)),o=r.__importDefault(n(86718)),i=a.createElement,l=function(e,t,n,a){var o;return i(e,t?r.__assign(((o={})[t]=a,o),n):r.__assign(r.__assign({},a),n))};t.divWrapper=function(e,t,n,r){return i("div",null,l(e,t,n,r))};t.default=function(e,t,n){void 0===n&&(n=l);var r=function(a,l,s){void 0===l&&(l=t),void 0===s&&(s=null);var u="string"==typeof a;if(u)return function(e){return r(e,a||t,l)};var c=function(t){return i(e,s,(function(e){return n(a,l,t,e)}))};return u?o.default(c):c};return r}},3:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(70655).__importDefault(n(95364)),a=function(e){return[e]};t.default=function(e,t){return void 0===t&&(t=a),function(n){return r.default(n,e.apply(void 0,t(n)))}}},96260:(e,t,n)=>{"use strict";var r=n(70655);r.__importDefault(n(95364)).default,r.__importDefault(n(27162)).default,r.__importDefault(n(3)).default},95364:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(70655),a=n(67294),o=parseInt(a.version.substr(0,a.version.indexOf(".")))>15;t.default=function(e,t){for(var n=[],i=2;i<arguments.length;i++)n[i-2]=arguments[i];var l=e.render,s=e.children,u=void 0===s?l:s,c=e.component,d=e.comp,f=void 0===d?c:d;return"function"==typeof u?u.apply(void 0,r.__spreadArrays([t],n)):f?a.createElement(f,t):u instanceof Array?o?u:a.createElement.apply(void 0,r.__spreadArrays(["div",null],u)):u&&u instanceof Object?"string"==typeof u.type?u:a.cloneElement(u,Object.assign({},u.props,t)):u||null}},45503:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(70655),a=r.__importStar(n(67294));t.default=function(e){var t=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(n,t),n.prototype.render=function(){return e(this.props,this.context)},n}(a.Component);return t}},89164:(e,t,n)=>{"use strict";n.r(t),n.d(t,{createBreakpoint:()=>Ae,createGlobalState:()=>xn,createMemo:()=>o,createReducer:()=>u,createReducerContext:()=>i,createStateContext:()=>c,ensuredForwardRef:()=>ue,useAsync:()=>h,useAsyncFn:()=>p,useAsyncRetry:()=>m,useAudio:()=>y,useBattery:()=>O,useBeforeUnload:()=>D,useBoolean:()=>I,useClickAway:()=>L,useCookie:()=>M,useCopyToClipboard:()=>z,useCounter:()=>q,useCss:()=>J,useCustomCompareEffect:()=>ee,useDebounce:()=>ne,useDeepCompareEffect:()=>re,useDefault:()=>ae,useDrop:()=>oe,useDropArea:()=>ie,useEffectOnce:()=>le,useEnsuredForwardedRef:()=>se,useError:()=>he,useEvent:()=>pe,useFavicon:()=>me,useFirstMountState:()=>l,useFullscreen:()=>be,useGeolocation:()=>ye,useGetSet:()=>V,useGetSetState:()=>we,useHarmonicIntervalFn:()=>_e,useHash:()=>kn,useHover:()=>Se,useHoverDirty:()=>Ce,useIdle:()=>De,useIntersection:()=>Pe,useInterval:()=>Ne,useIsomorphicLayoutEffect:()=>Y,useKey:()=>Ie,useKeyPress:()=>Le,useKeyPressEvent:()=>Re,useLatest:()=>je,useLifecycles:()=>Me,useList:()=>Fe,useLocalStorage:()=>Be,useLocation:()=>He,useLockBodyScroll:()=>Ye,useLogger:()=>Xe,useLongPress:()=>Je,useMap:()=>et,useMeasure:()=>gn,useMedia:()=>tt,useMediaDevices:()=>nt,useMediatedState:()=>rt,useMethods:()=>at,useMotion:()=>it,useMount:()=>lt,useMountedState:()=>f,useMouse:()=>ct,useMouseHovered:()=>ft,useMouseWheel:()=>pt,useMultiStateValidator:()=>fn,useNetworkState:()=>vt,useNumber:()=>bt,useObservable:()=>yt,useOrientation:()=>xt,usePageLeave:()=>kt,usePermission:()=>_t,usePinchZoom:()=>bn,usePrevious:()=>Et,usePreviousDistinct:()=>Ct,usePromise:()=>Tt,useQueue:()=>Ot,useRaf:()=>Dt,useRafLoop:()=>Pt,useRafState:()=>ut,useRendersCount:()=>yn,useScratch:()=>Lt,useScroll:()=>Rt,useScrollbarWidth:()=>dn,useScrolling:()=>jt,useSearchParam:()=>It,useSessionStorage:()=>Mt,useSet:()=>wn,useSetState:()=>g,useShallowCompareEffect:()=>zt,useSize:()=>Vt,useSlider:()=>qt,useSpeech:()=>Gt,useStartTyping:()=>Zt,useStateList:()=>Yt,useStateValidator:()=>un,useStateWithHistory:()=>Qt,useThrottle:()=>Xt,useThrottleFn:()=>Kt,useTimeout:()=>Jt,useTimeoutFn:()=>te,useTitle:()=>tn,useToggle:()=>N,useTween:()=>rn,useUnmount:()=>st,useUnmountPromise:()=>an,useUpdate:()=>U,useUpdateEffect:()=>s,useUpsert:()=>on,useVibrate:()=>ln,useVideo:()=>sn,useWindowScroll:()=>pn,useWindowSize:()=>hn});var r=n(67294),a=n.t(r,2);const o=function(e){return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return(0,r.useMemo)((function(){return e.apply(void 0,t)}),t)}};const i=function(e,t){var n=(0,r.createContext)(void 0);return[function(){var e=(0,r.useContext)(n);if(null==e)throw new Error("useReducerContext must be used inside a ReducerProvider.");return e},function(a){var o=a.children,i=a.initialState;return function(e,t){return(0,r.createElement)(n.Provider,e,t)}({value:(0,r.useReducer)(e,void 0!==i?i:t)},o)},n]};function l(){var e=(0,r.useRef)(!0);return e.current?(e.current=!1,!0):e.current}const s=function(e,t){var n=l();(0,r.useEffect)((function(){if(!n)return e()}),t)};const u=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n,a=(n=e,function(e,t){return n.reduceRight((function(t,n){return n(e)(t)}),t)});return function(e,t,n){void 0===n&&(n=function(e){return e});var o=(0,r.useRef)(n(t)),i=(0,r.useState)(o.current)[1],l=(0,r.useCallback)((function(t){return o.current=e(o.current,t),i(o.current),t}),[e]),u=(0,r.useRef)(a({getState:function(){return o.current},dispatch:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return u.current.apply(u,e)}},l));return s((function(){u.current=a({getState:function(){return o.current},dispatch:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return u.current.apply(u,e)}},l)}),[l]),[o.current,u.current]}};const c=function(e){var t=(0,r.createContext)(void 0);return[function(){var e=(0,r.useContext)(t);if(null==e)throw new Error("useStateContext must be used inside a StateProvider.");return e},function(n){var a=n.children,o=n.initialValue;return function(e,n){return(0,r.createElement)(t.Provider,e,n)}({value:(0,r.useState)(void 0!==o?o:e)},a)},t]};var d=n(70655);function f(){var e=(0,r.useRef)(!1),t=(0,r.useCallback)((function(){return e.current}),[]);return(0,r.useEffect)((function(){return e.current=!0,function(){e.current=!1}}),[]),t}function p(e,t,n){void 0===t&&(t=[]),void 0===n&&(n={loading:!1});var a=(0,r.useRef)(0),o=f(),i=(0,r.useState)(n),l=i[0],s=i[1],u=(0,r.useCallback)((function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var r=++a.current;return l.loading||s((function(e){return(0,d.__assign)((0,d.__assign)({},e),{loading:!0})})),e.apply(void 0,t).then((function(e){return o()&&r===a.current&&s({value:e,loading:!1}),e}),(function(e){return o()&&r===a.current&&s({error:e,loading:!1}),e}))}),t);return[l,u]}function h(e,t){void 0===t&&(t=[]);var n=p(e,t,{loading:!0}),a=n[0],o=n[1];return(0,r.useEffect)((function(){o()}),[o]),a}const m=function(e,t){void 0===t&&(t=[]);var n=(0,r.useState)(0),a=n[0],o=n[1],i=h(e,(0,d.__spreadArrays)(t,[a])),l=i.loading,s=(0,r.useCallback)((function(){l||o((function(e){return e+1}))}),(0,d.__spreadArrays)(t,[l]));return(0,d.__assign)((0,d.__assign)({},i),{retry:s})};const g=function(e){void 0===e&&(e={});var t=(0,r.useState)(e),n=t[0],a=t[1];return[n,(0,r.useCallback)((function(e){a((function(t){return Object.assign({},t,e instanceof Function?e(t):e)}))}),[])]};function v(e){for(var t=[],n=0;n<e.length;n++)t.push({start:e.start(n),end:e.end(n)});return t}function b(e){return function(t){var n,a;a=r.isValidElement(t)?(n=t).props:t;var o=g({buffered:[],time:0,duration:0,paused:!0,muted:!1,volume:1,playing:!1}),i=o[0],l=o[1],s=(0,r.useRef)(null),u=function(e,t){return function(n){try{t&&t(n)}finally{e&&e(n)}}},c=function(){return l({paused:!1})},f=function(){return l({playing:!0})},p=function(){return l({playing:!1})},h=function(){return l({paused:!0,playing:!1})},m=function(){var e=s.current;e&&l({muted:e.muted,volume:e.volume})},b=function(){var e=s.current;if(e){var t=e.duration,n=e.buffered;l({duration:t,buffered:v(n)})}},y=function(){var e=s.current;e&&l({time:e.currentTime})},w=function(){var e=s.current;e&&l({buffered:v(e.buffered)})};n=n?r.cloneElement(n,(0,d.__assign)((0,d.__assign)({controls:!1},a),{ref:s,onPlay:u(a.onPlay,c),onPlaying:u(a.onPlaying,f),onWaiting:u(a.onWaiting,p),onPause:u(a.onPause,h),onVolumeChange:u(a.onVolumeChange,m),onDurationChange:u(a.onDurationChange,b),onTimeUpdate:u(a.onTimeUpdate,y),onProgress:u(a.onProgress,w)})):r.createElement(e,(0,d.__assign)((0,d.__assign)({controls:!1},a),{ref:s,onPlay:u(a.onPlay,c),onPlaying:u(a.onPlaying,f),onWaiting:u(a.onWaiting,p),onPause:u(a.onPause,h),onVolumeChange:u(a.onVolumeChange,m),onDurationChange:u(a.onDurationChange,b),onTimeUpdate:u(a.onTimeUpdate,y),onProgress:u(a.onProgress,w)}));var x=!1,k={play:function(){var e=s.current;if(e&&!x){var t=e.play();if("object"==typeof t){x=!0;var n=function(){x=!1};t.then(n,n)}return t}},pause:function(){var e=s.current;if(e&&!x)return e.pause()},seek:function(e){var t=s.current;t&&void 0!==i.duration&&(e=Math.min(i.duration,Math.max(0,e)),t.currentTime=e)},volume:function(e){var t=s.current;t&&(e=Math.min(1,Math.max(0,e)),t.volume=e,l({volume:e}))},mute:function(){var e=s.current;e&&(e.muted=!0)},unmute:function(){var e=s.current;e&&(e.muted=!1)}};return(0,r.useEffect)((function(){var e=s.current;e&&(l({volume:e.volume,muted:e.muted,paused:e.paused}),a.autoPlay&&e.paused&&k.play())}),[a.src]),[n,i,k,s]}}const y=b("audio");var w=function(){};function x(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];e&&e.addEventListener&&e.addEventListener.apply(e,t)}function k(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];e&&e.removeEventListener&&e.removeEventListener.apply(e,t)}var _="undefined"!=typeof window,E="undefined"!=typeof navigator,S=n(38252);const C=n.n(S)();var T=E?navigator:void 0;const O=T&&"function"==typeof T.getBattery?function(){var e=(0,r.useState)({isSupported:!0,fetched:!1}),t=e[0],n=e[1];return(0,r.useEffect)((function(){var e=!0,r=null,a=function(){if(e&&r){var a={isSupported:!0,fetched:!0,level:r.level,charging:r.charging,dischargingTime:r.dischargingTime,chargingTime:r.chargingTime};!C(t,a)&&n(a)}};return T.getBattery().then((function(t){e&&(x(r=t,"chargingchange",a),x(r,"chargingtimechange",a),x(r,"dischargingtimechange",a),x(r,"levelchange",a),a())})),function(){e=!1,r&&(k(r,"chargingchange",a),k(r,"chargingtimechange",a),k(r,"dischargingtimechange",a),k(r,"levelchange",a))}}),[]),t}:function(){return{isSupported:!1}};const D=function(e,t){void 0===e&&(e=!0);var n=(0,r.useCallback)((function(n){if("function"!=typeof e||e())return n.preventDefault(),t&&(n.returnValue=t),t}),[e,t]);(0,r.useEffect)((function(){if(e)return x(window,"beforeunload",n),function(){return k(window,"beforeunload",n)}}),[e,n])};var P=function(e,t){return"boolean"==typeof t?t:!e};const N=function(e){return(0,r.useReducer)(P,e)},I=N;var A=["mousedown","touchstart"];const L=function(e,t,n){void 0===n&&(n=A);var a=(0,r.useRef)(t);(0,r.useEffect)((function(){a.current=t}),[t]),(0,r.useEffect)((function(){for(var t=function(t){var n=e.current;n&&!n.contains(t.target)&&a.current(t)},r=0,o=n;r<o.length;r++){var i=o[r];x(document,i,t)}return function(){for(var e=0,r=n;e<r.length;e++){var a=r[e];k(document,a,t)}}}),[n,e])};var R=n(36808),j=n.n(R);const M=function(e){var t=(0,r.useState)((function(){return j().get(e)||null})),n=t[0],a=t[1];return[n,(0,r.useCallback)((function(t,n){j().set(e,t,n),a(t)}),[e]),(0,r.useCallback)((function(){j().remove(e),a(null)}),[e])]};var F=n(20640),B=n.n(F);const z=function(){var e=f(),t=g({value:void 0,error:void 0,noUserInteraction:!0}),n=t[0],a=t[1];return[n,(0,r.useCallback)((function(t){var n,r;if(e())try{if("string"!=typeof t&&"number"!=typeof t){var o=new Error("Cannot copy typeof "+typeof t+" to clipboard, must be a string");return void a({value:t,error:o,noUserInteraction:!0})}if(""===t){o=new Error("Cannot copy empty string to clipboard.");return void a({value:t,error:o,noUserInteraction:!0})}r=t.toString(),n=B()(r),a({value:r,error:void 0,noUserInteraction:n})}catch(o){a({value:r,error:o,noUserInteraction:n})}}),[])]};var $=function(e){return(e+1)%1e6};function U(){return(0,r.useReducer)($,0)[1]}function H(e,t){return"function"==typeof e?e.length?e(t):e():e}function V(e){var t=(0,r.useRef)(H(e)),n=U();return(0,r.useMemo)((function(){return[function(){return t.current},function(e){t.current=H(e,t.current),n()}]}),[])}function q(e,t,n){void 0===e&&(e=0),void 0===t&&(t=null),void 0===n&&(n=null);var a=H(e);"number"!=typeof a&&console.error("initialValue has to be a number, got "+typeof e),"number"==typeof n?a=Math.max(a,n):null!==n&&console.error("min has to be a number, got "+typeof n),"number"==typeof t?a=Math.min(a,t):null!==t&&console.error("max has to be a number, got "+typeof t);var o=V(a),i=o[0],l=o[1];return[i(),(0,r.useMemo)((function(){var e=function(e){var r=i(),a=H(e,r);r!==a&&("number"==typeof n&&(a=Math.max(a,n)),"number"==typeof t&&(a=Math.min(a,t)),r!==a&&l(a))};return{get:i,set:e,inc:function(t){void 0===t&&(t=1);var n=H(t,i());"number"!=typeof n&&console.error("delta has to be a number or function returning a number, got "+typeof n),e((function(e){return e+n}))},dec:function(t){void 0===t&&(t=1);var n=H(t,i());"number"!=typeof n&&console.error("delta has to be a number or function returning a number, got "+typeof n),e((function(e){return e-n}))},reset:function(t){void 0===t&&(t=a);var n=H(t,i());"number"!=typeof n&&console.error("value has to be a number or function returning a number, got "+typeof n),a=n,e(n)}}}),[a,n,t])]}var W=n(40818),G=n(97142),Z=n(52099),Q=n(87749);const Y=_?r.useLayoutEffect:r.useEffect;var X=(0,W.U)();(0,G.I)(X),(0,Z.I)(X);var K=0;const J=function(e){var t=(0,r.useMemo)((function(){return"react-use-css-"+(K++).toString(36)}),[]),n=(0,r.useMemo)((function(){return new X.VSheet}),[]);return Y((function(){var r={};return(0,Q.z)(r,e,"."+t,""),n.diff(r),function(){n.diff({})}})),t};const ee=function(e,t,n){var a=(0,r.useRef)(void 0);a.current&&n(t,a.current)||(a.current=t),(0,r.useEffect)(e,a.current)};function te(e,t){void 0===t&&(t=0);var n=(0,r.useRef)(!1),a=(0,r.useRef)(),o=(0,r.useRef)(e),i=(0,r.useCallback)((function(){return n.current}),[]),l=(0,r.useCallback)((function(){n.current=!1,a.current&&clearTimeout(a.current),a.current=setTimeout((function(){n.current=!0,o.current()}),t)}),[t]),s=(0,r.useCallback)((function(){n.current=null,a.current&&clearTimeout(a.current)}),[]);return(0,r.useEffect)((function(){o.current=e}),[e]),(0,r.useEffect)((function(){return l(),s}),[t]),[i,s,l]}function ne(e,t,n){void 0===t&&(t=0),void 0===n&&(n=[]);var a=te(e,t),o=a[0],i=a[1],l=a[2];return(0,r.useEffect)(l,n),[o,i]}const re=function(e,t){ee(e,t,C)};const ae=function(e,t){var n=(0,r.useState)(t),a=n[0],o=n[1];return null==a?[e,o]:[a,o]};const oe=function(e,t){void 0===e&&(e={}),void 0===t&&(t=[]);var n=e.onFiles,a=e.onText,o=e.onUri,i=(0,r.useState)(!1),l=i[0],s=i[1],u=(0,r.useCallback)(s,[]),c=(0,r.useMemo)((function(){return function(e){return function(t,n){var r=t.getData("text/uri-list");if(r)(e.onUri||w)(r,n);else if(t.files&&t.files.length)(e.onFiles||w)(Array.from(t.files),n);else if(n.clipboardData){var a=n.clipboardData.getData("text");(e.onText||w)(a,n)}}}(e)}),[n,a,o]);return(0,r.useEffect)((function(){var e=function(e){e.preventDefault(),u(!0)},t=function(e){e.preventDefault(),u(!0)},n=function(){u(!1)},r=function(){u(!1)},o=function(e){e.preventDefault(),u(!1),c(e.dataTransfer,e)},i=function(e){c(e.clipboardData,e)};return x(document,"dragover",e),x(document,"dragenter",t),x(document,"dragleave",n),x(document,"dragexit",r),x(document,"drop",o),a&&x(document,"paste",i),function(){k(document,"dragover",e),k(document,"dragenter",t),k(document,"dragleave",n),k(document,"dragexit",r),k(document,"drop",o),k(document,"paste",i)}}),(0,d.__spreadArrays)([c],t)),{over:l}};const ie=function(e){void 0===e&&(e={});var t=e.onFiles,n=e.onText,a=e.onUri,o=f(),i=(0,r.useState)(!1),l=i[0],s=i[1],u=(0,r.useMemo)((function(){return function(e,t){return function(n,r){var a=n.getData("text/uri-list");a?(e.onUri||w)(a,r):n.files&&n.files.length?(e.onFiles||w)(Array.from(n.files),r):n.items&&n.items.length&&n.items[0].getAsString((function(n){t&&(e.onText||w)(n,r)}))}}(e,o())}),[t,n,a]),c=(0,r.useMemo)((function(){return function(e,t){return{onDragOver:function(e){e.preventDefault()},onDragEnter:function(e){e.preventDefault(),t(!0)},onDragLeave:function(){t(!1)},onDrop:function(n){n.preventDefault(),n.persist(),t(!1),e(n.dataTransfer,n)},onPaste:function(t){t.persist(),e(t.clipboardData,t)}}}(u,s)}),[u,s]);return[c,{over:l}]};const le=function(e){(0,r.useEffect)(e,[])};function se(e){var t=(0,r.useRef)(e&&e.current);return(0,r.useEffect)((function(){e&&(e.current=t.current)}),[e]),t}function ue(e){return(0,r.forwardRef)((function(t,n){var r=se(n);return e(t,r)}))}var ce=_?window:null,de=function(e){return!!e.addEventListener},fe=function(e){return!!e.on};const pe=function(e,t,n,a){void 0===n&&(n=ce),(0,r.useEffect)((function(){if(t&&n)return de(n)?x(n,e,t,a):fe(n)&&n.on(e,t,a),function(){de(n)?k(n,e,t,a):fe(n)&&n.off(e,t,a)}}),[e,t,n,JSON.stringify(a)])};const he=function(){var e=(0,r.useState)(null),t=e[0],n=e[1];return(0,r.useEffect)((function(){if(t)throw t}),[t]),(0,r.useCallback)((function(e){n(e)}),[])};const me=function(e){(0,r.useEffect)((function(){var t=document.querySelector("link[rel*='icon']")||document.createElement("link");t.type="image/x-icon",t.rel="shortcut icon",t.href=e,document.getElementsByTagName("head")[0].appendChild(t)}),[e])};var ge=n(10577),ve=n.n(ge);const be=function(e,t,n){void 0===n&&(n={});var a=n.video,o=n.onClose,i=void 0===o?w:o,l=(0,r.useState)(t),s=l[0],u=l[1];return Y((function(){if(t&&e.current){var n=function(){(null==a?void 0:a.current)&&k(a.current,"webkitendfullscreen",n),i()},r=function(){if(ve().isEnabled){var e=ve().isFullscreen;u(e),e||i()}};if(ve().isEnabled){try{ve().request(e.current),u(!0)}catch(l){i(l),u(!1)}ve().on("change",r)}else a&&a.current&&a.current.webkitEnterFullscreen?(a.current.webkitEnterFullscreen(),x(a.current,"webkitendfullscreen",n),u(!0)):(i(),u(!1));return function(){if(u(!1),ve().isEnabled)try{ve().off("change",r),ve().exit()}catch(o){}else a&&a.current&&a.current.webkitExitFullscreen&&(k(a.current,"webkitendfullscreen",n),a.current.webkitExitFullscreen())}}}),[t,a,e]),s};const ye=function(e){var t,n=(0,r.useState)({loading:!0,accuracy:null,altitude:null,altitudeAccuracy:null,heading:null,latitude:null,longitude:null,speed:null,timestamp:Date.now()}),a=n[0],o=n[1],i=!0,l=function(e){i&&o({loading:!1,accuracy:e.coords.accuracy,altitude:e.coords.altitude,altitudeAccuracy:e.coords.altitudeAccuracy,heading:e.coords.heading,latitude:e.coords.latitude,longitude:e.coords.longitude,speed:e.coords.speed,timestamp:e.timestamp})},s=function(e){return i&&o((function(t){return(0,d.__assign)((0,d.__assign)({},t),{loading:!1,error:e})}))};return(0,r.useEffect)((function(){return navigator.geolocation.getCurrentPosition(l,s,e),t=navigator.geolocation.watchPosition(l,s,e),function(){i=!1,navigator.geolocation.clearWatch(t)}}),[]),a};const we=function(e){void 0===e&&(e={});var t=U(),n=(0,r.useRef)((0,d.__assign)({},e));return[(0,r.useCallback)((function(){return n.current}),[]),(0,r.useCallback)((function(e){e&&(Object.assign(n.current,e),t())}),[])]};var xe=0,ke={};const _e=function(e,t){void 0===t&&(t=0);var n=(0,r.useRef)((function(){}));(0,r.useEffect)((function(){n.current=e})),(0,r.useEffect)((function(){if(null!==t){var e=function(e,t){var n,r=xe++;if(ke[t])ke[t].listeners[r]=e;else{var a=setInterval((function(){for(var e,n=ke[t].listeners,r=!1,a=0,o=Object.values(n);a<o.length;a++){var i=o[a];try{i()}catch(l){r=!0,e=l}}if(r)throw e}),t);ke[t]={ms:t,timer:a,listeners:(n={},n[r]=e,n)}}return{bucket:ke[t],id:r}}((function(){return n.current()}),t);return function(){return function(e){var t=e.bucket,n=e.id;delete t.listeners[n];var r=!1;for(var a in t.listeners){r=!0;break}r||(clearInterval(t.timer),delete ke[t.ms])}(e)}}}),[t])};var Ee=r.useState;const Se=function(e){var t,n,a=Ee(!1),o=a[0],i=a[1];return"function"==typeof e&&(e=e(o)),[r.cloneElement(e,{onMouseEnter:(n=e.props.onMouseEnter,function(e){(n||w)(e),i(!0)}),onMouseLeave:(t=e.props.onMouseLeave,function(e){(t||w)(e),i(!1)})}),o]};const Ce=function(e,t){void 0===t&&(t=!0);var n=(0,r.useState)(!1),a=n[0],o=n[1];return(0,r.useEffect)((function(){var n=function(){return o(!0)},r=function(){return o(!1)};t&&e&&e.current&&(x(e.current,"mouseover",n),x(e.current,"mouseout",r));var a=e.current;return function(){t&&a&&(k(a,"mouseover",n),k(a,"mouseout",r))}}),[t,e]),a};function Te(e,t,n,r){var a,o=!1,i=0;function l(){a&&clearTimeout(a)}function s(){for(var s=arguments.length,u=new Array(s),c=0;c<s;c++)u[c]=arguments[c];var d=this,f=Date.now()-i;function p(){i=Date.now(),n.apply(d,u)}o||(r&&!a&&p(),l(),void 0===r&&f>e?p():!0!==t&&(a=setTimeout(r?function(){a=void 0}:p,void 0===r?e-f:e)))}return"boolean"!=typeof t&&(r=n,n=t,t=void 0),s.cancel=function(){l(),o=!0},s}var Oe=["mousemove","mousedown","resize","keydown","touchstart","wheel"];const De=function(e,t,n){void 0===e&&(e=6e4),void 0===t&&(t=!1),void 0===n&&(n=Oe);var a=(0,r.useState)(t),o=a[0],i=a[1];return(0,r.useEffect)((function(){for(var t,r=!0,a=o,l=function(e){r&&(a=e,i(e))},s=Te(50,(function(){a&&l(!1),clearTimeout(t),t=setTimeout((function(){return l(!0)}),e)})),u=function(){document.hidden||s()},c=0;c<n.length;c++)x(window,n[c],s);return x(document,"visibilitychange",u),t=setTimeout((function(){return l(!0)}),e),function(){r=!1;for(var e=0;e<n.length;e++)k(window,n[e],s);k(document,"visibilitychange",u)}}),[e,n]),o};const Pe=function(e,t){var n=(0,r.useState)(null),a=n[0],o=n[1];return(0,r.useEffect)((function(){if(e.current&&"function"==typeof IntersectionObserver){var n=new IntersectionObserver((function(e){o(e[0])}),t);return n.observe(e.current),function(){o(null),n.disconnect()}}return function(){}}),[e.current,t.threshold,t.root,t.rootMargin]),a};const Ne=function(e,t){var n=(0,r.useRef)((function(){}));(0,r.useEffect)((function(){n.current=e})),(0,r.useEffect)((function(){if(null!==t){var e=setInterval((function(){return n.current()}),t||0);return function(){return clearInterval(e)}}}),[t])};const Ie=function(e,t,n,a){void 0===t&&(t=w),void 0===n&&(n={}),void 0===a&&(a=[e]);var o=n.event,i=void 0===o?"keydown":o,l=n.target,s=n.options,u=(0,r.useMemo)((function(){var n,r="function"==typeof(n=e)?n:"string"==typeof n?function(e){return e.key===n}:n?function(){return!0}:function(){return!1};return function(e){if(r(e))return t(e)}}),a);pe(i,u,l,s)};const Ae=function(e){return void 0===e&&(e={laptopL:1440,laptop:1024,tablet:768}),function(){var t=(0,r.useState)(_?window.innerWidth:0),n=t[0],a=t[1];(0,r.useEffect)((function(){var e=function(){a(window.innerWidth)};return e(),x(window,"resize",e),function(){k(window,"resize",e)}}));var o=(0,r.useMemo)((function(){return Object.entries(e).sort((function(e,t){return e[1]>=t[1]?1:-1}))}),[e]),i=o.reduce((function(e,t){var r=t[0],a=t[1];return n>=a?r:e}),o[0][0]);return i}};const Le=function(e){var t=(0,r.useState)([!1,null]),n=t[0],a=t[1];return Ie(e,(function(e){return a([!0,e])}),{event:"keydown"},[n]),Ie(e,(function(e){return a([!1,e])}),{event:"keyup"},[n]),n};const Re=function(e,t,n,r){void 0===r&&(r=Le);var a=r(e),o=a[0],i=a[1];s((function(){!o&&n?n(i):o&&t&&t(i)}),[o])};const je=function(e){var t=(0,r.useRef)(e);return t.current=e,t};const Me=function(e,t){(0,r.useEffect)((function(){return e&&e(),function(){t&&t()}}),[])};const Fe=function(e){void 0===e&&(e=[]);var t=(0,r.useRef)(H(e)),n=U(),a=(0,r.useMemo)((function(){var r={set:function(e){t.current=H(e,t.current),n()},push:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];e.length&&a.set((function(t){return t.concat(e)}))},updateAt:function(e,t){a.set((function(n){var r=n.slice();return r[e]=t,r}))},insertAt:function(e,t){a.set((function(n){var r=n.slice();return e>r.length?r[e]=t:r.splice(e,0,t),r}))},update:function(e,t){a.set((function(n){return n.map((function(n){return e(n,t)?t:n}))}))},updateFirst:function(e,n){var r=t.current.findIndex((function(t){return e(t,n)}));r>=0&&a.updateAt(r,n)},upsert:function(e,n){var r=t.current.findIndex((function(t){return e(t,n)}));r>=0?a.updateAt(r,n):a.push(n)},sort:function(e){a.set((function(t){return t.slice().sort(e)}))},filter:function(e,t){a.set((function(n){return n.slice().filter(e,t)}))},removeAt:function(e){a.set((function(t){var n=t.slice();return n.splice(e,1),n}))},clear:function(){a.set([])},reset:function(){a.set(H(e).slice())}};return r.remove=r.removeAt,r}),[]);return[t.current,a]};const Be=function(e,t,n){if(!_)return[t,w,w];if(!e)throw new Error("useLocalStorage key may not be falsy");var a=n?n.raw?function(e){return e}:n.deserializer:JSON.parse,o=(0,r.useRef)((function(e){try{var r=n?n.raw?String:n.serializer:JSON.stringify,o=localStorage.getItem(e);return null!==o?a(o):(t&&localStorage.setItem(e,r(t)),t)}catch(i){return t}})),i=(0,r.useState)((function(){return o.current(e)})),l=i[0],s=i[1];(0,r.useLayoutEffect)((function(){return s(o.current(e))}),[e]);var u=(0,r.useCallback)((function(t){try{var r="function"==typeof t?t(l):t;if(void 0===r)return;var o=void 0;o=n?n.raw?"string"==typeof r?r:JSON.stringify(r):n.serializer?n.serializer(r):JSON.stringify(r):JSON.stringify(r),localStorage.setItem(e,o),s(a(o))}catch(i){}}),[e,s]),c=(0,r.useCallback)((function(){try{localStorage.removeItem(e),s(void 0)}catch(i){}}),[e,s]);return[l,u,c]};var ze=function(e){var t=window.history,n=t[e];t[e]=function(t){var r=n.apply(this,arguments),a=new Event(e.toLowerCase());return a.state=t,window.dispatchEvent(a),r}};_&&(ze("pushState"),ze("replaceState"));var $e=function(e){var t=window.history,n=t.state,r=t.length,a=window.location;return{trigger:e,state:n,length:r,hash:a.hash,host:a.host,hostname:a.hostname,href:a.href,origin:a.origin,pathname:a.pathname,port:a.port,protocol:a.protocol,search:a.search}},Ue="function"==typeof Event;const He=_&&Ue?function(){var e=(0,r.useState)($e("load")),t=e[0],n=e[1];return(0,r.useEffect)((function(){var e=function(){return n($e("popstate"))},t=function(){return n($e("pushstate"))},r=function(){return n($e("replacestate"))};return x(window,"popstate",e),x(window,"pushstate",t),x(window,"replacestate",r),function(){k(window,"popstate",e),k(window,"pushstate",t),k(window,"replacestate",r)}}),[]),t}:function(){return{trigger:"load",length:1}};function Ve(e){if(!e)return null;if("BODY"===e.tagName)return e;if("IFRAME"===e.tagName){var t=e.contentDocument;return t?t.body:null}return e.offsetParent?Ve(e.offsetParent):null}function qe(e){var t=e||window.event;return t.touches.length>1||(t.preventDefault&&t.preventDefault(),!1)}var We=_&&window.navigator&&window.navigator.platform&&/iP(ad|hone|od)/.test(window.navigator.platform),Ge=new Map,Ze="object"==typeof document?document:void 0,Qe=!1;const Ye=Ze?function(e,t){void 0===e&&(e=!0);var n=(0,r.useRef)(Ze.body);t=t||n;var a=function(e){var t=Ge.get(e);t&&(1===t.counter?(Ge.delete(e),We?(e.ontouchmove=null,Qe&&(k(document,"touchmove",qe),Qe=!1)):e.style.overflow=t.initialOverflow):Ge.set(e,{counter:t.counter-1,initialOverflow:t.initialOverflow}))};(0,r.useEffect)((function(){var n=Ve(t.current);n&&(e?function(e){var t=Ge.get(e);t?Ge.set(e,{counter:t.counter+1,initialOverflow:t.initialOverflow}):(Ge.set(e,{counter:1,initialOverflow:e.style.overflow}),We?Qe||(x(document,"touchmove",qe,{passive:!1}),Qe=!0):e.style.overflow="hidden")}(n):a(n))}),[e,t.current]),(0,r.useEffect)((function(){var e=Ve(t.current);if(e)return function(){a(e)}}),[])}:function(e,t){void 0===e&&(e=!0)};const Xe=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];le((function(){return console.log.apply(console,(0,d.__spreadArrays)([e+" mounted"],t)),function(){return console.log(e+" unmounted")}})),s((function(){console.log.apply(console,(0,d.__spreadArrays)([e+" updated"],t))}))};var Ke=function(e){(function(e){return"touches"in e})(e)&&e.touches.length<2&&e.preventDefault&&e.preventDefault()};const Je=function(e,t){var n=void 0===t?{}:t,a=n.isPreventDefault,o=void 0===a||a,i=n.delay,l=void 0===i?300:i,s=(0,r.useRef)(),u=(0,r.useRef)(),c=(0,r.useCallback)((function(t){o&&t.target&&(x(t.target,"touchend",Ke,{passive:!1}),u.current=t.target),s.current=setTimeout((function(){return e(t)}),l)}),[e,l,o]),d=(0,r.useCallback)((function(){s.current&&clearTimeout(s.current),o&&u.current&&k(u.current,"touchend",Ke)}),[o]);return{onMouseDown:function(e){return c(e)},onTouchStart:function(e){return c(e)},onMouseUp:d,onMouseLeave:d,onTouchEnd:d}};const et=function(e){void 0===e&&(e={});var t=(0,r.useState)(e),n=t[0],a=t[1],o=(0,r.useMemo)((function(){return{set:function(e,t){a((function(n){var r;return(0,d.__assign)((0,d.__assign)({},n),((r={})[e]=t,r))}))},setAll:function(e){a(e)},remove:function(e){a((function(t){var n=t,r=e;n[r];return(0,d.__rest)(n,["symbol"==typeof r?r:r+""])}))},reset:function(){return a(e)}}}),[a]),i=(0,d.__assign)({get:(0,r.useCallback)((function(e){return n[e]}),[n])},o);return[n,i]};const tt=function(e,t){var n=(0,r.useState)(function(e,t){return void 0!==t?t:!!_&&window.matchMedia(e).matches}(e,t)),a=n[0],o=n[1];return(0,r.useEffect)((function(){var t=!0,n=window.matchMedia(e),r=function(){t&&o(!!n.matches)};return n.addListener(r),o(n.matches),function(){t=!1,n.removeListener(r)}}),[e]),a};const nt=E&&navigator.mediaDevices?function(){var e=(0,r.useState)({}),t=e[0],n=e[1];return(0,r.useEffect)((function(){var e=!0,t=function(){navigator.mediaDevices.enumerateDevices().then((function(t){e&&n({devices:t.map((function(e){return{deviceId:e.deviceId,groupId:e.groupId,kind:e.kind,label:e.label}}))})})).catch(w)};return x(navigator.mediaDevices,"devicechange",t),t(),function(){e=!1,k(navigator.mediaDevices,"devicechange",t)}}),[]),t}:function(){return{}};function rt(e,t){var n=(0,r.useRef)(e),a=(0,r.useState)(t),o=a[0],i=a[1];return[o,(0,r.useCallback)((function(e){2===n.current.length?n.current(e,i):i(n.current(e))}),[o])]}const at=function(e,t){var n=(0,r.useMemo)((function(){return function(t,n){var r;return(r=e(t))[n.type].apply(r,n.payload)}}),[e]),a=(0,r.useReducer)(n,t),o=a[0],i=a[1],l=(0,r.useMemo)((function(){return Object.keys(e(t)).reduce((function(e,t){return e[t]=function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return i({type:t,payload:e})},e}),{})}),[e,t]);return[o,l]};var ot={acceleration:{x:null,y:null,z:null},accelerationIncludingGravity:{x:null,y:null,z:null},rotationRate:{alpha:null,beta:null,gamma:null},interval:16};const it=function(e){void 0===e&&(e=ot);var t=(0,r.useState)(e),n=t[0],a=t[1];return(0,r.useEffect)((function(){var e=function(e){var t=e.acceleration,n=e.accelerationIncludingGravity,r=e.rotationRate,o=e.interval;a({acceleration:{x:t.x,y:t.y,z:t.z},accelerationIncludingGravity:{x:n.x,y:n.y,z:n.z},rotationRate:{alpha:r.alpha,beta:r.beta,gamma:r.gamma},interval:o})};return x(window,"devicemotion",e),function(){k(window,"devicemotion",e)}}),[]),n};const lt=function(e){le((function(){e()}))};const st=function(e){var t=(0,r.useRef)(e);t.current=e,le((function(){return function(){return t.current()}}))};const ut=function(e){var t=(0,r.useRef)(0),n=(0,r.useState)(e),a=n[0],o=n[1],i=(0,r.useCallback)((function(e){cancelAnimationFrame(t.current),t.current=requestAnimationFrame((function(){o(e)}))}),[]);return st((function(){cancelAnimationFrame(t.current)})),[a,i]};const ct=function(e){var t=ut({docX:0,docY:0,posX:0,posY:0,elX:0,elY:0,elH:0,elW:0}),n=t[0],a=t[1];return(0,r.useEffect)((function(){var t=function(t){if(e&&e.current){var n=e.current.getBoundingClientRect(),r=n.left,o=n.top,i=n.width,l=n.height,s=r+window.pageXOffset,u=o+window.pageYOffset,c=t.pageX-s,d=t.pageY-u;a({docX:t.pageX,docY:t.pageY,posX:s,posY:u,elX:c,elY:d,elH:l,elW:i})}};return x(document,"mousemove",t),function(){k(document,"mousemove",t)}}),[e]),n};var dt={current:null};const ft=function(e,t){void 0===t&&(t={});var n=!!t.whenHovered,r=!!t.bound,a=Ce(e,n),o=ct(n&&!a?dt:e);return r&&(o.elX=Math.max(0,Math.min(o.elX,o.elW)),o.elY=Math.max(0,Math.min(o.elY,o.elH))),o},pt=function(){var e=(0,r.useState)(0),t=e[0],n=e[1];return(0,r.useEffect)((function(){var e=function(e){n(e.deltaY+t)};return x(window,"wheel",e,!1),function(){return k(window,"wheel",e)}})),t};var ht=E?navigator:void 0,mt=ht&&(ht.connection||ht.mozConnection||ht.webkitConnection);function gt(e){var t=null==ht?void 0:ht.onLine,n=null==e?void 0:e.online;return{online:t,previous:n,since:t!==n?new Date:null==e?void 0:e.since,downlink:null==mt?void 0:mt.downlink,downlinkMax:null==mt?void 0:mt.downlinkMax,effectiveType:null==mt?void 0:mt.effectiveType,rtt:null==mt?void 0:mt.rtt,saveData:null==mt?void 0:mt.saveData,type:null==mt?void 0:mt.type}}function vt(e){var t=(0,r.useState)(null!=e?e:gt),n=t[0],a=t[1];return(0,r.useEffect)((function(){var e=function(){a(gt)};return x(window,"online",e,{passive:!0}),x(window,"offline",e,{passive:!0}),mt&&x(mt,"change",e,{passive:!0}),function(){k(window,"online",e),k(window,"offline",e),mt&&k(mt,"change",e)}}),[]),n}const bt=q;const yt=function(e,t){var n=(0,r.useState)(t),a=n[0],o=n[1];return Y((function(){var t=e.subscribe(o);return function(){return t.unsubscribe()}}),[e]),a};var wt={angle:0,type:"landscape-primary"};const xt=function(e){void 0===e&&(e=wt);var t=(0,r.useState)(e),n=t[0],a=t[1];return(0,r.useEffect)((function(){var t=window.screen,n=!0,r=function(){if(n){var r=t.orientation;if(r){var o=r.angle,i=r.type;a({angle:o,type:i})}else void 0!==window.orientation?a({angle:"number"==typeof window.orientation?window.orientation:0,type:""}):a(e)}};return x(window,"orientationchange",r),r(),function(){n=!1,k(window,"orientationchange",r)}}),[]),n};const kt=function(e,t){void 0===t&&(t=[]),(0,r.useEffect)((function(){if(e){var t=function(t){var n=(t=t||window.event).relatedTarget||t.toElement;n&&"HTML"!==n.nodeName||e()};return x(document,"mouseout",t),function(){k(document,"mouseout",t)}}}),t)};const _t=function(e){var t=(0,r.useState)(""),n=t[0],a=t[1];return(0,r.useEffect)((function(){var t=!0,n=null,r=function(){t&&a((function(){var e;return null!==(e=null==n?void 0:n.state)&&void 0!==e?e:""}))};return navigator.permissions.query(e).then((function(e){x(n=e,"change",r),r()})).catch(w),function(){n&&k(n,"change",r),t=!1,n=null}}),[e]),n};function Et(e){var t=(0,r.useRef)();return(0,r.useEffect)((function(){t.current=e})),t.current}var St=function(e,t){return e===t};function Ct(e,t){void 0===t&&(t=St);var n=(0,r.useRef)(),a=(0,r.useRef)(e);return l()||t(a.current,e)||(n.current=a.current,a.current=e),n.current}const Tt=function(){var e=f();return(0,r.useCallback)((function(t){return new Promise((function(n,r){t.then((function(t){e()&&n(t)}),(function(t){e()&&r(t)}))}))}),[])};const Ot=function(e){void 0===e&&(e=[]);var t=(0,r.useState)(e),n=t[0],a=t[1];return{add:function(e){a((function(t){return(0,d.__spreadArrays)(t,[e])}))},remove:function(){var e;return a((function(t){var n=t[0],r=t.slice(1);return e=n,r})),e},get first(){return n[0]},get last(){return n[n.length-1]},get size(){return n.length}}};const Dt=function(e,t){void 0===e&&(e=1e12),void 0===t&&(t=0);var n=(0,r.useState)(0),a=n[0],o=n[1];return Y((function(){var n,r,a,i=function(){var t=Math.min(1,(Date.now()-a)/e);o(t),l()},l=function(){n=requestAnimationFrame(i)},s=setTimeout((function(){r=setTimeout((function(){cancelAnimationFrame(n),o(1)}),e),a=Date.now(),l()}),t);return function(){clearTimeout(r),clearTimeout(s),cancelAnimationFrame(n)}}),[e,t]),a};function Pt(e,t){void 0===t&&(t=!0);var n=(0,r.useRef)(null),a=(0,r.useRef)(!1),o=(0,r.useRef)(e);o.current=e;var i=(0,r.useCallback)((function(e){a.current&&(o.current(e),n.current=requestAnimationFrame(i))}),[]),l=(0,r.useMemo)((function(){return[function(){a.current&&(a.current=!1,n.current&&cancelAnimationFrame(n.current))},function(){a.current||(a.current=!0,n.current=requestAnimationFrame(i))},function(){return a.current}]}),[]);return(0,r.useEffect)((function(){return t&&l[1](),l[0]}),[]),l}var Nt=function(e,t){return new URLSearchParams(e).get(t)};const It=_?function(e){var t=window.location,n=(0,r.useState)((function(){return Nt(t.search,e)})),a=n[0],o=n[1];return(0,r.useEffect)((function(){var n=function(){o(Nt(t.search,e))};return x(window,"popstate",n),x(window,"pushstate",n),x(window,"replacestate",n),function(){k(window,"popstate",n),k(window,"pushstate",n),k(window,"replacestate",n)}}),[]),a}:function(){return null};n(96260);var At=function(e){void 0===e&&(e={});var t=e.disabled,n=je(e),a=(0,r.useState)({isScratching:!1}),o=a[0],i=a[1],l=(0,r.useRef)(o),s=(0,r.useRef)(!1),u=(0,r.useRef)(null),c=(0,r.useState)(null),f=c[0],p=c[1];return(0,r.useEffect)((function(){if(!t&&f){var e,r,a=function(e,t){cancelAnimationFrame(u.current),u.current=requestAnimationFrame((function(){var r=f.getBoundingClientRect(),a=r.left,o=r.top,s=a+window.scrollX,u=o+window.scrollY,c=e-s,p=t-u;i((function(e){var t=(0,d.__assign)((0,d.__assign)({},e),{dx:c-(e.x||0),dy:p-(e.y||0),end:Date.now(),isScratching:!0});return l.current=t,(n.current.onScratch||w)(t),t}))}))},o=function(e){a(e.pageX,e.pageY)},c=function(e){a(e.changedTouches[0].pageX,e.changedTouches[0].pageY)},p=function(){s.current&&(s.current=!1,l.current=(0,d.__assign)((0,d.__assign)({},l.current),{isScratching:!1}),(n.current.onScratchEnd||w)(l.current),i({isScratching:!1}),k(window,"mousemove",o),k(window,"touchmove",c),k(window,"mouseup",e),k(window,"touchend",r))};e=p,r=p;var h=function(t,a){if(s.current){var u=f.getBoundingClientRect(),d=u.left,p=u.top,h=d+window.scrollX,m=p+window.scrollY,g=t-h,v=a-m,b=Date.now(),y={isScratching:!0,start:b,end:b,docX:t,docY:a,x:g,y:v,dx:0,dy:0,elH:f.offsetHeight,elW:f.offsetWidth,elX:h,elY:m};l.current=y,(n.current.onScratchStart||w)(y),i(y),x(window,"mousemove",o),x(window,"touchmove",c),x(window,"mouseup",e),x(window,"touchend",r)}},m=function(e){s.current=!0,h(e.pageX,e.pageY)},g=function(e){s.current=!0,h(e.changedTouches[0].pageX,e.changedTouches[0].pageY)};return x(f,"mousedown",m),x(f,"touchstart",g),function(){k(f,"mousedown",m),k(f,"touchstart",g),k(window,"mousemove",o),k(window,"touchmove",c),k(window,"mouseup",e),k(window,"touchend",r),u.current&&cancelAnimationFrame(u.current),u.current=null,s.current=!1,l.current={isScratching:!1},i(l.current)}}}),[f,t,n]),[p,o]};const Lt=At;const Rt=function(e){var t=ut({x:0,y:0}),n=t[0],a=t[1];return(0,r.useEffect)((function(){var t=function(){e.current&&a({x:e.current.scrollLeft,y:e.current.scrollTop})};return e.current&&x(e.current,"scroll",t,{capture:!1,passive:!0}),function(){e.current&&k(e.current,"scroll",t)}}),[e]),n};const jt=function(e){var t=(0,r.useState)(!1),n=t[0],a=t[1];return(0,r.useEffect)((function(){if(e.current){var t,n=function(){a(!0),clearTimeout(t),t=setTimeout((function(){a(!1)}),150)};return x(e.current,"scroll",n,!1),function(){e.current&&k(e.current,"scroll",n,!1)}}return function(){}}),[e]),n};const Mt=function(e,t,n){if(!_)return[t,function(){}];var a=(0,r.useState)((function(){try{var r=sessionStorage.getItem(e);return"string"!=typeof r?(sessionStorage.setItem(e,n?String(t):JSON.stringify(t)),t):n?r:JSON.parse(r||"null")}catch(a){return t}})),o=a[0],i=a[1];return(0,r.useEffect)((function(){try{var t=n?String(o):JSON.stringify(o);sessionStorage.setItem(e,t)}catch(a){}})),[o,i]};var Ft=n(99376),Bt=function(e,t){return e.every((function(e,n){return(0,Ft.D)(e,t[n])}))};const zt=function(e,t){ee(e,t,Bt)};var $t=r.useState,Ut=r.useEffect,Ht=r.useRef;const Vt=function(e,t){var n=void 0===t?{}:t,o=n.width,i=void 0===o?1/0:o,l=n.height,s=void 0===l?1/0:l;if(!_)return["function"==typeof e?e({width:i,height:s}):e,{width:i,height:s}];var u=$t({width:i,height:s}),c=u[0],f=u[1];"function"==typeof e&&(e=e(c));var p=e.props.style||{},h=Ht(null),m=null,g=function(){var e=h.current,t=e?{width:e.offsetWidth,height:e.offsetHeight}:{width:i,height:s};f(t)},v=function(e){x(e,"resize",g),setTimeout(g,35)};return Ut((function(){var e=h.current;if(e){if(e.contentWindow)m=e.contentWindow,v(m);else{var t=function(){x(e,"load",t),m=e.contentWindow,v(m)};k(e,"load",t)}return function(){m&&m.removeEventListener&&k(m,"resize",g)}}}),[]),p.position="relative",[r.cloneElement.apply(a,(0,d.__spreadArrays)([e,{style:p}],(0,d.__spreadArrays)([r.createElement("iframe",{ref:h,style:{background:"transparent",border:"none",height:"100%",left:0,position:"absolute",top:0,width:"100%",zIndex:-1}})],r.Children.toArray(e.props.children)))),c]};const qt=function(e,t){void 0===t&&(t={});var n=f(),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useRef)(0),l=g({isSliding:!1,value:0}),s=l[0],u=l[1];return o.current=s.value,(0,r.useEffect)((function(){if(_){var r=void 0===t.styles||t.styles,l=void 0!==t.reverse&&t.reverse;e.current&&r&&(e.current.style.userSelect="none");var s=function(){!a.current&&n()&&((t.onScrubStart||w)(),a.current=!0,u({isSliding:!0}),m())},c=function(){a.current&&n()&&((t.onScrubStop||w)(o.current),a.current=!1,u({isSliding:!1}),g())},d=function(e){s(),f(e)},f=t.vertical?function(e){return v(e.clientY)}:function(e){return v(e.clientX)},p=function(e){s(),h(e)},h=t.vertical?function(e){return v(e.changedTouches[0].clientY)}:function(e){return v(e.changedTouches[0].clientX)},m=function(){x(document,"mousemove",f),x(document,"mouseup",c),x(document,"touchmove",h),x(document,"touchend",c)},g=function(){k(document,"mousemove",f),k(document,"mouseup",c),k(document,"touchmove",h),k(document,"touchend",c)},v=function(r){cancelAnimationFrame(i.current),i.current=requestAnimationFrame((function(){if(n()&&e.current){var a=e.current.getBoundingClientRect(),o=t.vertical?a.top:a.left,i=t.vertical?a.height:a.width;if(!i)return;var s=(r-o)/i;s>1?s=1:s<0&&(s=0),l&&(s=1-s),u({value:s}),(t.onScrub||w)(s)}}))};return x(e.current,"mousedown",d),x(e.current,"touchstart",p),function(){k(e.current,"mousedown",d),k(e.current,"touchstart",p)}}}),[e,t.vertical]),s};var Wt;!function(e){e[e.init=0]="init",e[e.play=1]="play",e[e.pause=2]="pause",e[e.end=3]="end"}(Wt||(Wt={}));const Gt=function(e,t){var n=(0,r.useRef)(!1),a=(0,r.useState)((function(){var e=t.voice||{},n=e.lang,r=void 0===n?"default":n,a=e.name,o=void 0===a?"":a;return{isPlaying:!1,status:Wt[Wt.init],lang:t.lang||"default",voiceInfo:{lang:r,name:o},rate:t.rate||1,pitch:t.pitch||1,volume:t.volume||1}})),o=a[0],i=a[1],l=(0,r.useCallback)((function(){n.current&&i((function(e){return(0,d.__assign)((0,d.__assign)({},e),{isPlaying:!0,status:Wt[Wt.play]})}))}),[]),s=(0,r.useCallback)((function(){n.current&&i((function(e){return(0,d.__assign)((0,d.__assign)({},e),{isPlaying:!1,status:Wt[Wt.pause]})}))}),[]),u=(0,r.useCallback)((function(){n.current&&i((function(e){return(0,d.__assign)((0,d.__assign)({},e),{isPlaying:!1,status:Wt[Wt.end]})}))}),[]);return(0,r.useEffect)((function(){n.current=!0;var r=new SpeechSynthesisUtterance(e);return t.lang&&(r.lang=t.lang),t.voice&&(r.voice=t.voice),r.rate=t.rate||1,r.pitch=t.pitch||1,r.volume=t.volume||1,r.onstart=l,r.onpause=s,r.onresume=l,r.onend=u,window.speechSynthesis.speak(r),function(){n.current=!1}}),[]),o};const Zt=function(e){Y((function(){var t=function(t){var n,r,a,o,i;!function(){var e=document.activeElement,t=document.body;if(!e)return!1;if(e===t)return!1;switch(e.tagName){case"INPUT":case"TEXTAREA":return!0}return e.hasAttribute("contenteditable")}()&&(r=(n=t).keyCode,a=n.metaKey,o=n.ctrlKey,i=n.altKey,!(a||o||i)&&(r>=48&&r<=57||r>=65&&r<=90))&&e(t)};return x(document,"keydown",t),function(){k(document,"keydown",t)}}),[])};function Qt(e,t,n){if(void 0===t&&(t=10),t<1)throw new Error("Capacity has to be greater than 1, got '"+t+"'");var a=l(),o=(0,r.useState)(e),i=o[0],s=o[1],u=(0,r.useRef)(null!=n?n:[]),c=(0,r.useRef)(0);return a&&(u.current.length?(u.current[u.current.length-1]!==e&&u.current.push(e),u.current.length>t&&(u.current=u.current.slice(u.current.length-t))):u.current.push(e),c.current=u.current.length&&u.current.length-1),[i,(0,r.useCallback)((function(e){s((function(n){return(e=H(e,n))!==n&&(c.current<u.current.length-1&&(u.current=u.current.slice(0,c.current+1)),c.current=u.current.push(e)-1,u.current.length>t&&(u.current=u.current.slice(u.current.length-t))),e}))}),[i,t]),(0,r.useMemo)((function(){return{history:u.current,position:c.current,capacity:t,back:function(e){void 0===e&&(e=1),c.current&&s((function(){return c.current-=Math.min(e,c.current),u.current[c.current]}))},forward:function(e){void 0===e&&(e=1),c.current!==u.current.length-1&&s((function(){return c.current=Math.min(c.current+e,u.current.length-1),u.current[c.current]}))},go:function(e){e!==c.current&&s((function(){return c.current=e<0?Math.max(u.current.length+e,0):Math.min(u.current.length-1,e),u.current[c.current]}))}}}),[i])]}function Yt(e){void 0===e&&(e=[]);var t=f(),n=U(),a=(0,r.useRef)(0);s((function(){e.length<=a.current&&(a.current=e.length-1,n())}),[e.length]);var o=(0,r.useMemo)((function(){return{next:function(){return o.setStateAt(a.current+1)},prev:function(){return o.setStateAt(a.current-1)},setStateAt:function(r){t()&&e.length&&r!==a.current&&(a.current=r>=0?r%e.length:e.length+r%e.length,n())},setState:function(r){if(t()){var o=e.length?e.indexOf(r):-1;if(-1===o)throw new Error("State '"+r+"' is not a valid state (does not exist in state list)");a.current=o,n()}}}}),[e]);return(0,d.__assign)({state:e[a.current],currentIndex:a.current},o)}const Xt=function(e,t){void 0===t&&(t=200);var n=(0,r.useState)(e),a=n[0],o=n[1],i=(0,r.useRef)(),l=(0,r.useRef)(null),s=(0,r.useRef)(0);return(0,r.useEffect)((function(){if(i.current)l.current=e,s.current=!0;else{o(e);var n=function(){s.current?(s.current=!1,o(l.current),i.current=setTimeout(n,t)):i.current=void 0};i.current=setTimeout(n,t)}}),[e]),st((function(){i.current&&clearTimeout(i.current)})),a};const Kt=function(e,t,n){void 0===t&&(t=200);var a=(0,r.useState)(null),o=a[0],i=a[1],l=(0,r.useRef)(),s=(0,r.useRef)();return(0,r.useEffect)((function(){if(l.current)s.current=n;else{i(e.apply(void 0,n));var r=function(){s.current?(i(e.apply(void 0,s.current)),s.current=void 0,l.current=setTimeout(r,t)):l.current=void 0};l.current=setTimeout(r,t)}}),n),st((function(){l.current&&clearTimeout(l.current)})),o};function Jt(e){return void 0===e&&(e=0),te(U(),e)}var en={restoreOnUnmount:!1};const tn="undefined"!=typeof document?function(e,t){void 0===t&&(t=en);var n=(0,r.useRef)(document.title);document.title!==e&&(document.title=e),(0,r.useEffect)((function(){return t&&t.restoreOnUnmount?function(){document.title=n.current}:void 0}),[])}:function(e){};var nn=n(75534);const rn=function(e,t,n){return void 0===e&&(e="inCirc"),void 0===t&&(t=200),void 0===n&&(n=0),(0,nn.U[e])(Dt(t,n))};const an=function(){var e=(0,r.useRef)(!1);return le((function(){return function(){e.current=!0}})),(0,r.useMemo)((function(){return function(t,n){return new Promise((function(r,a){t.then((function(t){e.current||r(t)}),(function(t){e.current?n?n(t):console.error("useUnmountPromise",t):a(t)}))}))}}),[])};function on(e,t){void 0===t&&(t=[]);var n=Fe(t),r=n[0],a=n[1];return[r,(0,d.__assign)((0,d.__assign)({},a),{upsert:function(t){a.upsert(e,t)}})]}const ln=E&&"vibrate"in navigator?function(e,t,n){void 0===e&&(e=!0),void 0===t&&(t=[1e3,1e3]),void 0===n&&(n=!0),(0,r.useEffect)((function(){var r;if(e&&(navigator.vibrate(t),n)){var a=t instanceof Array?t.reduce((function(e,t){return e+t})):t;r=setInterval((function(){navigator.vibrate(t)}),a)}return function(){e&&(navigator.vibrate(0),n&&clearInterval(r))}}),[e])}:w;const sn=b("video");function un(e,t,n){void 0===n&&(n=[void 0]);var a=(0,r.useRef)(t),o=(0,r.useRef)(e);a.current=t,o.current=e;var i=(0,r.useState)(n),l=i[0],s=i[1],u=(0,r.useCallback)((function(){a.current.length>=2?a.current(o.current,s):s(a.current(o.current))}),[s]);return(0,r.useEffect)((function(){u()}),[e]),[l,u]}var cn=function(e){if("undefined"==typeof document)return 0;if(document.body&&(!document.readyState||"loading"!==document.readyState)){if(!0!==e&&"number"==typeof cn.__cache)return cn.__cache;var t=document.createElement("div"),n=t.style;n.display="block",n.position="absolute",n.width="100px",n.height="100px",n.left="-999px",n.top="-999px",n.overflow="scroll",document.body.insertBefore(t,null);var r=t.clientWidth;if(0!==r)return cn.__cache=100-r,document.body.removeChild(t),cn.__cache;document.body.removeChild(t)}};function dn(){var e=(0,r.useState)(cn()),t=e[0],n=e[1];return(0,r.useEffect)((function(){if(void 0===t){var e=requestAnimationFrame((function(){n(cn())}));return function(){return cancelAnimationFrame(e)}}}),[]),t}function fn(e,t,n){if(void 0===n&&(n=[void 0]),"object"!=typeof e)throw new Error("states expected to be an object or array, got "+typeof e);var a=(0,r.useRef)(t),o=(0,r.useRef)(e);a.current=t,o.current=e;var i=(0,r.useState)(n),l=i[0],s=i[1],u=(0,r.useCallback)((function(){a.current.length>=2?a.current(o.current,s):s(a.current(o.current))}),[s]);return(0,r.useEffect)((function(){u()}),Object.values(e)),[l,u]}const pn=function(){var e=ut((function(){return{x:_?window.pageXOffset:0,y:_?window.pageYOffset:0}})),t=e[0],n=e[1];return(0,r.useEffect)((function(){var e=function(){n((function(e){var t=window.pageXOffset,n=window.pageYOffset;return e.x!==t||e.y!==n?{x:t,y:n}:e}))};return e(),x(window,"scroll",e,{capture:!1,passive:!0}),function(){k(window,"scroll",e)}}),[]),t};const hn=function(e,t){void 0===e&&(e=1/0),void 0===t&&(t=1/0);var n=ut({width:_?window.innerWidth:e,height:_?window.innerHeight:t}),a=n[0],o=n[1];return(0,r.useEffect)((function(){if(_){var e=function(){o({width:window.innerWidth,height:window.innerHeight})};return x(window,"resize",e),function(){k(window,"resize",e)}}}),[]),a};var mn={x:0,y:0,width:0,height:0,top:0,left:0,bottom:0,right:0};const gn=_&&void 0!==window.ResizeObserver?function(){var e=(0,r.useState)(null),t=e[0],n=e[1],a=(0,r.useState)(mn),o=a[0],i=a[1],l=(0,r.useMemo)((function(){return new window.ResizeObserver((function(e){if(e[0]){var t=e[0].contentRect,n=t.x,r=t.y,a=t.width,o=t.height,l=t.top,s=t.left,u=t.bottom,c=t.right;i({x:n,y:r,width:a,height:o,top:l,left:s,bottom:u,right:c})}}))}),[]);return Y((function(){if(t)return l.observe(t),function(){l.disconnect()}}),[t]),[n,o]}:function(){return[w,mn]};var vn;!function(e){e.ZOOMING_IN="ZOOMING_IN",e.ZOOMING_OUT="ZOOMING_OUT"}(vn||(vn={}));const bn=function(e){var t=(0,r.useMemo)((function(){return{evCache:[],prevDiff:-1}}),[e.current]),n=(0,r.useState)(),a=n[0],o=n[1],i=function(e){for(var n=0;n<t.evCache.length;n++)if(e.pointerId==t.evCache[n].pointerId){t.evCache[n]=e;break}if(2==t.evCache.length){var r=Math.abs(t.evCache[0].clientX-t.evCache[1].clientX);t.prevDiff>0&&(r>t.prevDiff&&o([vn.ZOOMING_IN,r]),r<t.prevDiff&&o([vn.ZOOMING_OUT,r])),t.prevDiff=r}},l=function(e){t.evCache.push(e)},s=function(e){u(e),t.evCache.length<2&&(t.prevDiff=-1)},u=function(e){for(var n=0;n<t.evCache.length;n++)if(t.evCache[n].pointerId==e.pointerId){t.evCache.splice(n,1);break}};return(0,r.useEffect)((function(){(null==e?void 0:e.current)&&(e.current.onpointerdown=l,e.current.onpointermove=i,e.current.onpointerup=s,e.current.onpointercancel=s,e.current.onpointerout=s,e.current.onpointerleave=s)}),[null==e?void 0:e.current]),a?{zoomingState:a[0],pinchState:a[1]}:{zoomingState:null,pinchState:0}};function yn(){return++(0,r.useRef)(0).current}const wn=function(e){void 0===e&&(e=new Set);var t=(0,r.useState)(e),n=t[0],a=t[1],o=(0,r.useMemo)((function(){return{add:function(e){return a((function(t){return new Set((0,d.__spreadArrays)(Array.from(t),[e]))}))},remove:function(e){return a((function(t){return new Set(Array.from(t).filter((function(t){return t!==e})))}))},toggle:function(e){return a((function(t){return t.has(e)?new Set(Array.from(t).filter((function(t){return t!==e}))):new Set((0,d.__spreadArrays)(Array.from(t),[e]))}))},reset:function(){return a(e)}}}),[a]),i=(0,d.__assign)({has:(0,r.useCallback)((function(e){return n.has(e)}),[n])},o);return[n,i]};function xn(e){var t={state:e instanceof Function?e():e,setState:function(e){t.state=H(e,t.state),t.setters.forEach((function(e){return e(t.state)}))},setters:[]};return function(){var e=(0,r.useState)(t.state),n=e[0],a=e[1];return le((function(){return function(){t.setters=t.setters.filter((function(e){return e!==a}))}})),Y((function(){t.setters.includes(a)||t.setters.push(a)})),[n,t.setState]}}var kn=function(){var e=(0,r.useState)((function(){return window.location.hash})),t=e[0],n=e[1],a=(0,r.useCallback)((function(){n(window.location.hash)}),[]);Me((function(){x(window,"hashchange",a)}),(function(){k(window,"hashchange",a)}));var o=(0,r.useCallback)((function(e){e!==t&&(window.location.hash=e)}),[t]);return[t,o]}},72408:(e,t,n)=>{"use strict";var r=n(27418),a=60103,o=60106;t.Fragment=60107,t.StrictMode=60108,t.Profiler=60114;var i=60109,l=60110,s=60112;t.Suspense=60113;var u=60115,c=60116;if("function"==typeof Symbol&&Symbol.for){var d=Symbol.for;a=d("react.element"),o=d("react.portal"),t.Fragment=d("react.fragment"),t.StrictMode=d("react.strict_mode"),t.Profiler=d("react.profiler"),i=d("react.provider"),l=d("react.context"),s=d("react.forward_ref"),t.Suspense=d("react.suspense"),u=d("react.memo"),c=d("react.lazy")}var f="function"==typeof Symbol&&Symbol.iterator;function p(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},m={};function g(e,t,n){this.props=e,this.context=t,this.refs=m,this.updater=n||h}function v(){}function b(e,t,n){this.props=e,this.context=t,this.refs=m,this.updater=n||h}g.prototype.isReactComponent={},g.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error(p(85));this.updater.enqueueSetState(this,e,t,"setState")},g.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},v.prototype=g.prototype;var y=b.prototype=new v;y.constructor=b,r(y,g.prototype),y.isPureReactComponent=!0;var w={current:null},x=Object.prototype.hasOwnProperty,k={key:!0,ref:!0,__self:!0,__source:!0};function _(e,t,n){var r,o={},i=null,l=null;if(null!=t)for(r in void 0!==t.ref&&(l=t.ref),void 0!==t.key&&(i=""+t.key),t)x.call(t,r)&&!k.hasOwnProperty(r)&&(o[r]=t[r]);var s=arguments.length-2;if(1===s)o.children=n;else if(1<s){for(var u=Array(s),c=0;c<s;c++)u[c]=arguments[c+2];o.children=u}if(e&&e.defaultProps)for(r in s=e.defaultProps)void 0===o[r]&&(o[r]=s[r]);return{$$typeof:a,type:e,key:i,ref:l,props:o,_owner:w.current}}function E(e){return"object"==typeof e&&null!==e&&e.$$typeof===a}var S=/\/+/g;function C(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,(function(e){return t[e]}))}(""+e.key):t.toString(36)}function T(e,t,n,r,i){var l=typeof e;"undefined"!==l&&"boolean"!==l||(e=null);var s=!1;if(null===e)s=!0;else switch(l){case"string":case"number":s=!0;break;case"object":switch(e.$$typeof){case a:case o:s=!0}}if(s)return i=i(s=e),e=""===r?"."+C(s,0):r,Array.isArray(i)?(n="",null!=e&&(n=e.replace(S,"$&/")+"/"),T(i,t,n,"",(function(e){return e}))):null!=i&&(E(i)&&(i=function(e,t){return{$$typeof:a,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(i,n+(!i.key||s&&s.key===i.key?"":(""+i.key).replace(S,"$&/")+"/")+e)),t.push(i)),1;if(s=0,r=""===r?".":r+":",Array.isArray(e))for(var u=0;u<e.length;u++){var c=r+C(l=e[u],u);s+=T(l,t,n,c,i)}else if(c=function(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=f&&e[f]||e["@@iterator"])?e:null}(e),"function"==typeof c)for(e=c.call(e),u=0;!(l=e.next()).done;)s+=T(l=l.value,t,n,c=r+C(l,u++),i);else if("object"===l)throw t=""+e,Error(p(31,"[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t));return s}function O(e,t,n){if(null==e)return e;var r=[],a=0;return T(e,r,"","",(function(e){return t.call(n,e,a++)})),r}function D(e){if(-1===e._status){var t=e._result;t=t(),e._status=0,e._result=t,t.then((function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)}),(function(t){0===e._status&&(e._status=2,e._result=t)}))}if(1===e._status)return e._result;throw e._result}var P={current:null};function N(){var e=P.current;if(null===e)throw Error(p(321));return e}var I={ReactCurrentDispatcher:P,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:w,IsSomeRendererActing:{current:!1},assign:r};t.Children={map:O,forEach:function(e,t,n){O(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return O(e,(function(){t++})),t},toArray:function(e){return O(e,(function(e){return e}))||[]},only:function(e){if(!E(e))throw Error(p(143));return e}},t.Component=g,t.PureComponent=b,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=I,t.cloneElement=function(e,t,n){if(null==e)throw Error(p(267,e));var o=r({},e.props),i=e.key,l=e.ref,s=e._owner;if(null!=t){if(void 0!==t.ref&&(l=t.ref,s=w.current),void 0!==t.key&&(i=""+t.key),e.type&&e.type.defaultProps)var u=e.type.defaultProps;for(c in t)x.call(t,c)&&!k.hasOwnProperty(c)&&(o[c]=void 0===t[c]&&void 0!==u?u[c]:t[c])}var c=arguments.length-2;if(1===c)o.children=n;else if(1<c){u=Array(c);for(var d=0;d<c;d++)u[d]=arguments[d+2];o.children=u}return{$$typeof:a,type:e.type,key:i,ref:l,props:o,_owner:s}},t.createContext=function(e,t){return void 0===t&&(t=null),(e={$$typeof:l,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:i,_context:e},e.Consumer=e},t.createElement=_,t.createFactory=function(e){var t=_.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:s,render:e}},t.isValidElement=E,t.lazy=function(e){return{$$typeof:c,_payload:{_status:-1,_result:e},_init:D}},t.memo=function(e,t){return{$$typeof:u,type:e,compare:void 0===t?null:t}},t.useCallback=function(e,t){return N().useCallback(e,t)},t.useContext=function(e,t){return N().useContext(e,t)},t.useDebugValue=function(){},t.useEffect=function(e,t){return N().useEffect(e,t)},t.useImperativeHandle=function(e,t,n){return N().useImperativeHandle(e,t,n)},t.useLayoutEffect=function(e,t){return N().useLayoutEffect(e,t)},t.useMemo=function(e,t){return N().useMemo(e,t)},t.useReducer=function(e,t,n){return N().useReducer(e,t,n)},t.useRef=function(e){return N().useRef(e)},t.useState=function(e){return N().useState(e)},t.version="17.0.2"},67294:(e,t,n)=>{"use strict";e.exports=n(72408)},60053:(e,t)=>{"use strict";var n,r,a,o;if("object"==typeof performance&&"function"==typeof performance.now){var i=performance;t.unstable_now=function(){return i.now()}}else{var l=Date,s=l.now();t.unstable_now=function(){return l.now()-s}}if("undefined"==typeof window||"function"!=typeof MessageChannel){var u=null,c=null,d=function(){if(null!==u)try{var e=t.unstable_now();u(!0,e),u=null}catch(n){throw setTimeout(d,0),n}};n=function(e){null!==u?setTimeout(n,0,e):(u=e,setTimeout(d,0))},r=function(e,t){c=setTimeout(e,t)},a=function(){clearTimeout(c)},t.unstable_shouldYield=function(){return!1},o=t.unstable_forceFrameRate=function(){}}else{var f=window.setTimeout,p=window.clearTimeout;if("undefined"!=typeof console){var h=window.cancelAnimationFrame;"function"!=typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),"function"!=typeof h&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")}var m=!1,g=null,v=-1,b=5,y=0;t.unstable_shouldYield=function(){return t.unstable_now()>=y},o=function(){},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):b=0<e?Math.floor(1e3/e):5};var w=new MessageChannel,x=w.port2;w.port1.onmessage=function(){if(null!==g){var e=t.unstable_now();y=e+b;try{g(!0,e)?x.postMessage(null):(m=!1,g=null)}catch(n){throw x.postMessage(null),n}}else m=!1},n=function(e){g=e,m||(m=!0,x.postMessage(null))},r=function(e,n){v=f((function(){e(t.unstable_now())}),n)},a=function(){p(v),v=-1}}function k(e,t){var n=e.length;e.push(t);e:for(;;){var r=n-1>>>1,a=e[r];if(!(void 0!==a&&0<S(a,t)))break e;e[r]=t,e[n]=a,n=r}}function _(e){return void 0===(e=e[0])?null:e}function E(e){var t=e[0];if(void 0!==t){var n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,a=e.length;r<a;){var o=2*(r+1)-1,i=e[o],l=o+1,s=e[l];if(void 0!==i&&0>S(i,n))void 0!==s&&0>S(s,i)?(e[r]=s,e[l]=n,r=l):(e[r]=i,e[o]=n,r=o);else{if(!(void 0!==s&&0>S(s,n)))break e;e[r]=s,e[l]=n,r=l}}}return t}return null}function S(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var C=[],T=[],O=1,D=null,P=3,N=!1,I=!1,A=!1;function L(e){for(var t=_(T);null!==t;){if(null===t.callback)E(T);else{if(!(t.startTime<=e))break;E(T),t.sortIndex=t.expirationTime,k(C,t)}t=_(T)}}function R(e){if(A=!1,L(e),!I)if(null!==_(C))I=!0,n(j);else{var t=_(T);null!==t&&r(R,t.startTime-e)}}function j(e,n){I=!1,A&&(A=!1,a()),N=!0;var o=P;try{for(L(n),D=_(C);null!==D&&(!(D.expirationTime>n)||e&&!t.unstable_shouldYield());){var i=D.callback;if("function"==typeof i){D.callback=null,P=D.priorityLevel;var l=i(D.expirationTime<=n);n=t.unstable_now(),"function"==typeof l?D.callback=l:D===_(C)&&E(C),L(n)}else E(C);D=_(C)}if(null!==D)var s=!0;else{var u=_(T);null!==u&&r(R,u.startTime-n),s=!1}return s}finally{D=null,P=o,N=!1}}var M=o;t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){I||N||(I=!0,n(j))},t.unstable_getCurrentPriorityLevel=function(){return P},t.unstable_getFirstCallbackNode=function(){return _(C)},t.unstable_next=function(e){switch(P){case 1:case 2:case 3:var t=3;break;default:t=P}var n=P;P=t;try{return e()}finally{P=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=M,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=P;P=e;try{return t()}finally{P=n}},t.unstable_scheduleCallback=function(e,o,i){var l=t.unstable_now();switch("object"==typeof i&&null!==i?i="number"==typeof(i=i.delay)&&0<i?l+i:l:i=l,e){case 1:var s=-1;break;case 2:s=250;break;case 5:s=1073741823;break;case 4:s=1e4;break;default:s=5e3}return e={id:O++,callback:o,priorityLevel:e,startTime:i,expirationTime:s=i+s,sortIndex:-1},i>l?(e.sortIndex=i,k(T,e),null===_(C)&&e===_(T)&&(A?a():A=!0,r(R,i-l))):(e.sortIndex=s,k(C,e),I||N||(I=!0,n(j))),e},t.unstable_wrapCallback=function(e){var t=P;return function(){var n=P;P=t;try{return e.apply(this,arguments)}finally{P=n}}}},63840:(e,t,n)=>{"use strict";e.exports=n(60053)},10577:e=>{!function(){"use strict";var t="undefined"!=typeof window&&void 0!==window.document?window.document:{},n=e.exports,r=function(){for(var e,n=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],r=0,a=n.length,o={};r<a;r++)if((e=n[r])&&e[1]in t){for(r=0;r<e.length;r++)o[n[0][r]]=e[r];return o}return!1}(),a={change:r.fullscreenchange,error:r.fullscreenerror},o={request:function(e,n){return new Promise(function(a,o){var i=function(){this.off("change",i),a()}.bind(this);this.on("change",i);var l=(e=e||t.documentElement)[r.requestFullscreen](n);l instanceof Promise&&l.then(i).catch(o)}.bind(this))},exit:function(){return new Promise(function(e,n){if(this.isFullscreen){var a=function(){this.off("change",a),e()}.bind(this);this.on("change",a);var o=t[r.exitFullscreen]();o instanceof Promise&&o.then(a).catch(n)}else e()}.bind(this))},toggle:function(e,t){return this.isFullscreen?this.exit():this.request(e,t)},onchange:function(e){this.on("change",e)},onerror:function(e){this.on("error",e)},on:function(e,n){var r=a[e];r&&t.addEventListener(r,n,!1)},off:function(e,n){var r=a[e];r&&t.removeEventListener(r,n,!1)},raw:r};r?(Object.defineProperties(o,{isFullscreen:{get:function(){return Boolean(t[r.fullscreenElement])}},element:{enumerable:!0,get:function(){return t[r.fullscreenElement]}},isEnabled:{enumerable:!0,get:function(){return Boolean(t[r.fullscreenEnabled])}}}),n?e.exports=o:window.screenfull=o):n?e.exports={isEnabled:!1}:window.screenfull={isEnabled:!1}}()},96774:e=>{e.exports=function(e,t,n,r){var a=n?n.call(r,e,t):void 0;if(void 0!==a)return!!a;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var o=Object.keys(e),i=Object.keys(t);if(o.length!==i.length)return!1;for(var l=Object.prototype.hasOwnProperty.bind(t),s=0;s<o.length;s++){var u=o[s];if(!l(u))return!1;var c=e[u],d=t[u];if(!1===(a=n?n.call(r,c,d,u):void 0)||void 0===a&&c!==d)return!1}return!0}},11742:e=>{e.exports=function(){var e=document.getSelection();if(!e.rangeCount)return function(){};for(var t=document.activeElement,n=[],r=0;r<e.rangeCount;r++)n.push(e.getRangeAt(r));switch(t.tagName.toUpperCase()){case"INPUT":case"TEXTAREA":t.blur();break;default:t=null}return e.removeAllRanges(),function(){"Caret"===e.type&&e.removeAllRanges(),e.rangeCount||n.forEach((function(t){e.addRange(t)})),t&&t.focus()}}},75534:(e,t)=>{"use strict";t.U={linear:function(e){return e},quadratic:function(e){return e*(-e*e*e+4*e*e-6*e+4)},cubic:function(e){return e*(4*e*e-9*e+6)},elastic:function(e){return e*(33*e*e*e*e-106*e*e*e+126*e*e-67*e+15)},inQuad:function(e){return e*e},outQuad:function(e){return e*(2-e)},inOutQuad:function(e){return e<.5?2*e*e:(4-2*e)*e-1},inCubic:function(e){return e*e*e},outCubic:function(e){return--e*e*e+1},inOutCubic:function(e){return e<.5?4*e*e*e:(e-1)*(2*e-2)*(2*e-2)+1},inQuart:function(e){return e*e*e*e},outQuart:function(e){return 1- --e*e*e*e},inOutQuart:function(e){return e<.5?8*e*e*e*e:1-8*--e*e*e*e},inQuint:function(e){return e*e*e*e*e},outQuint:function(e){return 1+--e*e*e*e*e},inOutQuint:function(e){return e<.5?16*e*e*e*e*e:1+16*--e*e*e*e*e},inSine:function(e){return 1-Math.cos(e*(Math.PI/2))},outSine:function(e){return Math.sin(e*(Math.PI/2))},inOutSine:function(e){return-(Math.cos(Math.PI*e)-1)/2},inExpo:function(e){return Math.pow(2,10*(e-1))},outExpo:function(e){return 1-Math.pow(2,-10*e)},inOutExpo:function(e){return(e/=.5)<1?Math.pow(2,10*(e-1))/2:(e--,(2-Math.pow(2,-10*e))/2)},inCirc:function(e){return 1-Math.sqrt(1-e*e)},outCirc:function(e){return Math.sqrt(1-(e-=1)*e)},inOutCirc:function(e){return(e/=.5)<1?-(Math.sqrt(1-e*e)-1)/2:(e-=2,(Math.sqrt(1-e*e)+1)/2)}}},70655:(e,t,n)=>{"use strict";n.r(t),n.d(t,{__assign:()=>o,__asyncDelegator:()=>S,__asyncGenerator:()=>E,__asyncValues:()=>C,__await:()=>_,__awaiter:()=>h,__classPrivateFieldGet:()=>N,__classPrivateFieldIn:()=>A,__classPrivateFieldSet:()=>I,__createBinding:()=>g,__decorate:()=>l,__esDecorate:()=>u,__exportStar:()=>v,__extends:()=>a,__generator:()=>m,__importDefault:()=>P,__importStar:()=>D,__makeTemplateObject:()=>T,__metadata:()=>p,__param:()=>s,__propKey:()=>d,__read:()=>y,__rest:()=>i,__runInitializers:()=>c,__setFunctionName:()=>f,__spread:()=>w,__spreadArray:()=>k,__spreadArrays:()=>x,__values:()=>b});var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)};function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var o=function(){return o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e},o.apply(this,arguments)};function i(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n}function l(e,t,n,r){var a,o=arguments.length,i=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(i=(o<3?a(i):o>3?a(t,n,i):a(t,n))||i);return o>3&&i&&Object.defineProperty(t,n,i),i}function s(e,t){return function(n,r){t(n,r,e)}}function u(e,t,n,r,a,o){function i(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var l,s=r.kind,u="getter"===s?"get":"setter"===s?"set":"value",c=!t&&e?r.static?e:e.prototype:null,d=t||(c?Object.getOwnPropertyDescriptor(c,r.name):{}),f=!1,p=n.length-1;p>=0;p--){var h={};for(var m in r)h[m]="access"===m?{}:r[m];for(var m in r.access)h.access[m]=r.access[m];h.addInitializer=function(e){if(f)throw new TypeError("Cannot add initializers after decoration has completed");o.push(i(e||null))};var g=(0,n[p])("accessor"===s?{get:d.get,set:d.set}:d[u],h);if("accessor"===s){if(void 0===g)continue;if(null===g||"object"!=typeof g)throw new TypeError("Object expected");(l=i(g.get))&&(d.get=l),(l=i(g.set))&&(d.set=l),(l=i(g.init))&&a.push(l)}else(l=i(g))&&("field"===s?a.push(l):d[u]=l)}c&&Object.defineProperty(c,r.name,d),f=!0}function c(e,t,n){for(var r=arguments.length>2,a=0;a<t.length;a++)n=r?t[a].call(e,n):t[a].call(e);return r?n:void 0}function d(e){return"symbol"==typeof e?e:"".concat(e)}function f(e,t,n){return"symbol"==typeof t&&(t=t.description?"[".concat(t.description,"]"):""),Object.defineProperty(e,"name",{configurable:!0,value:n?"".concat(n," ",t):t})}function p(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function h(e,t,n,r){return new(n||(n=Promise))((function(a,o){function i(e){try{s(r.next(e))}catch(t){o(t)}}function l(e){try{s(r.throw(e))}catch(t){o(t)}}function s(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,l)}s((r=r.apply(e,t||[])).next())}))}function m(e,t){var n,r,a,o,i={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return o={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function l(l){return function(s){return function(l){if(n)throw new TypeError("Generator is already executing.");for(;o&&(o=0,l[0]&&(i=0)),i;)try{if(n=1,r&&(a=2&l[0]?r.return:l[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,l[1])).done)return a;switch(r=0,a&&(l=[2&l[0],a.value]),l[0]){case 0:case 1:a=l;break;case 4:return i.label++,{value:l[1],done:!1};case 5:i.label++,r=l[1],l=[0];continue;case 7:l=i.ops.pop(),i.trys.pop();continue;default:if(!(a=i.trys,(a=a.length>0&&a[a.length-1])||6!==l[0]&&2!==l[0])){i=0;continue}if(3===l[0]&&(!a||l[1]>a[0]&&l[1]<a[3])){i.label=l[1];break}if(6===l[0]&&i.label<a[1]){i.label=a[1],a=l;break}if(a&&i.label<a[2]){i.label=a[2],i.ops.push(l);break}a[2]&&i.ops.pop(),i.trys.pop();continue}l=t.call(e,i)}catch(s){l=[6,s],r=0}finally{n=a=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}([l,s])}}}var g=Object.create?function(e,t,n,r){void 0===r&&(r=n);var a=Object.getOwnPropertyDescriptor(t,n);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,a)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]};function v(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||g(t,e,n)}function b(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function y(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,a,o=n.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)i.push(r.value)}catch(l){a={error:l}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(a)throw a.error}}return i}function w(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(y(arguments[t]));return e}function x(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var r=Array(e),a=0;for(t=0;t<n;t++)for(var o=arguments[t],i=0,l=o.length;i<l;i++,a++)r[a]=o[i];return r}function k(e,t,n){if(n||2===arguments.length)for(var r,a=0,o=t.length;a<o;a++)!r&&a in t||(r||(r=Array.prototype.slice.call(t,0,a)),r[a]=t[a]);return e.concat(r||Array.prototype.slice.call(t))}function _(e){return this instanceof _?(this.v=e,this):new _(e)}function E(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r,a=n.apply(e,t||[]),o=[];return r={},i("next"),i("throw"),i("return"),r[Symbol.asyncIterator]=function(){return this},r;function i(e){a[e]&&(r[e]=function(t){return new Promise((function(n,r){o.push([e,t,n,r])>1||l(e,t)}))})}function l(e,t){try{(n=a[e](t)).value instanceof _?Promise.resolve(n.value.v).then(s,u):c(o[0][2],n)}catch(r){c(o[0][3],r)}var n}function s(e){l("next",e)}function u(e){l("throw",e)}function c(e,t){e(t),o.shift(),o.length&&l(o[0][0],o[0][1])}}function S(e){var t,n;return t={},r("next"),r("throw",(function(e){throw e})),r("return"),t[Symbol.iterator]=function(){return this},t;function r(r,a){t[r]=e[r]?function(t){return(n=!n)?{value:_(e[r](t)),done:!1}:a?a(t):t}:a}}function C(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=b(e),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise((function(r,a){(function(e,t,n,r){Promise.resolve(r).then((function(t){e({value:t,done:n})}),t)})(r,a,(t=e[n](t)).done,t.value)}))}}}function T(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}var O=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t};function D(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&g(t,e,n);return O(t,e),t}function P(e){return e&&e.__esModule?e:{default:e}}function N(e,t,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(e):r?r.value:t.get(e)}function I(e,t,n,r,a){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!a)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!a:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?a.call(e,n):a?a.value=n:t.set(e,n),n}function A(e,t){if(null===t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("Cannot use 'in' operator on non-object");return"function"==typeof e?t===e:e.has(t)}},53250:(e,t,n)=>{"use strict";var r=n(67294);var a="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},o=r.useState,i=r.useEffect,l=r.useLayoutEffect,s=r.useDebugValue;function u(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!a(e,n)}catch(r){return!0}}var c="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var n=t(),r=o({inst:{value:n,getSnapshot:t}}),a=r[0].inst,c=r[1];return l((function(){a.value=n,a.getSnapshot=t,u(a)&&c({inst:a})}),[e,n,t]),i((function(){return u(a)&&c({inst:a}),e((function(){u(a)&&c({inst:a})}))}),[e]),s(n),n};t.useSyncExternalStore=void 0!==r.useSyncExternalStore?r.useSyncExternalStore:c},61688:(e,t,n)=>{"use strict";e.exports=n(53250)},36809:(e,t,n)=>{"use strict";n.d(t,{default:()=>r});const r={title:"Waku Documentation",url:"https://docs.waku.org",baseUrl:"/",onBrokenLinks:"throw",onBrokenMarkdownLinks:"warn",i18n:{defaultLocale:"en-GB",locales:["en-GB"],path:"i18n",localeConfigs:{}},presets:[["@acid-info/logos-docusaurus-preset",{businessUnit:"Waku",customSiteConfig:!0,docs:{routeBasePath:"/",path:"docs",sidebarPath:"/home/jenkins/workspace/website/dev-docs.waku.org/sidebars.js",editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/",showLastUpdateTime:!0,breadcrumbs:!1},theme:{name:"default",options:{customCss:["/home/jenkins/workspace/website/dev-docs.waku.org/src/css/custom.scss"]}}}]],staticDirectories:["static","/home/jenkins/workspace/website/dev-docs.waku.org/node_modules/@acid-info/logos-docusaurus-preset/static/common","/home/jenkins/workspace/website/dev-docs.waku.org/node_modules/@acid-info/logos-docusaurus-preset/static/Waku","/home/jenkins/workspace/website/dev-docs.waku.org/node_modules/@acid-info/logos-docusaurus-theme/lib/client/static/"],plugins:[["@acid-info/docusaurus-fathom",{siteId:"FUTMI",scriptUrl:"https://fathom.status.im/tracker.js"}]],themeConfig:{docs:{sidebar:{hideable:!1,autoCollapseCategories:!1},versionPersistence:"localStorage"},metadata:[{name:"keywords",content:"waku, web3"},{name:"description",content:"Waku is the communication layer for Web3. Decentralized communication that scales."},{name:"image",content:"theme/image/preview-image.png"}],colorMode:{disableSwitch:!1,defaultMode:"dark",respectPrefersColorScheme:!0},navbar:{title:"",logo:{alt:"Waku",src:"theme/image/logo-black.svg",srcDark:"theme/image/logo.svg",height:26},hideOnScroll:!0,items:[{type:"search",position:"left"},{type:"docSidebar",position:"left",sidebarId:"guides",label:"Guides"},{type:"docSidebar",position:"left",sidebarId:"learn",label:"Learn"},{type:"docSidebar",position:"left",sidebarId:"research",label:"Research"},{href:"https://discord.waku.org",position:"left",label:"Discord"},{href:"https://github.com/waku-org",position:"right",className:"header-github-link",title:"Waku GitHub repository"}]},footer:{logo:{alt:"Waku",src:"theme/image/logo.svg",href:"/",width:22},links:[{title:"Guides",items:[{to:"/",label:"Getting Started"},{to:"/guides/nwaku/run-docker-compose",label:"Run a Nwaku Node"},{to:"/guides/js-waku/",label:"JavaScript Waku SDK"}]},{title:"Community",items:[{href:"https://discord.waku.org/",label:"Discord"},{href:"https://twitter.com/waku_org/",label:"X"},{href:"https://t.me/waku_org/",label:"Telegram"},{href:"https://forum.vac.dev/",label:"Vac Forum"},{href:"https://github.com/waku-org/bounties/",label:"Bounties"}]},{title:"Resources",items:[{href:"https://github.com/waku-org/",label:"GitHub"},{href:"https://blog.waku.org/",label:"Blog"},{href:"https://rfc.vac.dev/waku",label:"Waku RFCs"},{href:"https://github.com/waku-org/awesome-waku/",label:"Awesome Waku"}]},{title:"Legal",items:[{href:"/terms",label:"Terms of Use"},{href:"/privacy-policy",label:"Privacy Policy"},{href:"/rules-of-engagement",label:"Rules of Engagement"}]},{title:"shared:Research",items:[{href:"https://vac.dev",label:"VacP2P"},{href:"https://afaik.institute",label:"AFAIK"}]},{title:"shared:Infrastructure",items:[{href:"https://waku.org/",label:"Waku"},{href:"https://nimbus.team/",label:"Nimbus"},{href:"https://codex.storage",label:"Codex"},{href:"https://nomos.tech",label:"Nomos"}]},{title:"shared:Creative Studio",items:[{href:"https://acid.info",label:"Acid.info"}]},{title:"shared:Movement",items:[{href:"https://logos.co",label:"Logos"}]},{title:"shared:User-facing products",items:[{href:"https://status.im",label:"Status"},{href:"https://keycard.tech",label:"Keycard"}]}],copyright:"Waku \xa9 2024<br/>All rights reserved.",style:"light"},prism:{theme:{plain:{color:"#000000",backgroundColor:"rgba(var(--lsd-surface-secondary), 0.08)"},styles:[{types:["comment"],style:{color:"rgb(0, 128, 0)"}},{types:["builtin"],style:{color:"rgb(0, 112, 193)"}},{types:["number","variable","inserted"],style:{color:"rgb(9, 134, 88)"}},{types:["operator"],style:{color:"rgb(0, 0, 0)"}},{types:["constant","char"],style:{color:"rgb(129, 31, 63)"}},{types:["tag"],style:{color:"rgb(128, 0, 0)"}},{types:["attr-name"],style:{color:"rgb(255, 0, 0)"}},{types:["deleted","string"],style:{color:"rgb(163, 21, 21)"}},{types:["changed","punctuation"],style:{color:"rgb(4, 81, 165)"}},{types:["function","keyword"],style:{color:"rgb(0, 0, 255)"}},{types:["class-name"],style:{color:"rgb(38, 127, 153)"}}]},darkTheme:{plain:{color:"#F8F8F2",backgroundColor:"rgba(var(--lsd-surface-secondary), 0.08)"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},additionalLanguages:[],magicComments:[{className:"theme-code-block-highlighted-line",line:"highlight-next-line",block:{start:"highlight-start",end:"highlight-end"}}]},tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3},mermaid:{theme:{dark:"dark",light:"default"},options:{}}},markdown:{mermaid:!0},baseUrlIssueBanner:!0,onDuplicateRoutes:"warn",customFields:{businessUnits:"Waku","logos-docusaurus-theme":{customCss:["/home/jenkins/workspace/website/dev-docs.waku.org/src/css/custom.scss"],docs:{},id:"default"}},themes:[],scripts:[],headTags:[],stylesheets:[],clientModules:[],tagline:"",titleDelimiter:"|",noIndex:!1,favicon:"theme/image/favicon.ico"}},87462:(e,t,n)=>{"use strict";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},r.apply(this,arguments)}n.d(t,{Z:()=>r})},75068:(e,t,n)=>{"use strict";function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}function a(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)}n.d(t,{Z:()=>a})},63366:(e,t,n)=>{"use strict";function r(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}n.d(t,{Z:()=>r})},38776:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=!0,a="Invariant failed";function o(e,t){if(!e){if(r)throw new Error(a);var n="function"==typeof t?t():t,o=n?"".concat(a,": ").concat(n):a;throw new Error(o)}}},57529:e=>{"use strict";e.exports={}},16887:e=>{"use strict";e.exports=JSON.parse('{"/-c34":{"__comp":"1be78505","__context":{"plugin":"3b0eafbc"},"versionMetadata":"935f2afb"},"/-0f1":{"__comp":"17896441","content":"c9ea0dcf"},"/guides/js-waku/-9af":{"__comp":"17896441","content":"488ca57d"},"/guides/js-waku/configure-discovery-dfe":{"__comp":"17896441","content":"4bb5c570"},"/guides/js-waku/debug-waku-dapp-c0d":{"__comp":"17896441","content":"e610d71e"},"/guides/js-waku/faq-1ad":{"__comp":"17896441","content":"a494bfbc"},"/guides/js-waku/light-send-receive-77b":{"__comp":"17896441","content":"c57f3997"},"/guides/js-waku/manage-filter-d72":{"__comp":"17896441","content":"0444839e"},"/guides/js-waku/message-encryption-d96":{"__comp":"17896441","content":"df28445d"},"/guides/js-waku/run-waku-nodejs-30f":{"__comp":"17896441","content":"0f1b9a4a"},"/guides/js-waku/store-retrieve-messages-1c5":{"__comp":"17896441","content":"1f1f54c7"},"/guides/js-waku/use-waku-create-app-76f":{"__comp":"17896441","content":"5277fe18"},"/guides/js-waku/use-waku-react-ed9":{"__comp":"17896441","content":"3b240eda"},"/guides/nwaku/build-source-995":{"__comp":"17896441","content":"f2470003"},"/guides/nwaku/config-methods-c44":{"__comp":"17896441","content":"80ec2a43"},"/guides/nwaku/config-options-def":{"__comp":"17896441","content":"8eff6037"},"/guides/nwaku/configure-discovery-a6b":{"__comp":"17896441","content":"8a655033"},"/guides/nwaku/configure-nwaku-a95":{"__comp":"17896441","content":"60832973"},"/guides/nwaku/faq-ad1":{"__comp":"17896441","content":"20987266"},"/guides/nwaku/find-node-address-786":{"__comp":"17896441","content":"b551b2b5"},"/guides/nwaku/run-docker-d03":{"__comp":"17896441","content":"6e8bfb6f"},"/guides/nwaku/run-docker-compose-ca4":{"__comp":"17896441","content":"7c28fd94"},"/guides/nwaku/run-node-9f1":{"__comp":"17896441","content":"406e0176"},"/learn/concepts/content-topics-45b":{"__comp":"17896441","content":"c764ec94"},"/learn/concepts/discv5-01f":{"__comp":"17896441","content":"2f51beae"},"/learn/concepts/dns-discovery-c5b":{"__comp":"17896441","content":"a44b8792"},"/learn/concepts/network-domains-5d8":{"__comp":"17896441","content":"b54b2767"},"/learn/concepts/peer-discovery-913":{"__comp":"17896441","content":"6778e957"},"/learn/concepts/peer-exchange-e58":{"__comp":"17896441","content":"80a3009a"},"/learn/concepts/protocols-13a":{"__comp":"17896441","content":"fb5ea66b"},"/learn/concepts/static-peers-9c6":{"__comp":"17896441","content":"e63bb37c"},"/learn/concepts/transports-6fb":{"__comp":"17896441","content":"ef85d46a"},"/learn/faq-74d":{"__comp":"17896441","content":"1067bd84"},"/learn/glossary-cf5":{"__comp":"17896441","content":"4aba8864"},"/learn/research-13c":{"__comp":"17896441","content":"6c6e315a"},"/learn/security-features-72b":{"__comp":"17896441","content":"606377f0"},"/learn/waku-network-f0c":{"__comp":"17896441","content":"b99d0044"},"/learn/waku-vs-libp2p-c45":{"__comp":"17896441","content":"41a4e09e"},"/privacy-policy-4cd":{"__comp":"17896441","content":"8c5da4da"},"/research/-e8b":{"__comp":"17896441","content":"f7974e9c"},"/research/benchmarks/postgres-adoption-563":{"__comp":"17896441","content":"e168415d"},"/research/research-and-studies/capped-bandwidth-ee6":{"__comp":"17896441","content":"97983a7b"},"/research/research-and-studies/incentivisation-d49":{"__comp":"17896441","content":"4e726341"},"/research/research-and-studies/maximum-bandwidth-80a":{"__comp":"17896441","content":"df0a719b"},"/research/research-and-studies/message-propagation-46a":{"__comp":"17896441","content":"3fbcf129"},"/research/research-and-studies/rln-key-benchmarks-5d8":{"__comp":"17896441","content":"1236ce69"},"/rules-of-engagement-0fc":{"__comp":"17896441","content":"d53fc737"},"/terms-37d":{"__comp":"17896441","content":"500a151f"}}')}},e=>{e.O(0,[532],(()=>{return t=91091,e(e.s=t);var t}));e.O()}]); \ No newline at end of file diff --git a/assets/js/main.c09ff7fb.js.LICENSE.txt b/assets/js/main.0266b0a1.js.LICENSE.txt similarity index 100% rename from assets/js/main.c09ff7fb.js.LICENSE.txt rename to assets/js/main.0266b0a1.js.LICENSE.txt diff --git a/assets/js/main.c09ff7fb.js b/assets/js/main.c09ff7fb.js deleted file mode 100644 index 40e9fc8..0000000 --- a/assets/js/main.c09ff7fb.js +++ /dev/null @@ -1,14 +0,0 @@ -/*! For license information please see main.c09ff7fb.js.LICENSE.txt */ -(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[179],{31665:(e,t,n)=>{"use strict";Object.defineProperty(t,Symbol.toStringTag,{value:"Module"});const r=n(67294),a=n(73935),o=n(70917);function i(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e)for(const n in e)if("default"!==n){const r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:()=>e[n]})}return t.default=e,Object.freeze(t)}const l=i(r);var s=function(){function e(e){var t=this;this._insertTag=function(e){var n;n=0===t.tags.length?t.insertionPoint?t.insertionPoint.nextSibling:t.prepend?t.container.firstChild:t.before:t.tags[t.tags.length-1].nextSibling,t.container.insertBefore(e,n),t.tags.push(e)},this.isSpeedy=void 0===e.speedy||e.speedy,this.tags=[],this.ctr=0,this.nonce=e.nonce,this.key=e.key,this.container=e.container,this.prepend=e.prepend,this.insertionPoint=e.insertionPoint,this.before=null}var t=e.prototype;return t.hydrate=function(e){e.forEach(this._insertTag)},t.insert=function(e){this.ctr%(this.isSpeedy?65e3:1)==0&&this._insertTag(function(e){var t=document.createElement("style");return t.setAttribute("data-emotion",e.key),void 0!==e.nonce&&t.setAttribute("nonce",e.nonce),t.appendChild(document.createTextNode("")),t.setAttribute("data-s",""),t}(this));var t=this.tags[this.tags.length-1];if(this.isSpeedy){var n=function(e){if(e.sheet)return e.sheet;for(var t=0;t<document.styleSheets.length;t++)if(document.styleSheets[t].ownerNode===e)return document.styleSheets[t]}(t);try{n.insertRule(e,n.cssRules.length)}catch(r){0}}else t.appendChild(document.createTextNode(e));this.ctr++},t.flush=function(){this.tags.forEach((function(e){return e.parentNode&&e.parentNode.removeChild(e)})),this.tags=[],this.ctr=0},e}(),u="-ms-",c="-moz-",d="-webkit-",f="comm",p="rule",h="decl",m="@keyframes",g=Math.abs,v=String.fromCharCode,b=Object.assign;function y(e){return e.trim()}function w(e,t,n){return e.replace(t,n)}function x(e,t){return e.indexOf(t)}function k(e,t){return 0|e.charCodeAt(t)}function _(e,t,n){return e.slice(t,n)}function E(e){return e.length}function S(e){return e.length}function C(e,t){return t.push(e),e}var T=1,O=1,D=0,P=0,N=0,I="";function A(e,t,n,r,a,o,i){return{value:e,root:t,parent:n,type:r,props:a,children:o,line:T,column:O,length:i,return:""}}function L(e,t){return b(A("",null,null,"",null,null,0),e,{length:-e.length},t)}function R(){return N=P<D?k(I,P++):0,O++,10===N&&(O=1,T++),N}function j(){return k(I,P)}function M(){return P}function F(e,t){return _(I,e,t)}function B(e){switch(e){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function z(e){return T=O=1,D=E(I=e),P=0,[]}function $(e){return I="",e}function U(e){return y(F(P-1,q(91===e?e+2:40===e?e+1:e)))}function H(e){for(;(N=j())&&N<33;)R();return B(e)>2||B(N)>3?"":" "}function V(e,t){for(;--t&&R()&&!(N<48||N>102||N>57&&N<65||N>70&&N<97););return F(e,M()+(t<6&&32==j()&&32==R()))}function q(e){for(;R();)switch(N){case e:return P;case 34:case 39:34!==e&&39!==e&&q(N);break;case 40:41===e&&q(e);break;case 92:R()}return P}function W(e,t){for(;R()&&e+N!==57&&(e+N!==84||47!==j()););return"/*"+F(t,P-1)+"*"+v(47===e?e:R())}function G(e){for(;!B(j());)R();return F(e,P)}function Z(e){return $(Q("",null,null,null,[""],e=z(e),0,[0],e))}function Q(e,t,n,r,a,o,i,l,s){for(var u=0,c=0,d=i,f=0,p=0,h=0,m=1,g=1,b=1,y=0,_="",S=a,D=o,A=r,L=_;g;)switch(h=y,y=R()){case 40:if(108!=h&&58==k(L,d-1)){-1!=x(L+=w(U(y),"&","&\f"),"&\f")&&(b=-1);break}case 34:case 39:case 91:L+=U(y);break;case 9:case 10:case 13:case 32:L+=H(h);break;case 92:L+=V(M()-1,7);continue;case 47:switch(j()){case 42:case 47:C(X(W(R(),M()),t,n),s);break;default:L+="/"}break;case 123*m:l[u++]=E(L)*b;case 125*m:case 59:case 0:switch(y){case 0:case 125:g=0;case 59+c:p>0&&E(L)-d&&C(p>32?K(L+";",r,n,d-1):K(w(L," ","")+";",r,n,d-2),s);break;case 59:L+=";";default:if(C(A=Y(L,t,n,u,c,a,l,_,S=[],D=[],d),o),123===y)if(0===c)Q(L,t,A,A,S,o,d,l,D);else switch(99===f&&110===k(L,3)?100:f){case 100:case 109:case 115:Q(e,A,A,r&&C(Y(e,A,A,0,0,a,l,_,a,S=[],d),D),a,D,d,l,r?S:D);break;default:Q(L,A,A,A,[""],D,0,l,D)}}u=c=p=0,m=b=1,_=L="",d=i;break;case 58:d=1+E(L),p=h;default:if(m<1)if(123==y)--m;else if(125==y&&0==m++&&125==(N=P>0?k(I,--P):0,O--,10===N&&(O=1,T--),N))continue;switch(L+=v(y),y*m){case 38:b=c>0?1:(L+="\f",-1);break;case 44:l[u++]=(E(L)-1)*b,b=1;break;case 64:45===j()&&(L+=U(R())),f=j(),c=d=E(_=L+=G(M())),y++;break;case 45:45===h&&2==E(L)&&(m=0)}}return o}function Y(e,t,n,r,a,o,i,l,s,u,c){for(var d=a-1,f=0===a?o:[""],h=S(f),m=0,v=0,b=0;m<r;++m)for(var x=0,k=_(e,d+1,d=g(v=i[m])),E=e;x<h;++x)(E=y(v>0?f[x]+" "+k:w(k,/&\f/g,f[x])))&&(s[b++]=E);return A(e,t,n,0===a?p:l,s,u,c)}function X(e,t,n){return A(e,t,n,f,v(N),_(e,2,-2),0)}function K(e,t,n,r){return A(e,t,n,h,_(e,0,r),_(e,r+1,-1),r)}function J(e,t){for(var n="",r=S(e),a=0;a<r;a++)n+=t(e[a],a,e,t)||"";return n}function ee(e,t,n,r){switch(e.type){case"@import":case h:return e.return=e.return||e.value;case f:return"";case m:return e.return=e.value+"{"+J(e.children,r)+"}";case p:e.value=e.props.join(",")}return E(n=J(e.children,r))?e.return=e.value+"{"+n+"}":""}function te(e){var t=Object.create(null);return function(n){return void 0===t[n]&&(t[n]=e(n)),t[n]}}var ne=function(e,t,n){for(var r=0,a=0;r=a,a=j(),38===r&&12===a&&(t[n]=1),!B(a);)R();return F(e,P)},re=function(e,t){return $(function(e,t){var n=-1,r=44;do{switch(B(r)){case 0:38===r&&12===j()&&(t[n]=1),e[n]+=ne(P-1,t,n);break;case 2:e[n]+=U(r);break;case 4:if(44===r){e[++n]=58===j()?"&\f":"",t[n]=e[n].length;break}default:e[n]+=v(r)}}while(r=R());return e}(z(e),t))},ae=new WeakMap,oe=function(e){if("rule"===e.type&&e.parent&&!(e.length<1)){for(var t=e.value,n=e.parent,r=e.column===n.column&&e.line===n.line;"rule"!==n.type;)if(!(n=n.parent))return;if((1!==e.props.length||58===t.charCodeAt(0)||ae.get(n))&&!r){ae.set(e,!0);for(var a=[],o=re(t,a),i=n.props,l=0,s=0;l<o.length;l++)for(var u=0;u<i.length;u++,s++)e.props[s]=a[l]?o[l].replace(/&\f/g,i[u]):i[u]+" "+o[l]}}},ie=function(e){if("decl"===e.type){var t=e.value;108===t.charCodeAt(0)&&98===t.charCodeAt(2)&&(e.return="",e.value="")}};function le(e,t){switch(function(e,t){return 45^k(e,0)?(((t<<2^k(e,0))<<2^k(e,1))<<2^k(e,2))<<2^k(e,3):0}(e,t)){case 5103:return d+"print-"+e+e;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 6391:case 5879:case 5623:case 6135:case 4599:case 4855:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:return d+e+e;case 5349:case 4246:case 4810:case 6968:case 2756:return d+e+c+e+u+e+e;case 6828:case 4268:return d+e+u+e+e;case 6165:return d+e+u+"flex-"+e+e;case 5187:return d+e+w(e,/(\w+).+(:[^]+)/,d+"box-$1$2"+u+"flex-$1$2")+e;case 5443:return d+e+u+"flex-item-"+w(e,/flex-|-self/,"")+e;case 4675:return d+e+u+"flex-line-pack"+w(e,/align-content|flex-|-self/,"")+e;case 5548:return d+e+u+w(e,"shrink","negative")+e;case 5292:return d+e+u+w(e,"basis","preferred-size")+e;case 6060:return d+"box-"+w(e,"-grow","")+d+e+u+w(e,"grow","positive")+e;case 4554:return d+w(e,/([^-])(transform)/g,"$1"+d+"$2")+e;case 6187:return w(w(w(e,/(zoom-|grab)/,d+"$1"),/(image-set)/,d+"$1"),e,"")+e;case 5495:case 3959:return w(e,/(image-set\([^]*)/,d+"$1$`$1");case 4968:return w(w(e,/(.+:)(flex-)?(.*)/,d+"box-pack:$3"+u+"flex-pack:$3"),/s.+-b[^;]+/,"justify")+d+e+e;case 4095:case 3583:case 4068:case 2532:return w(e,/(.+)-inline(.+)/,d+"$1$2")+e;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(E(e)-1-t>6)switch(k(e,t+1)){case 109:if(45!==k(e,t+4))break;case 102:return w(e,/(.+:)(.+)-([^]+)/,"$1"+d+"$2-$3$1"+c+(108==k(e,t+3)?"$3":"$2-$3"))+e;case 115:return~x(e,"stretch")?le(w(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(115!==k(e,t+1))break;case 6444:switch(k(e,E(e)-3-(~x(e,"!important")&&10))){case 107:return w(e,":",":"+d)+e;case 101:return w(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+d+(45===k(e,14)?"inline-":"")+"box$3$1"+d+"$2$3$1"+u+"$2box$3")+e}break;case 5936:switch(k(e,t+11)){case 114:return d+e+u+w(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return d+e+u+w(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return d+e+u+w(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return d+e+u+e+e}return e}var se,ue=[function(e,t,n,r){if(e.length>-1&&!e.return)switch(e.type){case h:e.return=le(e.value,e.length);break;case m:return J([L(e,{value:w(e.value,"@","@"+d)})],r);case p:if(e.length)return function(e,t){return e.map(t).join("")}(e.props,(function(t){switch(function(e,t){return(e=t.exec(e))?e[0]:e}(t,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return J([L(e,{props:[w(t,/:(read-\w+)/,":"+c+"$1")]})],r);case"::placeholder":return J([L(e,{props:[w(t,/:(plac\w+)/,":"+d+"input-$1")]}),L(e,{props:[w(t,/:(plac\w+)/,":"+c+"$1")]}),L(e,{props:[w(t,/:(plac\w+)/,u+"input-$1")]})],r)}return""}))}}],ce=function(e){var t=e.key;if("css"===t){var n=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(n,(function(e){-1!==e.getAttribute("data-emotion").indexOf(" ")&&(document.head.appendChild(e),e.setAttribute("data-s",""))}))}var r=e.stylisPlugins||ue;var a,o,i={},l=[];a=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+t+' "]'),(function(e){for(var t=e.getAttribute("data-emotion").split(" "),n=1;n<t.length;n++)i[t[n]]=!0;l.push(e)}));var u,c,d,f,p=[ee,(f=function(e){u.insert(e)},function(e){e.root||(e=e.return)&&f(e)})],h=(c=[oe,ie].concat(r,p),d=S(c),function(e,t,n,r){for(var a="",o=0;o<d;o++)a+=c[o](e,t,n,r)||"";return a});o=function(e,t,n,r){u=n,J(Z(e?e+"{"+t.styles+"}":t.styles),h),r&&(m.inserted[t.name]=!0)};var m={key:t,sheet:new s({key:t,container:a,nonce:e.nonce,speedy:e.speedy,prepend:e.prepend,insertionPoint:e.insertionPoint}),nonce:e.nonce,inserted:i,registered:{},insert:o};return m.sheet.hydrate(l),m},de="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:"undefined"!=typeof self?self:{},fe={},pe={};({get exports(){return fe},set exports(e){fe=e}}).exports=function(){if(se)return pe;se=1;var e="function"==typeof Symbol&&Symbol.for,t=e?Symbol.for("react.element"):60103,n=e?Symbol.for("react.portal"):60106,r=e?Symbol.for("react.fragment"):60107,a=e?Symbol.for("react.strict_mode"):60108,o=e?Symbol.for("react.profiler"):60114,i=e?Symbol.for("react.provider"):60109,l=e?Symbol.for("react.context"):60110,s=e?Symbol.for("react.async_mode"):60111,u=e?Symbol.for("react.concurrent_mode"):60111,c=e?Symbol.for("react.forward_ref"):60112,d=e?Symbol.for("react.suspense"):60113,f=e?Symbol.for("react.suspense_list"):60120,p=e?Symbol.for("react.memo"):60115,h=e?Symbol.for("react.lazy"):60116,m=e?Symbol.for("react.block"):60121,g=e?Symbol.for("react.fundamental"):60117,v=e?Symbol.for("react.responder"):60118,b=e?Symbol.for("react.scope"):60119;function y(e){if("object"==typeof e&&null!==e){var f=e.$$typeof;switch(f){case t:switch(e=e.type){case s:case u:case r:case o:case a:case d:return e;default:switch(e=e&&e.$$typeof){case l:case c:case h:case p:case i:return e;default:return f}}case n:return f}}}function w(e){return y(e)===u}return pe.AsyncMode=s,pe.ConcurrentMode=u,pe.ContextConsumer=l,pe.ContextProvider=i,pe.Element=t,pe.ForwardRef=c,pe.Fragment=r,pe.Lazy=h,pe.Memo=p,pe.Portal=n,pe.Profiler=o,pe.StrictMode=a,pe.Suspense=d,pe.isAsyncMode=function(e){return w(e)||y(e)===s},pe.isConcurrentMode=w,pe.isContextConsumer=function(e){return y(e)===l},pe.isContextProvider=function(e){return y(e)===i},pe.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===t},pe.isForwardRef=function(e){return y(e)===c},pe.isFragment=function(e){return y(e)===r},pe.isLazy=function(e){return y(e)===h},pe.isMemo=function(e){return y(e)===p},pe.isPortal=function(e){return y(e)===n},pe.isProfiler=function(e){return y(e)===o},pe.isStrictMode=function(e){return y(e)===a},pe.isSuspense=function(e){return y(e)===d},pe.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===r||e===u||e===o||e===a||e===d||e===f||"object"==typeof e&&null!==e&&(e.$$typeof===h||e.$$typeof===p||e.$$typeof===i||e.$$typeof===l||e.$$typeof===c||e.$$typeof===g||e.$$typeof===v||e.$$typeof===b||e.$$typeof===m)},pe.typeOf=y,pe}();var he=fe,me={};me[he.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},me[he.Memo]={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0};var ge=function(e,t,n){var r=e.key+"-"+t.name;!1===n&&void 0===e.registered[r]&&(e.registered[r]=t.styles)};var ve={animationIterationCount:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},be=/[A-Z]|^ms/g,ye=/_EMO_([^_]+?)_([^]*?)_EMO_/g,we=function(e){return 45===e.charCodeAt(1)},xe=function(e){return null!=e&&"boolean"!=typeof e},ke=te((function(e){return we(e)?e:e.replace(be,"-$&").toLowerCase()})),_e=function(e,t){switch(e){case"animation":case"animationName":if("string"==typeof t)return t.replace(ye,(function(e,t,n){return Se={name:t,styles:n,next:Se},t}))}return 1===ve[e]||we(e)||"number"!=typeof t||0===t?t:t+"px"};function Ee(e,t,n){if(null==n)return"";if(void 0!==n.__emotion_styles)return n;switch(typeof n){case"boolean":return"";case"object":if(1===n.anim)return Se={name:n.name,styles:n.styles,next:Se},n.name;if(void 0!==n.styles){var r=n.next;if(void 0!==r)for(;void 0!==r;)Se={name:r.name,styles:r.styles,next:Se},r=r.next;return n.styles+";"}return function(e,t,n){var r="";if(Array.isArray(n))for(var a=0;a<n.length;a++)r+=Ee(e,t,n[a])+";";else for(var o in n){var i=n[o];if("object"!=typeof i)null!=t&&void 0!==t[i]?r+=o+"{"+t[i]+"}":xe(i)&&(r+=ke(o)+":"+_e(o,i)+";");else if(!Array.isArray(i)||"string"!=typeof i[0]||null!=t&&void 0!==t[i[0]]){var l=Ee(e,t,i);switch(o){case"animation":case"animationName":r+=ke(o)+":"+l+";";break;default:r+=o+"{"+l+"}"}}else for(var s=0;s<i.length;s++)xe(i[s])&&(r+=ke(o)+":"+_e(o,i[s])+";")}return r}(e,t,n);case"function":if(void 0!==e){var a=Se,o=n(e);return Se=a,Ee(e,t,o)}}if(null==t)return n;var i=t[n];return void 0!==i?i:n}var Se,Ce=/label:\s*([^\s;\n{]+)\s*(;|$)/g;var Te=!!l.useInsertionEffect&&l.useInsertionEffect||function(e){return e()},Oe={}.hasOwnProperty,De=r.createContext("undefined"!=typeof HTMLElement?ce({key:"css"}):null);De.Provider;var Pe=function(e){return r.forwardRef((function(t,n){var a=r.useContext(De);return e(t,a,n)}))},Ne=r.createContext({});var Ie="__EMOTION_TYPE_PLEASE_DO_NOT_USE__",Ae=function(e,t){var n={};for(var r in t)Oe.call(t,r)&&(n[r]=t[r]);return n[Ie]=e,n},Le=function(e){var t=e.cache,n=e.serialized,r=e.isStringTag;return ge(t,n,r),Te((function(){return function(e,t,n){ge(e,t,n);var r=e.key+"-"+t.name;if(void 0===e.inserted[t.name]){var a=t;do{e.insert(t===a?"."+r:"",a,e.sheet,!0),a=a.next}while(void 0!==a)}}(t,n,r)})),null},Re=Pe((function(e,t,n){var a=e.css;"string"==typeof a&&void 0!==t.registered[a]&&(a=t.registered[a]);var o=e[Ie],i=[a],l="";"string"==typeof e.className?l=function(e,t,n){var r="";return n.split(" ").forEach((function(n){void 0!==e[n]?t.push(e[n]+";"):r+=n+" "})),r}(t.registered,i,e.className):null!=e.className&&(l=e.className+" ");var s=function(e,t,n){if(1===e.length&&"object"==typeof e[0]&&null!==e[0]&&void 0!==e[0].styles)return e[0];var r=!0,a="";Se=void 0;var o=e[0];null==o||void 0===o.raw?(r=!1,a+=Ee(n,t,o)):a+=o[0];for(var i=1;i<e.length;i++)a+=Ee(n,t,e[i]),r&&(a+=o[i]);Ce.lastIndex=0;for(var l,s="";null!==(l=Ce.exec(a));)s+="-"+l[1];return{name:function(e){for(var t,n=0,r=0,a=e.length;a>=4;++r,a-=4)t=1540483477*(65535&(t=255&e.charCodeAt(r)|(255&e.charCodeAt(++r))<<8|(255&e.charCodeAt(++r))<<16|(255&e.charCodeAt(++r))<<24))+(59797*(t>>>16)<<16),n=1540483477*(65535&(t^=t>>>24))+(59797*(t>>>16)<<16)^1540483477*(65535&n)+(59797*(n>>>16)<<16);switch(a){case 3:n^=(255&e.charCodeAt(r+2))<<16;case 2:n^=(255&e.charCodeAt(r+1))<<8;case 1:n=1540483477*(65535&(n^=255&e.charCodeAt(r)))+(59797*(n>>>16)<<16)}return(((n=1540483477*(65535&(n^=n>>>13))+(59797*(n>>>16)<<16))^n>>>15)>>>0).toString(36)}(a)+s,styles:a,next:Se}}(i,void 0,r.useContext(Ne));l+=t.key+"-"+s.name;var u={};for(var c in e)Oe.call(e,c)&&"css"!==c&&c!==Ie&&(u[c]=e[c]);return u.ref=n,u.className=l,r.createElement(r.Fragment,null,r.createElement(Le,{cache:t,serialized:s,isStringTag:"string"==typeof o}),r.createElement(o,u))}));var je,Me,Fe,Be={},ze={};function $e(){if(Me)return je;Me=1;var e=Object.getOwnPropertySymbols,t=Object.prototype.hasOwnProperty,n=Object.prototype.propertyIsEnumerable;return je=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(a){return!1}}()?Object.assign:function(r,a){for(var o,i,l=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(r),s=1;s<arguments.length;s++){for(var u in o=Object(arguments[s]))t.call(o,u)&&(l[u]=o[u]);if(e){i=e(o);for(var c=0;c<i.length;c++)n.call(o,i[c])&&(l[i[c]]=o[i[c]])}}return l},je}!function(e){e.exports=function(){if(Fe)return ze;Fe=1,$e();var e=r,t=60103;if(ze.Fragment=60107,"function"==typeof Symbol&&Symbol.for){var n=Symbol.for;t=n("react.element"),ze.Fragment=n("react.fragment")}var a=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,o=Object.prototype.hasOwnProperty,i={key:!0,ref:!0,__self:!0,__source:!0};function l(e,n,r){var l,s={},u=null,c=null;for(l in void 0!==r&&(u=""+r),void 0!==n.key&&(u=""+n.key),void 0!==n.ref&&(c=n.ref),n)o.call(n,l)&&!i.hasOwnProperty(l)&&(s[l]=n[l]);if(e&&e.defaultProps)for(l in n=e.defaultProps)void 0===s[l]&&(s[l]=n[l]);return{$$typeof:t,type:e,key:u,ref:c,props:s,_owner:a.current}}return ze.jsx=l,ze.jsxs=l,ze}()}({get exports(){return Be},set exports(e){Be=e}});const Ue=Be.Fragment,He=Be.jsx,Ve=Be.jsxs;var qe=Ue;function We(e,t,n){return Oe.call(t,"css")?He(Re,Ae(e,t),n):He(e,t,n)}function Ge(e,t,n){return Oe.call(t,"css")?Ve(Re,Ae(e,t),n):Ve(e,t,n)}function Ze(e){var t,n,r="";if("string"==typeof e||"number"==typeof e)r+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(n=Ze(e[t]))&&(r&&(r+=" "),r+=n);else for(t in e)e[t]&&(r&&(r+=" "),r+=t);return r}function Qe(){for(var e,t,n=0,r="";n<arguments.length;)(e=arguments[n++])&&(t=Ze(e))&&(r&&(r+=" "),r+=t);return r}const Ye=e=>{const[t,n]=r.useState(e.value??e.defaultValue),a=void 0===e.value,o=void 0!==t&&("string"==typeof t?t.length>0:t.toString().length>0);return r.useEffect((()=>{!a&&n(e.value)}),[a,e.value]),{value:t,filled:o,onChange:t=>{if(a){const e=t.target.type,r=t.target["checkbox"===e||"radio"===e?"checked":"value"];n(r)}e.onChange&&e.onChange(t)},setValue:t=>{var n,r,a,o;const i=(null==(n=null==e?void 0:e.ref)?void 0:n.current)??("function"==typeof e.getInput&&e.getInput());if(!i)return;const l=new Event("input",{bubbles:!0});null==(o=null==(a=null==(r=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"value"))?void 0:r.set)?void 0:a.call)||o.call(a,i,t),i.dispatchEvent(l)}}};var Xe=function(e,t){for(var n=-1,r=null==e?0:e.length,a=Array(r);++n<r;)a[n]=t(e[n],n,e);return a};var Ke=function(){this.__data__=[],this.size=0};var Je=function(e,t){return e===t||e!=e&&t!=t},et=Je;var tt=function(e,t){for(var n=e.length;n--;)if(et(e[n][0],t))return n;return-1},nt=tt,rt=Array.prototype.splice;var at=tt;var ot=tt;var it=tt;var lt=Ke,st=function(e){var t=this.__data__,n=nt(t,e);return!(n<0)&&(n==t.length-1?t.pop():rt.call(t,n,1),--this.size,!0)},ut=function(e){var t=this.__data__,n=at(t,e);return n<0?void 0:t[n][1]},ct=function(e){return ot(this.__data__,e)>-1},dt=function(e,t){var n=this.__data__,r=it(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this};function ft(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}ft.prototype.clear=lt,ft.prototype.delete=st,ft.prototype.get=ut,ft.prototype.has=ct,ft.prototype.set=dt;var pt=ft,ht=pt;var mt=function(){this.__data__=new ht,this.size=0};var gt=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n};var vt=function(e){return this.__data__.get(e)};var bt=function(e){return this.__data__.has(e)},yt="object"==typeof de&&de&&de.Object===Object&&de,wt=yt,xt="object"==typeof self&&self&&self.Object===Object&&self,kt=wt||xt||Function("return this")(),_t=kt.Symbol,Et=_t,St=Object.prototype,Ct=St.hasOwnProperty,Tt=St.toString,Ot=Et?Et.toStringTag:void 0;var Dt=function(e){var t=Ct.call(e,Ot),n=e[Ot];try{e[Ot]=void 0;var r=!0}catch(o){}var a=Tt.call(e);return r&&(t?e[Ot]=n:delete e[Ot]),a},Pt=Object.prototype.toString;var Nt=Dt,It=function(e){return Pt.call(e)},At=_t?_t.toStringTag:void 0;var Lt=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":At&&At in Object(e)?Nt(e):It(e)};var Rt=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)},jt=Lt,Mt=Rt;var Ft,Bt=function(e){if(!Mt(e))return!1;var t=jt(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t},zt=kt["__core-js_shared__"],$t=(Ft=/[^.]+$/.exec(zt&&zt.keys&&zt.keys.IE_PROTO||""))?"Symbol(src)_1."+Ft:"";var Ut=function(e){return!!$t&&$t in e},Ht=Function.prototype.toString;var Vt=function(e){if(null!=e){try{return Ht.call(e)}catch(t){}try{return e+""}catch(t){}}return""},qt=Bt,Wt=Ut,Gt=Rt,Zt=Vt,Qt=/^\[object .+?Constructor\]$/,Yt=Function.prototype,Xt=Object.prototype,Kt=Yt.toString,Jt=Xt.hasOwnProperty,en=RegExp("^"+Kt.call(Jt).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");var tn=function(e){return!(!Gt(e)||Wt(e))&&(qt(e)?en:Qt).test(Zt(e))},nn=function(e,t){return null==e?void 0:e[t]};var rn=function(e,t){var n=nn(e,t);return tn(n)?n:void 0},an=rn(kt,"Map"),on=rn(Object,"create"),ln=on;var sn=function(){this.__data__=ln?ln(null):{},this.size=0};var un=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t},cn=on,dn=Object.prototype.hasOwnProperty;var fn=function(e){var t=this.__data__;if(cn){var n=t[e];return"__lodash_hash_undefined__"===n?void 0:n}return dn.call(t,e)?t[e]:void 0},pn=on,hn=Object.prototype.hasOwnProperty;var mn=on;var gn=sn,vn=un,bn=fn,yn=function(e){var t=this.__data__;return pn?void 0!==t[e]:hn.call(t,e)},wn=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=mn&&void 0===t?"__lodash_hash_undefined__":t,this};function xn(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}xn.prototype.clear=gn,xn.prototype.delete=vn,xn.prototype.get=bn,xn.prototype.has=yn,xn.prototype.set=wn;var kn=xn,_n=pt,En=an;var Sn=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e};var Cn=function(e,t){var n=e.__data__;return Sn(t)?n["string"==typeof t?"string":"hash"]:n.map},Tn=Cn;var On=Cn;var Dn=Cn;var Pn=Cn;var Nn=function(){this.size=0,this.__data__={hash:new kn,map:new(En||_n),string:new kn}},In=function(e){var t=Tn(this,e).delete(e);return this.size-=t?1:0,t},An=function(e){return On(this,e).get(e)},Ln=function(e){return Dn(this,e).has(e)},Rn=function(e,t){var n=Pn(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this};function jn(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}jn.prototype.clear=Nn,jn.prototype.delete=In,jn.prototype.get=An,jn.prototype.has=Ln,jn.prototype.set=Rn;var Mn=jn,Fn=pt,Bn=an,zn=Mn;var $n=pt,Un=mt,Hn=gt,Vn=vt,qn=bt,Wn=function(e,t){var n=this.__data__;if(n instanceof Fn){var r=n.__data__;if(!Bn||r.length<199)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new zn(r)}return n.set(e,t),this.size=n.size,this};function Gn(e){var t=this.__data__=new $n(e);this.size=t.size}Gn.prototype.clear=Un,Gn.prototype.delete=Hn,Gn.prototype.get=Vn,Gn.prototype.has=qn,Gn.prototype.set=Wn;var Zn=Gn;var Qn=function(e,t){for(var n=-1,r=null==e?0:e.length;++n<r&&!1!==t(e[n],n,e););return e},Yn=rn,Xn=function(){try{var e=Yn(Object,"defineProperty");return e({},"",{}),e}catch(t){}}(),Kn=Xn;var Jn=function(e,t,n){"__proto__"==t&&Kn?Kn(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n},er=Jn,tr=Je,nr=Object.prototype.hasOwnProperty;var rr=function(e,t,n){var r=e[t];nr.call(e,t)&&tr(r,n)&&(void 0!==n||t in e)||er(e,t,n)},ar=rr,or=Jn;var ir=function(e,t,n,r){var a=!n;n||(n={});for(var o=-1,i=t.length;++o<i;){var l=t[o],s=r?r(n[l],e[l],l,n,e):void 0;void 0===s&&(s=e[l]),a?or(n,l,s):ar(n,l,s)}return n};var lr=function(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r};var sr=function(e){return null!=e&&"object"==typeof e},ur=Lt,cr=sr;var dr=function(e){return cr(e)&&"[object Arguments]"==ur(e)},fr=sr,pr=Object.prototype,hr=pr.hasOwnProperty,mr=pr.propertyIsEnumerable,gr=dr(function(){return arguments}())?dr:function(e){return fr(e)&&hr.call(e,"callee")&&!mr.call(e,"callee")},vr=Array.isArray,br={};var yr=function(){return!1};!function(e,t){var n=kt,r=yr,a=t&&!t.nodeType&&t,o=a&&e&&!e.nodeType&&e,i=o&&o.exports===a?n.Buffer:void 0,l=(i?i.isBuffer:void 0)||r;e.exports=l}({get exports(){return br},set exports(e){br=e}},br);var wr=/^(?:0|[1-9]\d*)$/;var xr=function(e,t){var n=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==n||"symbol"!=n&&wr.test(e))&&e>-1&&e%1==0&&e<t};var kr=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991},_r=Lt,Er=kr,Sr=sr,Cr={};Cr["[object Float32Array]"]=Cr["[object Float64Array]"]=Cr["[object Int8Array]"]=Cr["[object Int16Array]"]=Cr["[object Int32Array]"]=Cr["[object Uint8Array]"]=Cr["[object Uint8ClampedArray]"]=Cr["[object Uint16Array]"]=Cr["[object Uint32Array]"]=!0,Cr["[object Arguments]"]=Cr["[object Array]"]=Cr["[object ArrayBuffer]"]=Cr["[object Boolean]"]=Cr["[object DataView]"]=Cr["[object Date]"]=Cr["[object Error]"]=Cr["[object Function]"]=Cr["[object Map]"]=Cr["[object Number]"]=Cr["[object Object]"]=Cr["[object RegExp]"]=Cr["[object Set]"]=Cr["[object String]"]=Cr["[object WeakMap]"]=!1;var Tr=function(e){return Sr(e)&&Er(e.length)&&!!Cr[_r(e)]};var Or=function(e){return function(t){return e(t)}},Dr={};!function(e,t){var n=yt,r=t&&!t.nodeType&&t,a=r&&e&&!e.nodeType&&e,o=a&&a.exports===r&&n.process,i=function(){try{var e=a&&a.require&&a.require("util").types;return e||o&&o.binding&&o.binding("util")}catch(t){}}();e.exports=i}({get exports(){return Dr},set exports(e){Dr=e}},Dr);var Pr=Tr,Nr=Or,Ir=Dr&&Dr.isTypedArray,Ar=Ir?Nr(Ir):Pr,Lr=lr,Rr=gr,jr=vr,Mr=br,Fr=xr,Br=Ar,zr=Object.prototype.hasOwnProperty;var $r=function(e,t){var n=jr(e),r=!n&&Rr(e),a=!n&&!r&&Mr(e),o=!n&&!r&&!a&&Br(e),i=n||r||a||o,l=i?Lr(e.length,String):[],s=l.length;for(var u in e)!t&&!zr.call(e,u)||i&&("length"==u||a&&("offset"==u||"parent"==u)||o&&("buffer"==u||"byteLength"==u||"byteOffset"==u)||Fr(u,s))||l.push(u);return l},Ur=Object.prototype;var Hr=function(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||Ur)};var Vr=function(e,t){return function(n){return e(t(n))}},qr=Vr(Object.keys,Object),Wr=Hr,Gr=qr,Zr=Object.prototype.hasOwnProperty;var Qr=Bt,Yr=kr;var Xr=function(e){return null!=e&&Yr(e.length)&&!Qr(e)},Kr=$r,Jr=function(e){if(!Wr(e))return Gr(e);var t=[];for(var n in Object(e))Zr.call(e,n)&&"constructor"!=n&&t.push(n);return t},ea=Xr;var ta=function(e){return ea(e)?Kr(e):Jr(e)},na=ir,ra=ta;var aa=function(e,t){return e&&na(t,ra(t),e)};var oa=Rt,ia=Hr,la=function(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t},sa=Object.prototype.hasOwnProperty;var ua=$r,ca=function(e){if(!oa(e))return la(e);var t=ia(e),n=[];for(var r in e)("constructor"!=r||!t&&sa.call(e,r))&&n.push(r);return n},da=Xr;var fa=function(e){return da(e)?ua(e,!0):ca(e)},pa=ir,ha=fa;var ma=function(e,t){return e&&pa(t,ha(t),e)},ga={};!function(e,t){var n=kt,r=t&&!t.nodeType&&t,a=r&&e&&!e.nodeType&&e,o=a&&a.exports===r?n.Buffer:void 0,i=o?o.allocUnsafe:void 0;e.exports=function(e,t){if(t)return e.slice();var n=e.length,r=i?i(n):new e.constructor(n);return e.copy(r),r}}({get exports(){return ga},set exports(e){ga=e}},ga);var va=function(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n<r;)t[n]=e[n];return t};var ba=function(){return[]},ya=function(e,t){for(var n=-1,r=null==e?0:e.length,a=0,o=[];++n<r;){var i=e[n];t(i,n,e)&&(o[a++]=i)}return o},wa=ba,xa=Object.prototype.propertyIsEnumerable,ka=Object.getOwnPropertySymbols,_a=ka?function(e){return null==e?[]:(e=Object(e),ya(ka(e),(function(t){return xa.call(e,t)})))}:wa,Ea=ir,Sa=_a;var Ca=function(e,t){return Ea(e,Sa(e),t)};var Ta=function(e,t){for(var n=-1,r=t.length,a=e.length;++n<r;)e[a+n]=t[n];return e},Oa=Vr(Object.getPrototypeOf,Object),Da=Ta,Pa=Oa,Na=_a,Ia=ba,Aa=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)Da(t,Na(e)),e=Pa(e);return t}:Ia,La=ir,Ra=Aa;var ja=function(e,t){return La(e,Ra(e),t)},Ma=Ta,Fa=vr;var Ba=function(e,t,n){var r=t(e);return Fa(e)?r:Ma(r,n(e))},za=Ba,$a=_a,Ua=ta;var Ha=function(e){return za(e,Ua,$a)},Va=Ba,qa=Aa,Wa=fa;var Ga=function(e){return Va(e,Wa,qa)},Za=rn(kt,"DataView"),Qa=an,Ya=rn(kt,"Promise"),Xa=rn(kt,"Set"),Ka=rn(kt,"WeakMap"),Ja=Lt,eo=Vt,to="[object Map]",no="[object Promise]",ro="[object Set]",ao="[object WeakMap]",oo="[object DataView]",io=eo(Za),lo=eo(Qa),so=eo(Ya),uo=eo(Xa),co=eo(Ka),fo=Ja;(Za&&fo(new Za(new ArrayBuffer(1)))!=oo||Qa&&fo(new Qa)!=to||Ya&&fo(Ya.resolve())!=no||Xa&&fo(new Xa)!=ro||Ka&&fo(new Ka)!=ao)&&(fo=function(e){var t=Ja(e),n="[object Object]"==t?e.constructor:void 0,r=n?eo(n):"";if(r)switch(r){case io:return oo;case lo:return to;case so:return no;case uo:return ro;case co:return ao}return t});var po=fo,ho=Object.prototype.hasOwnProperty;var mo=function(e){var t=e.length,n=new e.constructor(t);return t&&"string"==typeof e[0]&&ho.call(e,"index")&&(n.index=e.index,n.input=e.input),n},go=kt.Uint8Array;var vo=function(e){var t=new e.constructor(e.byteLength);return new go(t).set(new go(e)),t},bo=vo;var yo=function(e,t){var n=t?bo(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)},wo=/\w*$/;var xo=function(e){var t=new e.constructor(e.source,wo.exec(e));return t.lastIndex=e.lastIndex,t},ko=_t?_t.prototype:void 0,_o=ko?ko.valueOf:void 0;var Eo=vo;var So=vo,Co=yo,To=xo,Oo=function(e){return _o?Object(_o.call(e)):{}},Do=function(e,t){var n=t?Eo(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)};var Po=function(e,t,n){var r=e.constructor;switch(t){case"[object ArrayBuffer]":return So(e);case"[object Boolean]":case"[object Date]":return new r(+e);case"[object DataView]":return Co(e,n);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return Do(e,n);case"[object Map]":case"[object Set]":return new r;case"[object Number]":case"[object String]":return new r(e);case"[object RegExp]":return To(e);case"[object Symbol]":return Oo(e)}},No=Rt,Io=Object.create,Ao=function(){function e(){}return function(t){if(!No(t))return{};if(Io)return Io(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}(),Lo=Oa,Ro=Hr;var jo=function(e){return"function"!=typeof e.constructor||Ro(e)?{}:Ao(Lo(e))},Mo=po,Fo=sr;var Bo=function(e){return Fo(e)&&"[object Map]"==Mo(e)},zo=Or,$o=Dr&&Dr.isMap,Uo=$o?zo($o):Bo,Ho=po,Vo=sr;var qo=function(e){return Vo(e)&&"[object Set]"==Ho(e)},Wo=Or,Go=Dr&&Dr.isSet,Zo=Go?Wo(Go):qo,Qo=Zn,Yo=Qn,Xo=rr,Ko=aa,Jo=ma,ei=ga,ti=va,ni=Ca,ri=ja,ai=Ha,oi=Ga,ii=po,li=mo,si=Po,ui=jo,ci=vr,di=br,fi=Uo,pi=Rt,hi=Zo,mi=ta,gi=fa,vi="[object Arguments]",bi="[object Function]",yi="[object Object]",wi={};wi[vi]=wi["[object Array]"]=wi["[object ArrayBuffer]"]=wi["[object DataView]"]=wi["[object Boolean]"]=wi["[object Date]"]=wi["[object Float32Array]"]=wi["[object Float64Array]"]=wi["[object Int8Array]"]=wi["[object Int16Array]"]=wi["[object Int32Array]"]=wi["[object Map]"]=wi["[object Number]"]=wi[yi]=wi["[object RegExp]"]=wi["[object Set]"]=wi["[object String]"]=wi["[object Symbol]"]=wi["[object Uint8Array]"]=wi["[object Uint8ClampedArray]"]=wi["[object Uint16Array]"]=wi["[object Uint32Array]"]=!0,wi["[object Error]"]=wi[bi]=wi["[object WeakMap]"]=!1;var xi=function e(t,n,r,a,o,i){var l,s=1&n,u=2&n,c=4&n;if(r&&(l=o?r(t,a,o,i):r(t)),void 0!==l)return l;if(!pi(t))return t;var d=ci(t);if(d){if(l=li(t),!s)return ti(t,l)}else{var f=ii(t),p=f==bi||"[object GeneratorFunction]"==f;if(di(t))return ei(t,s);if(f==yi||f==vi||p&&!o){if(l=u||p?{}:ui(t),!s)return u?ri(t,Jo(l,t)):ni(t,Ko(l,t))}else{if(!wi[f])return o?t:{};l=si(t,f,s)}}i||(i=new Qo);var h=i.get(t);if(h)return h;i.set(t,l),hi(t)?t.forEach((function(a){l.add(e(a,n,r,a,t,i))})):fi(t)&&t.forEach((function(a,o){l.set(o,e(a,n,r,o,t,i))}));var m=d?void 0:(c?u?oi:ai:u?gi:mi)(t);return Yo(m||t,(function(a,o){m&&(a=t[o=a]),Xo(l,o,e(a,n,r,o,t,i))})),l},ki=Lt,_i=sr;var Ei=function(e){return"symbol"==typeof e||_i(e)&&"[object Symbol]"==ki(e)},Si=vr,Ci=Ei,Ti=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Oi=/^\w*$/;var Di=function(e,t){if(Si(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!Ci(e))||(Oi.test(e)||!Ti.test(e)||null!=t&&e in Object(t))},Pi=Mn;function Ni(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var r=arguments,a=t?t.apply(this,r):r[0],o=n.cache;if(o.has(a))return o.get(a);var i=e.apply(this,r);return n.cache=o.set(a,i)||o,i};return n.cache=new(Ni.Cache||Pi),n}Ni.Cache=Pi;var Ii=Ni;var Ai=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Li=/\\(\\)?/g,Ri=function(e){var t=Ii(e,(function(e){return 500===n.size&&n.clear(),e})),n=t.cache;return t}((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(Ai,(function(e,n,r,a){t.push(r?a.replace(Li,"$1"):n||e)})),t})),ji=Xe,Mi=vr,Fi=Ei,Bi=_t?_t.prototype:void 0,zi=Bi?Bi.toString:void 0;var $i=function e(t){if("string"==typeof t)return t;if(Mi(t))return ji(t,e)+"";if(Fi(t))return zi?zi.call(t):"";var n=t+"";return"0"==n&&1/t==-Infinity?"-0":n},Ui=$i;var Hi=function(e){return null==e?"":Ui(e)},Vi=vr,qi=Di,Wi=Ri,Gi=Hi;var Zi=function(e,t){return Vi(e)?e:qi(e,t)?[e]:Wi(Gi(e))};var Qi=Ei;var Yi=function(e){if("string"==typeof e||Qi(e))return e;var t=e+"";return"0"==t&&1/e==-Infinity?"-0":t},Xi=Zi,Ki=Yi;var Ji=function(e,t){for(var n=0,r=(t=Xi(t,e)).length;null!=e&&n<r;)e=e[Ki(t[n++])];return n&&n==r?e:void 0};var el=Ji,tl=function(e,t,n){var r=-1,a=e.length;t<0&&(t=-t>a?0:a+t),(n=n>a?a:n)<0&&(n+=a),a=t>n?0:n-t>>>0,t>>>=0;for(var o=Array(a);++r<a;)o[r]=e[r+t];return o};var nl=Zi,rl=function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0},al=function(e,t){return t.length<2?e:el(e,tl(t,0,-1))},ol=Yi;var il=function(e,t){return t=nl(t,e),null==(e=al(e,t))||delete e[ol(rl(t))]},ll=Lt,sl=Oa,ul=sr,cl=Function.prototype,dl=Object.prototype,fl=cl.toString,pl=dl.hasOwnProperty,hl=fl.call(Object);var ml=function(e){if(!ul(e)||"[object Object]"!=ll(e))return!1;var t=sl(e);if(null===t)return!0;var n=pl.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&fl.call(n)==hl};var gl=function(e){return ml(e)?void 0:e},vl=gr,bl=vr,yl=_t?_t.isConcatSpreadable:void 0;var wl=Ta,xl=function(e){return bl(e)||vl(e)||!!(yl&&e&&e[yl])};var kl=function e(t,n,r,a,o){var i=-1,l=t.length;for(r||(r=xl),o||(o=[]);++i<l;){var s=t[i];n>0&&r(s)?n>1?e(s,n-1,r,a,o):wl(o,s):a||(o[o.length]=s)}return o},_l=kl;var El=function(e){return(null==e?0:e.length)?_l(e,1):[]};var Sl=function(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)},Cl=Math.max;var Tl=function(e,t,n){return t=Cl(void 0===t?e.length-1:t,0),function(){for(var r=arguments,a=-1,o=Cl(r.length-t,0),i=Array(o);++a<o;)i[a]=r[t+a];a=-1;for(var l=Array(t+1);++a<t;)l[a]=r[a];return l[t]=n(i),Sl(e,this,l)}};var Ol=function(e){return function(){return e}},Dl=Xn,Pl=Dl?function(e,t){return Dl(e,"toString",{configurable:!0,enumerable:!1,value:Ol(t),writable:!0})}:function(e){return e},Nl=Date.now;var Il=function(e){var t=0,n=0;return function(){var r=Nl(),a=16-(r-n);if(n=r,a>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}(Pl),Al=El,Ll=Tl,Rl=Il;var jl=function(e){return Rl(Ll(e,void 0,Al),e+"")},Ml=Xe,Fl=xi,Bl=il,zl=Zi,$l=ir,Ul=gl,Hl=Ga,Vl=jl((function(e,t){var n={};if(null==e)return n;var r=!1;t=Ml(t,(function(t){return t=zl(t,e),r||(r=t.length>1),t})),$l(e,Hl(e),n),r&&(n=Fl(n,7,Ul));for(var a=t.length;a--;)Bl(n,t[a]);return n})),ql=rr,Wl=Zi,Gl=xr,Zl=Rt,Ql=Yi;var Yl=Ji,Xl=function(e,t,n,r){if(!Zl(e))return e;for(var a=-1,o=(t=Wl(t,e)).length,i=o-1,l=e;null!=l&&++a<o;){var s=Ql(t[a]),u=n;if("__proto__"===s||"constructor"===s||"prototype"===s)return e;if(a!=i){var c=l[s];void 0===(u=r?r(c,s,l):void 0)&&(u=Zl(c)?c:Gl(t[a+1])?[]:{})}ql(l,s,u),l=l[s]}return e},Kl=Zi;var Jl=Zi,es=gr,ts=vr,ns=xr,rs=kr,as=Yi;var os=function(e,t){return null!=e&&t in Object(e)},is=function(e,t,n){for(var r=-1,a=(t=Jl(t,e)).length,o=!1;++r<a;){var i=as(t[r]);if(!(o=null!=e&&n(e,i)))break;e=e[i]}return o||++r!=a?o:!!(a=null==e?0:e.length)&&rs(a)&&ns(i,a)&&(ts(e)||es(e))};var ls=function(e,t,n){for(var r=-1,a=t.length,o={};++r<a;){var i=t[r],l=Yl(e,i);n(l,i)&&Xl(o,Kl(i,e),l)}return o},ss=function(e,t){return null!=e&&is(e,t,os)};var us=function(e,t){return ls(e,t,(function(t,n){return ss(e,n)}))},cs=jl((function(e,t){return null==e?{}:us(e,t)}));const ds=(e,t)=>Object.fromEntries((Array.isArray(e)?e:Object.keys(e)).map(((e,n)=>[e,t(e,n)]))),fs=["xs","sm","md","lg","xl"],ps=["display1","display2","display3","display4","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","subtitle3","subtitle4","body1","body2","body3","label1","label2"],hs={h1:["h1"],h2:["h2"],h3:["h3"],h4:["h4"],h5:["h5"],h6:["h6"],body1:["body"],label1:["label"]},ms=["fontSize","fontWeight","lineHeight"],gs={...ds(ps,(e=>`lsd-typography--${e}`)),root:"lsd-typography",primary:"lsd-typography--primary",secondary:"lsd-typography--secondary",serif:"lsd-typography--serif",sansSerif:"lsd-typography--sans-serif",monospace:"lsd-typography--monospace"},vs=["genericFontFamily"],bs=({genericFontFamily:e})=>({className:Qe("serif"===e&&gs.serif,"monospace"===e&&gs.monospace,"sans-serif"===e&&gs.sansSerif)}),ys=e=>cs(e,vs),ws=e=>Vl(e,vs),xs={root:"lsd-icon",small:"lsd-icon--small",filled:"lsd-icon--filled",stroked:"lsd-icon--stroked",primary:"lsd-icon--primary",secondary:"lsd-icon--secondary"},ks=(e,t)=>{const n=({color:n,size:r="small",className:a,...o})=>{const i=bs(o);return We(e,{className:Qe(i.className,a,xs.root,xs[r],n&&xs[n],(null==t?void 0:t.filled)&&xs.filled,(null==t?void 0:t.stroked)&&xs.stroked),...ws(o)})};return n.displayName=e.displayName,n.classes=xs,n},_s=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{d:"M11.6666 7.58334H7.58325V11.6667H6.41659V7.58334H2.33325V6.41668H6.41659V2.33334H7.58325V6.41668H11.6666V7.58334Z",fill:"black"})})),{filled:!0}),Es=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{d:"M10.5 5.66125L9.6775 4.83875L7 7.51041L4.3225 4.83874L3.5 5.66125L7 9.16125L10.5 5.66125Z",fill:"black"})})),{filled:!0}),Ss=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{d:"M6.99992 2.33334L6.17742 3.15584L9.43242 6.41668H2.33325V7.58334H9.43242L6.17742 10.8442L6.99992 11.6667L11.6666 7.00001L6.99992 2.33334Z",fill:"black"})})),{filled:!0}),Cs=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{d:"M3.5 8.33875L4.3225 9.16125L7 6.48959L9.6775 9.16125L10.5 8.33875L7 4.83875L3.5 8.33875Z",fill:"black"})})),{filled:!0}),Ts=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M2.91667 1.75H11.0833C11.725 1.75 12.25 2.275 12.25 2.91667V11.0833C12.25 11.725 11.725 12.25 11.0833 12.25H2.91667C2.275 12.25 1.75 11.725 1.75 11.0833V2.91667C1.75 2.275 2.275 1.75 2.91667 1.75ZM9.68333 4.43333L10.5 5.25L5.83333 9.91667L3.5 7.58333L4.31667 6.76667L5.83333 8.28333L9.68333 4.43333Z",fill:"black"})})),{filled:!0}),Os=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{d:"M11.0833 2.91667V11.0833H2.91667V2.91667H11.0833ZM11.0833 1.75H2.91667C2.275 1.75 1.75 2.275 1.75 2.91667V11.0833C1.75 11.725 2.275 12.25 2.91667 12.25H11.0833C11.725 12.25 12.25 11.725 12.25 11.0833V2.91667C12.25 2.275 11.725 1.75 11.0833 1.75Z",fill:"black"})})),{filled:!0}),Ds=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{d:"M5.25009 9.43247L2.81759 6.99997L1.98926 7.82247L5.25009 11.0833L12.2501 4.0833L11.4276 3.2608L5.25009 9.43247Z",fill:"black"})})),{filled:!0}),Ps=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{d:"M11.0834 3.73916L10.2609 2.91666L7.00008 6.17749L3.73925 2.91666L2.91675 3.73916L6.17758 6.99999L2.91675 10.2608L3.73925 11.0833L7.00008 7.82249L10.2609 11.0833L11.0834 10.2608L7.82258 6.99999L11.0834 3.73916Z",fill:"black"})})),{filled:!0}),Ns=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M7.00008 1.16666C3.78008 1.16666 1.16675 3.77999 1.16675 6.99999C1.16675 10.22 3.78008 12.8333 7.00008 12.8333C10.2201 12.8333 12.8334 10.22 12.8334 6.99999C12.8334 3.77999 10.2201 1.16666 7.00008 1.16666ZM6.41675 9.91666V8.74999H7.58342V9.91666H6.41675ZM6.41675 4.08332V7.58332H7.58342V4.08332H6.41675Z",fill:"black"})})),{filled:!0}),Is=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{d:"M5.34925 3.50001L6.51591 4.66668H11.6667V10.5H2.33341V3.50001H5.34925ZM5.83341 2.33334H2.33341C1.69175 2.33334 1.17258 2.85834 1.17258 3.50001L1.16675 10.5C1.16675 11.1417 1.69175 11.6667 2.33341 11.6667H11.6667C12.3084 11.6667 12.8334 11.1417 12.8334 10.5V4.66668C12.8334 4.02501 12.3084 3.50001 11.6667 3.50001H7.00008L5.83341 2.33334Z",fill:"black"})})),{filled:!0}),As=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{d:"M11.0833 4.08333V6.41667H3.98417L6.0725 4.3225L5.25 3.5L1.75 7L5.25 10.5L6.0725 9.6775L3.98417 7.58333H12.25V4.08333H11.0833Z",fill:"black"})})),{filled:!0}),Ls=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M1.75 4.66667V3.5H12.25V4.66667H1.75ZM1.75 7.58333H12.25V6.41667H1.75V7.58333ZM1.75 10.5H12.25V9.33333H1.75V10.5Z",fill:"black"})})),{filled:!0}),Rs=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M3.49992 5.83334C2.85825 5.83334 2.33325 6.35834 2.33325 7.00001C2.33325 7.64168 2.85825 8.16668 3.49992 8.16668C4.14159 8.16668 4.66659 7.64168 4.66659 7.00001C4.66659 6.35834 4.14159 5.83334 3.49992 5.83334ZM10.4999 5.83334C9.85825 5.83334 9.33325 6.35834 9.33325 7.00001C9.33325 7.64168 9.85825 8.16668 10.4999 8.16668C11.1416 8.16668 11.6666 7.64168 11.6666 7.00001C11.6666 6.35834 11.1416 5.83334 10.4999 5.83334ZM5.83325 7.00001C5.83325 6.35834 6.35825 5.83334 6.99992 5.83334C7.64159 5.83334 8.16659 6.35834 8.16659 7.00001C8.16659 7.64168 7.64159 8.16668 6.99992 8.16668C6.35825 8.16668 5.83325 7.64168 5.83325 7.00001Z",fill:"black"})})),{filled:!0}),js=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{d:"M9.16137 4.3225L8.33887 3.5L4.83887 7L8.33887 10.5L9.16137 9.6775L6.4897 7L9.16137 4.3225Z",fill:"black"})})),{filled:!0}),Ms=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{d:"M5.66137 3.5L4.83887 4.3225L7.51053 7L4.83887 9.6775L5.66137 10.5L9.16137 7L5.66137 3.5Z",fill:"black"})})),{filled:!0}),Fs=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M8.61 7.74083L11.9525 11.0833L11.0833 11.9525L7.74083 8.61C7.11667 9.05917 6.36417 9.33333 5.54167 9.33333C3.4475 9.33333 1.75 7.63583 1.75 5.54167C1.75 3.4475 3.4475 1.75 5.54167 1.75C7.63583 1.75 9.33333 3.4475 9.33333 5.54167C9.33333 6.36417 9.05917 7.11667 8.61 7.74083ZM5.54167 2.91667C4.08917 2.91667 2.91667 4.08917 2.91667 5.54167C2.91667 6.99417 4.08917 8.16667 5.54167 8.16667C6.99417 8.16667 8.16667 6.99417 8.16667 5.54167C8.16667 4.08917 6.99417 2.91667 5.54167 2.91667Z",fill:"black"})})),{filled:!0}),Bs=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M9.79287 3.5H2.99998V2.5H11.5V11H10.5V4.20711L3.35353 11.3536L2.64642 10.6464L9.79287 3.5Z",fill:"black"})})),{filled:!0}),zs=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{d:"M7.0013 1.16669C3.7813 1.16669 1.16797 3.78002 1.16797 7.00002C1.16797 10.22 3.7813 12.8334 7.0013 12.8334C10.2213 12.8334 12.8346 10.22 12.8346 7.00002C12.8346 3.78002 10.2213 1.16669 7.0013 1.16669ZM7.0013 11.6667C4.42297 11.6667 2.33464 9.57835 2.33464 7.00002C2.33464 4.42169 4.42297 2.33335 7.0013 2.33335C9.57964 2.33335 11.668 4.42169 11.668 7.00002C11.668 9.57835 9.57964 11.6667 7.0013 11.6667Z",fill:"black"})})),{filled:!0}),$s=ks((e=>Ge("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:[We("path",{d:"M7.0013 1.16669C3.7813 1.16669 1.16797 3.78002 1.16797 7.00002C1.16797 10.22 3.7813 12.8334 7.0013 12.8334C10.2213 12.8334 12.8346 10.22 12.8346 7.00002C12.8346 3.78002 10.2213 1.16669 7.0013 1.16669ZM7.0013 11.6667C4.42297 11.6667 2.33464 9.57835 2.33464 7.00002C2.33464 4.42169 4.42297 2.33335 7.0013 2.33335C9.57964 2.33335 11.668 4.42169 11.668 7.00002C11.668 9.57835 9.57964 11.6667 7.0013 11.6667Z",fill:"black"}),We("path",{d:"M7.0013 9.91669C8.61213 9.91669 9.91797 8.61085 9.91797 7.00002C9.91797 5.38919 8.61213 4.08335 7.0013 4.08335C5.39047 4.08335 4.08464 5.38919 4.08464 7.00002C4.08464 8.61085 5.39047 9.91669 7.0013 9.91669Z",fill:"black"})]})),{filled:!0}),Us=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M11.0833 2.33332H10.5V1.16666H9.33333V2.33332H4.66667V1.16666H3.5V2.33332H2.91667C2.26917 2.33332 1.75 2.85832 1.75 3.49999V11.6667C1.75 12.3083 2.26917 12.8333 2.91667 12.8333H11.0833C11.725 12.8333 12.25 12.3083 12.25 11.6667V3.49999C12.25 2.85832 11.725 2.33332 11.0833 2.33332ZM11.0833 11.6667H2.91667V5.24999H11.0833V11.6667ZM3.79167 7.58332C3.79167 6.77832 4.445 6.12499 5.25 6.12499C6.055 6.12499 6.70833 6.77832 6.70833 7.58332C6.70833 8.38832 6.055 9.04166 5.25 9.04166C4.445 9.04166 3.79167 8.38832 3.79167 7.58332Z",fill:"black"})})),{filled:!0}),Hs=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{d:"M2.32812 7.58329V6.41663H11.6581V7.58329H2.32812Z",fill:"black"})})),{filled:!0}),Vs=({color:e,variant:t="body1",component:n,className:r,children:a,...o})=>{const i=bs(o);return We(n??{h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",label1:"label",label2:"label"}[t]??"span",{className:Qe(i.className,gs.root,gs[t],e&&gs[e],r),...ws(o),children:a})};Vs.classes=gs;const qs={root:"lsd-dropdown-item",icon:"lsd-dropdown-item__icon",label:"lsd-dropdown-item__label",error:"lsd-dropdown-item--error",disabled:"lsd-dropdown-item--disabled",selected:"lsd-dropdown-item--selected",withIcon:"lsd-dropdown-item--with-icon",small:"lsd-dropdown-item--small",medium:"lsd-dropdown-item--medium",large:"lsd-dropdown-item--large"},Ws=({label:e,size:t="large",withIcon:n,selected:r,disabled:a,className:o,...i})=>{const l=bs(i),s={color:"primary",className:qs.icon};return Ge("div",{role:"option","aria-selected":r?"true":"false",...ws(i),className:Qe(l.className,o,qs.root,qs[t],n&&qs.withIcon,a&&qs.disabled),children:[n&&We(r?Ts:Os,{...s}),We(Vs,{variant:"large"===t?"label1":"label2",component:"span",className:qs.label,children:e})]})};function Gs(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];e&&e.addEventListener&&e.addEventListener.apply(e,t)}function Zs(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];e&&e.removeEventListener&&e.removeEventListener.apply(e,t)}Ws.classes=qs;var Qs=["mousedown","touchstart"];const Ys=function(e,t,n){void 0===n&&(n=Qs);var a=r.useRef(t);r.useEffect((function(){a.current=t}),[t]),r.useEffect((function(){for(var t=function(t){var n=e.current;n&&!n.contains(t.target)&&a.current(t)},r=0,o=n;r<o.length;r++){var i=o[r];Gs(document,i,t)}return function(){for(var e=0,r=n;e<r.length;e++){var a=r[e];Zs(document,a,t)}}}),[n,e])};const Xs=function(e){r.useEffect(e,[])};const Ks=function(e){var t=r.useRef(e);t.current=e,Xs((function(){return function(){return t.current()}}))};const Js=function(e){var t=r.useRef(0),n=r.useState(e),a=n[0],o=n[1],i=r.useCallback((function(e){cancelAnimationFrame(t.current),t.current=requestAnimationFrame((function(){o(e)}))}),[]);return Ks((function(){cancelAnimationFrame(t.current)})),[a,i]};const eu=function(e){var t=Js({x:0,y:0}),n=t[0],a=t[1];return r.useEffect((function(){var t=function(){e.current&&a({x:e.current.scrollLeft,y:e.current.scrollTop})};return e.current&&Gs(e.current,"scroll",t,{capture:!1,passive:!0}),function(){e.current&&Zs(e.current,"scroll",t)}}),[e]),n},tu={root:"lsd-dropdown-menu",open:"lsd-dropdown-menu--open",large:"lsd-dropdown-menu--large",medium:"lsd-dropdown-menu--medium",small:"lsd-dropdown-menu--small"},nu=(e,t)=>{const[n,a]=r.useState({});return r.useEffect((()=>{const{width:t,height:n,top:r,left:o}=e.current.getBoundingClientRect();a({left:o+window.scrollX,width:t,top:r+n+window.scrollY})}),[t]),n},ru=({size:e="large",open:t,label:n,handleRef:a,onClose:o,children:i,...l})=>{const s=bs(l),u=r.useRef(null);Ys(u,(e=>{t&&!e.composedPath().includes(a.current)&&o&&o()}));const c=nu(a,t);return We("ul",{...ws(l),ref:u,role:"listbox","aria-label":n,style:{...c,...l.style??{}},className:Qe(s.className,l.className,tu.root,tu[e],t&&tu.open),children:i})};ru.classes=tu;const au=r.createContext({initialized:!1}),ou=()=>{var e;return(null==(e=r.useContext(au))?void 0:e.initialized)??!1},iu=({parentId:e})=>{const t=r.useRef();return"undefined"==typeof window||t.current||(t.current=document.createElement("div")),r.useEffect((()=>{var n;if("undefined"==typeof window||!t.current)return;const r=document.querySelectorAll(`#${e}`);return null==(n=r[r.length-1])||n.appendChild(t.current),()=>{var n;try{null==(n=document.getElementById(e))||n.removeChild(t.current)}catch(r){}}}),[e,t.current]),t.current},lu=({id:e,children:t})=>ou()?We(su,{id:e,children:t}):We(qe,{}),su=({id:e,children:t})=>{const n=iu({parentId:"lsd-presentation"});return n?a.createPortal(t,n,e):We(qe,{})},uu={root:"lsd-autocomplete",label:"lsd-autocomplete__label",inputContainer:"lsd-autocomplete__input-container",input:"lsd-autocomplete__input",icon:"lsd-autocomplete__icon",dropdownItemPlaceholder:"lsd-autocomplete__dropdown-item-placeholder",disabled:"lsd-autocomplete--disabled",error:"lsd-autocomplete--error",large:"lsd-autocomplete--large",medium:"lsd-autocomplete--medium",small:"lsd-autocomplete--small",withIcon:"lsd-autocomplete--with-icon",outlined:"lsd-autocomplete--outlined",underlined:"lsd-autocomplete--underlined"},cu=({label:e,size:t="large",withIcon:n=!1,error:a=!1,disabled:o=!1,children:i,value:l,defaultValue:s,placeholder:u,onChange:c,options:d=[],inputProps:f={},variant:p="outlined",...h})=>{const m=bs(h),g=r.useRef(null),v=r.useRef(null),b=Ye({defaultValue:s,value:l,onChange:c,ref:g}),y=b.value,[w,x]=r.useState(!1),[k,_]=r.useState(),E=e=>{x(!1),_(e),b.setValue(e)},S=r.useMemo((()=>b.filled?d.filter((e=>new RegExp(`^${b.value}.+`,"i").test(e))).map((e=>[e,e.slice(0,y.length),e.slice(y.length)])):d),[b.value,d]);r.useEffect((()=>{!k&&b.filled&&!w&&x(!0)}),[b.value,k,w]);const C=!o&&w&&S.length>0&&b.filled,T=(null==f?void 0:f.id)??(h.id||"autocomplete")+"-input";return Ge("div",{ref:v,...ws(h),className:Qe(h.className,m.className,uu.root,uu[t],o&&uu.disabled,n&&uu.withIcon,"outlined"===p?uu.outlined:uu.underlined),children:[e&&We(Vs,{htmlFor:T,className:uu.label,variant:"label2",component:"label",children:e}),Ge("div",{className:uu.inputContainer,children:[We("input",{id:T,ref:g,value:b.value,placeholder:u,onChange:b.onChange,disabled:o,onFocus:()=>x(!0),...f,className:Qe(f.className,uu.input,a&&uu.error)}),n&&b.value?We("span",{className:uu.icon,onClick:()=>b.setValue(""),children:We(Ps,{color:"primary"})}):n&&!b.value?We("span",{className:uu.icon,children:We(Fs,{color:"primary"})}):null]}),We(lu,{id:"autocomplete",children:We(ru,{handleRef:v,open:C,onClose:()=>x(!1),size:t,...ys(h),children:S.map(((e,n)=>We(Ws,{size:t,tabIndex:0,label:Ge(qe,{children:[e[1],We("span",{className:uu.dropdownItemPlaceholder,children:e[2]})]}),onClick:()=>E(e[0]),onKeyDown:t=>"Enter"===t.key&&E(e[0])},n)))})})]})};cu.classes=uu;const du={root:"lsd-badge",label:"lsd-badge__label",outlined:"lsd-badge--outlined",filled:"lsd-badge--filled",disabled:"lsd-badge--disabled",small:"lsd-badge--small",large:"lsd-badge--large"},fu=({variant:e="outlined",disabled:t,size:n="large",icon:r,iconDirection:a="left",children:o,...i})=>{const l=bs(i);return Ge("div",{"aria-label":o,...ws(i),className:Qe(i.className,l.className,du.root,du[e],t&&du.disabled,du[n]),children:["left"===a&&r,We(Vs,{component:"span",variant:"small"===n?"label2":"label1",className:du.label,children:o}),"right"===a&&r]})};fu.classes=du;const pu={root:"lsd-breadcrumb-item",outlined:"lsd-breadcrumb-item--outlined",itemLink:"lsd-breadcrumb-item__link",large:"lsd-breadcrumb-item--large",small:"lsd-breadcrumb-item--small"},hu=({size:e="large",label:t,link:n,linkComponent:r=(e=>We("a",{...e,children:e.children})),outlined:a,selected:o,ellipsisRef:i,onClick:l,className:s,...u})=>{const c=bs(u);return We("li",{...ws(u),className:Qe(c.className,pu.root,pu[e],s),"aria-selected":o?"true":"false",onClick:l,ref:i,children:We(r,{href:n,className:Qe(pu.itemLink,a&&pu.outlined),children:We(Vs,{color:"primary",component:"span",variant:"large"===e?"label1":"label2",children:t})})})};hu.classes=pu;const mu={root:"lsd-breadcrumb",list:"lsd-breadcrumb__list",listBox:"lsd-breadcrumb__dropdown-menu",open:"lsd-breadcrumb--open",disabled:"lsd-breadcrumb--disabled"},gu=({size:e="large",disabled:t=!1,ellipsis:n=!1,maxItems:a,value:o=[],onChange:i,options:l=[],...s})=>{const u=bs(s),c=r.useRef(null),[d,f]=r.useState(!1);a=Math.max(2,Math.min(a||2,l.length));const[p,...h]=l,[m,g]=n?[h.slice(0,h.length-a+1),h.slice(h.length-a+1)]:[[],h],v=t=>t.map(((t,n)=>We(hu,{outlined:n===g.length-1&&t!==p,label:t.value,link:t.link,linkComponent:null==t?void 0:t.linkComponent,size:e},n)));return r.useEffect((()=>{t&&d&&f(!1)}),[d,t]),Ge("div",{...ws(s),className:Qe(s.className,u.className,mu.root,t&&mu.disabled,d&&mu.open),children:[Ge("ul",{className:mu.list,children:[p&&v([p]),m.length>0&&We(hu,{ellipsisRef:c,label:"...",onClick:()=>{!t&&f((e=>!e))},size:e,...ys(s)}),v(g)]}),null!=(null==c?void 0:c.current)&&n&&a&&We(lu,{id:"breadcrumb",children:We(ru,{handleRef:c,open:d,onClose:()=>f(!1),className:Qe(mu.listBox),size:e,genericFontFamily:s.genericFontFamily,...ys(s),children:m.map(((e,t)=>We(hu,{label:e.value,link:e.link,className:pu.itemLink,linkComponent:null==e?void 0:e.linkComponent},t)))})})]})};gu.classes=mu;const vu=r.createContext(null),bu={root:"lsd-button",disabled:"lsd-button--disabled",large:"lsd-button--large",medium:"lsd-button--medium",small:"lsd-button--small",withIcon:"lsd-button--with-icon",outlined:"lsd-button--outlined",filled:"lsd-button--filled",text:"lsd-button__text",icon:"lsd-button__icon"},yu=({size:e,variant:t,disabled:n,icon:a,children:o,...i})=>{const l=r.useContext(vu),s=bs(i),u=bs(l||{}),c=s.className||u.className,d=e??(null==l?void 0:l.size)??"medium",f=t??(null==l?void 0:l.variant)??"outlined",p=n??(null==l?void 0:l.disabled)??!1;return We(qe,{children:Ge("button",{...ws(i),className:Qe(c,i.className,bu.root,bu[d],bu[f],p&&bu.disabled,a&&bu.withIcon),children:[We(Vs,{component:"span",className:bu.text,variant:"small"===d?"label2":"label1",children:o}),a&&We("span",{className:bu.icon,children:a})]})})};yu.classes=bu;const wu={root:"lsd-button-group",outlined:"lsd-button-group--outlined",filled:"lsd-button-group--filled",disabled:"lsd-button-group--disabled",small:"lsd-button-group--small",medium:"lsd-button-group--medium",large:"lsd-button-group--large"},xu=({size:e="large",disabled:t,variant:n="outlined",children:r,...a})=>{const o=bs(a);return We("div",{...ws(a),className:Qe(o.className,a.className,wu.root,wu[e],wu[n],t&&wu.disabled),children:We(vu.Provider,{value:{size:e,variant:n,disabled:t},children:r})})};xu.classes=wu;var ku={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}};function _u(e){return function(t){var n=t||{},r=n.width?String(n.width):e.defaultWidth;return e.formats[r]||e.formats[e.defaultWidth]}}var Eu={date:_u({formats:{full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},defaultWidth:"full"}),time:_u({formats:{full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},defaultWidth:"full"}),dateTime:_u({formats:{full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},Su={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"};function Cu(e){return function(t,n){var r,a=n||{};if("formatting"===(a.context?String(a.context):"standalone")&&e.formattingValues){var o=e.defaultFormattingWidth||e.defaultWidth,i=a.width?String(a.width):o;r=e.formattingValues[i]||e.formattingValues[o]}else{var l=e.defaultWidth,s=a.width?String(a.width):e.defaultWidth;r=e.values[s]||e.values[l]}return r[e.argumentCallback?e.argumentCallback(t):t]}}function Tu(e){return function(t,n){var r=String(t),a=n||{},o=a.width,i=o&&e.matchPatterns[o]||e.matchPatterns[e.defaultMatchWidth],l=r.match(i);if(!l)return null;var s,u=l[0],c=o&&e.parsePatterns[o]||e.parsePatterns[e.defaultParseWidth];return s="[object Array]"===Object.prototype.toString.call(c)?function(e,t){for(var n=0;n<e.length;n++)if(t(e[n]))return n}(c,(function(e){return e.test(u)})):function(e,t){for(var n in e)if(e.hasOwnProperty(n)&&t(e[n]))return n}(c,(function(e){return e.test(u)})),s=e.valueCallback?e.valueCallback(s):s,{value:s=a.valueCallback?a.valueCallback(s):s,rest:r.slice(u.length)}}}var Ou,Du={code:"en-US",formatDistance:function(e,t,n){var r;return n=n||{},r="string"==typeof ku[e]?ku[e]:1===t?ku[e].one:ku[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"in "+r:r+" ago":r},formatLong:Eu,formatRelative:function(e,t,n,r){return Su[e]},localize:{ordinalNumber:function(e,t){var n=Number(e),r=n%100;if(r>20||r<10)switch(r%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},era:Cu({values:{narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},defaultWidth:"wide"}),quarter:Cu({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:Cu({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},defaultWidth:"wide"}),day:Cu({values:{narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},defaultWidth:"wide"}),dayPeriod:Cu({values:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:(Ou={matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:function(e){return parseInt(e,10)}},function(e,t){var n=String(e),r=t||{},a=n.match(Ou.matchPattern);if(!a)return null;var o=a[0],i=n.match(Ou.parsePattern);if(!i)return null;var l=Ou.valueCallback?Ou.valueCallback(i[0]):i[0];return{value:l=r.valueCallback?r.valueCallback(l):l,rest:n.slice(o.length)}}),era:Tu({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:"any"}),quarter:Tu({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:Tu({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:Tu({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:Tu({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:"any"})},options:{weekStartsOn:0,firstWeekContainsDate:1}};function Pu(e){if(null===e||!0===e||!1===e)return NaN;var t=Number(e);return isNaN(t)?t:t<0?Math.ceil(t):Math.floor(t)}function Nu(e,t){if(t.length<e)throw new TypeError(e+" argument"+(e>1?"s":"")+" required, but only "+t.length+" present")}function Iu(e){Nu(1,arguments);var t=Object.prototype.toString.call(e);return e instanceof Date||"object"==typeof e&&"[object Date]"===t?new Date(e.getTime()):"number"==typeof e||"[object Number]"===t?new Date(e):("string"!=typeof e&&"[object String]"!==t||"undefined"==typeof console||(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule"),console.warn((new Error).stack)),new Date(NaN))}function Au(e,t){return Nu(2,arguments),function(e,t){Nu(2,arguments);var n=Iu(e).getTime(),r=Pu(t);return new Date(n+r)}(e,-Pu(t))}function Lu(e,t){switch(e){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});default:return t.date({width:"full"})}}function Ru(e,t){switch(e){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});default:return t.time({width:"full"})}}var ju={p:Ru,P:function(e,t){var n,r=e.match(/(P+)(p+)?/),a=r[1],o=r[2];if(!o)return Lu(e,t);switch(a){case"P":n=t.dateTime({width:"short"});break;case"PP":n=t.dateTime({width:"medium"});break;case"PPP":n=t.dateTime({width:"long"});break;default:n=t.dateTime({width:"full"})}return n.replace("{{date}}",Lu(a,t)).replace("{{time}}",Ru(o,t))}};function Mu(e){return e.getTime()%6e4}var Fu=["D","DD"],Bu=["YY","YYYY"];function zu(e){if("YYYY"===e)throw new RangeError("Use `yyyy` instead of `YYYY` for formatting years; see: https://git.io/fxCyr");if("YY"===e)throw new RangeError("Use `yy` instead of `YY` for formatting years; see: https://git.io/fxCyr");if("D"===e)throw new RangeError("Use `d` instead of `D` for formatting days of the month; see: https://git.io/fxCyr");if("DD"===e)throw new RangeError("Use `dd` instead of `DD` for formatting days of the month; see: https://git.io/fxCyr")}function $u(e,t){Nu(1,arguments);var n=t||{},r=n.locale,a=r&&r.options&&r.options.weekStartsOn,o=null==a?0:Pu(a),i=null==n.weekStartsOn?o:Pu(n.weekStartsOn);if(!(i>=0&&i<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var l=Iu(e),s=l.getUTCDay(),u=(s<i?7:0)+s-i;return l.setUTCDate(l.getUTCDate()-u),l.setUTCHours(0,0,0,0),l}function Uu(e,t){Nu(1,arguments);var n=Iu(e,t),r=n.getUTCFullYear(),a=t||{},o=a.locale,i=o&&o.options&&o.options.firstWeekContainsDate,l=null==i?1:Pu(i),s=null==a.firstWeekContainsDate?l:Pu(a.firstWeekContainsDate);if(!(s>=1&&s<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var u=new Date(0);u.setUTCFullYear(r+1,0,s),u.setUTCHours(0,0,0,0);var c=$u(u,t),d=new Date(0);d.setUTCFullYear(r,0,s),d.setUTCHours(0,0,0,0);var f=$u(d,t);return n.getTime()>=c.getTime()?r+1:n.getTime()>=f.getTime()?r:r-1}function Hu(e){Nu(1,arguments);var t=Iu(e),n=t.getUTCDay(),r=(n<1?7:0)+n-1;return t.setUTCDate(t.getUTCDate()-r),t.setUTCHours(0,0,0,0),t}function Vu(e){Nu(1,arguments);var t=Iu(e),n=t.getUTCFullYear(),r=new Date(0);r.setUTCFullYear(n+1,0,4),r.setUTCHours(0,0,0,0);var a=Hu(r),o=new Date(0);o.setUTCFullYear(n,0,4),o.setUTCHours(0,0,0,0);var i=Hu(o);return t.getTime()>=a.getTime()?n+1:t.getTime()>=i.getTime()?n:n-1}function qu(e){Nu(1,arguments);var t=Iu(e),n=Hu(t).getTime()-function(e){Nu(1,arguments);var t=Vu(e),n=new Date(0);return n.setUTCFullYear(t,0,4),n.setUTCHours(0,0,0,0),Hu(n)}(t).getTime();return Math.round(n/6048e5)+1}function Wu(e,t){Nu(1,arguments);var n=Iu(e),r=$u(n,t).getTime()-function(e,t){Nu(1,arguments);var n=t||{},r=n.locale,a=r&&r.options&&r.options.firstWeekContainsDate,o=null==a?1:Pu(a),i=null==n.firstWeekContainsDate?o:Pu(n.firstWeekContainsDate),l=Uu(e,t),s=new Date(0);return s.setUTCFullYear(l,0,i),s.setUTCHours(0,0,0,0),$u(s,t)}(n,t).getTime();return Math.round(r/6048e5)+1}function Gu(e,t){for(var n=e<0?"-":"",r=Math.abs(e).toString();r.length<t;)r="0"+r;return n+r}var Zu={G:function(e,t,n){var r=e.getUTCFullYear()>0?1:0;switch(t){case"G":case"GG":case"GGG":return n.era(r,{width:"abbreviated"});case"GGGGG":return n.era(r,{width:"narrow"});default:return n.era(r,{width:"wide"})}},y:function(e,t,n){if("yo"===t){var r=e.getUTCFullYear(),a=r>0?r:1-r;return n.ordinalNumber(a,{unit:"year"})}return function(e,t){var n=e.getUTCFullYear(),r=n>0?n:1-n;return Gu("yy"===t?r%100:r,t.length)}(e,t)},Y:function(e,t,n,r){var a=Uu(e,r),o=a>0?a:1-a;return"YY"===t?Gu(o%100,2):"Yo"===t?n.ordinalNumber(o,{unit:"year"}):Gu(o,t.length)},R:function(e,t){return Gu(Vu(e),t.length)},u:function(e,t){return Gu(e.getUTCFullYear(),t.length)},Q:function(e,t,n){var r=Math.ceil((e.getUTCMonth()+1)/3);switch(t){case"Q":return String(r);case"QQ":return Gu(r,2);case"Qo":return n.ordinalNumber(r,{unit:"quarter"});case"QQQ":return n.quarter(r,{width:"abbreviated",context:"formatting"});case"QQQQQ":return n.quarter(r,{width:"narrow",context:"formatting"});default:return n.quarter(r,{width:"wide",context:"formatting"})}},q:function(e,t,n){var r=Math.ceil((e.getUTCMonth()+1)/3);switch(t){case"q":return String(r);case"qq":return Gu(r,2);case"qo":return n.ordinalNumber(r,{unit:"quarter"});case"qqq":return n.quarter(r,{width:"abbreviated",context:"standalone"});case"qqqqq":return n.quarter(r,{width:"narrow",context:"standalone"});default:return n.quarter(r,{width:"wide",context:"standalone"})}},M:function(e,t,n){var r=e.getUTCMonth();switch(t){case"M":case"MM":return function(e,t){var n=e.getUTCMonth();return"M"===t?String(n+1):Gu(n+1,2)}(e,t);case"Mo":return n.ordinalNumber(r+1,{unit:"month"});case"MMM":return n.month(r,{width:"abbreviated",context:"formatting"});case"MMMMM":return n.month(r,{width:"narrow",context:"formatting"});default:return n.month(r,{width:"wide",context:"formatting"})}},L:function(e,t,n){var r=e.getUTCMonth();switch(t){case"L":return String(r+1);case"LL":return Gu(r+1,2);case"Lo":return n.ordinalNumber(r+1,{unit:"month"});case"LLL":return n.month(r,{width:"abbreviated",context:"standalone"});case"LLLLL":return n.month(r,{width:"narrow",context:"standalone"});default:return n.month(r,{width:"wide",context:"standalone"})}},w:function(e,t,n,r){var a=Wu(e,r);return"wo"===t?n.ordinalNumber(a,{unit:"week"}):Gu(a,t.length)},I:function(e,t,n){var r=qu(e);return"Io"===t?n.ordinalNumber(r,{unit:"week"}):Gu(r,t.length)},d:function(e,t,n){return"do"===t?n.ordinalNumber(e.getUTCDate(),{unit:"date"}):function(e,t){return Gu(e.getUTCDate(),t.length)}(e,t)},D:function(e,t,n){var r=function(e){Nu(1,arguments);var t=Iu(e),n=t.getTime();t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0);var r=n-t.getTime();return Math.floor(r/864e5)+1}(e);return"Do"===t?n.ordinalNumber(r,{unit:"dayOfYear"}):Gu(r,t.length)},E:function(e,t,n){var r=e.getUTCDay();switch(t){case"E":case"EE":case"EEE":return n.day(r,{width:"abbreviated",context:"formatting"});case"EEEEE":return n.day(r,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(r,{width:"short",context:"formatting"});default:return n.day(r,{width:"wide",context:"formatting"})}},e:function(e,t,n,r){var a=e.getUTCDay(),o=(a-r.weekStartsOn+8)%7||7;switch(t){case"e":return String(o);case"ee":return Gu(o,2);case"eo":return n.ordinalNumber(o,{unit:"day"});case"eee":return n.day(a,{width:"abbreviated",context:"formatting"});case"eeeee":return n.day(a,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(a,{width:"short",context:"formatting"});default:return n.day(a,{width:"wide",context:"formatting"})}},c:function(e,t,n,r){var a=e.getUTCDay(),o=(a-r.weekStartsOn+8)%7||7;switch(t){case"c":return String(o);case"cc":return Gu(o,t.length);case"co":return n.ordinalNumber(o,{unit:"day"});case"ccc":return n.day(a,{width:"abbreviated",context:"standalone"});case"ccccc":return n.day(a,{width:"narrow",context:"standalone"});case"cccccc":return n.day(a,{width:"short",context:"standalone"});default:return n.day(a,{width:"wide",context:"standalone"})}},i:function(e,t,n){var r=e.getUTCDay(),a=0===r?7:r;switch(t){case"i":return String(a);case"ii":return Gu(a,t.length);case"io":return n.ordinalNumber(a,{unit:"day"});case"iii":return n.day(r,{width:"abbreviated",context:"formatting"});case"iiiii":return n.day(r,{width:"narrow",context:"formatting"});case"iiiiii":return n.day(r,{width:"short",context:"formatting"});default:return n.day(r,{width:"wide",context:"formatting"})}},a:function(e,t,n){var r=e.getUTCHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":case"aaa":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"aaaaa":return n.dayPeriod(r,{width:"narrow",context:"formatting"});default:return n.dayPeriod(r,{width:"wide",context:"formatting"})}},b:function(e,t,n){var r,a=e.getUTCHours();switch(r=12===a?"noon":0===a?"midnight":a/12>=1?"pm":"am",t){case"b":case"bb":case"bbb":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"bbbbb":return n.dayPeriod(r,{width:"narrow",context:"formatting"});default:return n.dayPeriod(r,{width:"wide",context:"formatting"})}},B:function(e,t,n){var r,a=e.getUTCHours();switch(r=a>=17?"evening":a>=12?"afternoon":a>=4?"morning":"night",t){case"B":case"BB":case"BBB":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"BBBBB":return n.dayPeriod(r,{width:"narrow",context:"formatting"});default:return n.dayPeriod(r,{width:"wide",context:"formatting"})}},h:function(e,t,n){if("ho"===t){var r=e.getUTCHours()%12;return 0===r&&(r=12),n.ordinalNumber(r,{unit:"hour"})}return function(e,t){return Gu(e.getUTCHours()%12||12,t.length)}(e,t)},H:function(e,t,n){return"Ho"===t?n.ordinalNumber(e.getUTCHours(),{unit:"hour"}):function(e,t){return Gu(e.getUTCHours(),t.length)}(e,t)},K:function(e,t,n){var r=e.getUTCHours()%12;return"Ko"===t?n.ordinalNumber(r,{unit:"hour"}):Gu(r,t.length)},k:function(e,t,n){var r=e.getUTCHours();return 0===r&&(r=24),"ko"===t?n.ordinalNumber(r,{unit:"hour"}):Gu(r,t.length)},m:function(e,t,n){return"mo"===t?n.ordinalNumber(e.getUTCMinutes(),{unit:"minute"}):function(e,t){return Gu(e.getUTCMinutes(),t.length)}(e,t)},s:function(e,t,n){return"so"===t?n.ordinalNumber(e.getUTCSeconds(),{unit:"second"}):function(e,t){return Gu(e.getUTCSeconds(),t.length)}(e,t)},S:function(e,t){return function(e,t){var n=t.length,r=e.getUTCMilliseconds();return Gu(Math.floor(r*Math.pow(10,n-3)),t.length)}(e,t)},X:function(e,t,n,r){var a=(r._originalDate||e).getTimezoneOffset();if(0===a)return"Z";switch(t){case"X":return Yu(a);case"XXXX":case"XX":return Xu(a);default:return Xu(a,":")}},x:function(e,t,n,r){var a=(r._originalDate||e).getTimezoneOffset();switch(t){case"x":return Yu(a);case"xxxx":case"xx":return Xu(a);default:return Xu(a,":")}},O:function(e,t,n,r){var a=(r._originalDate||e).getTimezoneOffset();switch(t){case"O":case"OO":case"OOO":return"GMT"+Qu(a,":");default:return"GMT"+Xu(a,":")}},z:function(e,t,n,r){var a=(r._originalDate||e).getTimezoneOffset();switch(t){case"z":case"zz":case"zzz":return"GMT"+Qu(a,":");default:return"GMT"+Xu(a,":")}},t:function(e,t,n,r){var a=r._originalDate||e;return Gu(Math.floor(a.getTime()/1e3),t.length)},T:function(e,t,n,r){return Gu((r._originalDate||e).getTime(),t.length)}};function Qu(e,t){var n=e>0?"-":"+",r=Math.abs(e),a=Math.floor(r/60),o=r%60;if(0===o)return n+String(a);var i=t||"";return n+String(a)+i+Gu(o,2)}function Yu(e,t){return e%60==0?(e>0?"-":"+")+Gu(Math.abs(e)/60,2):Xu(e,t)}function Xu(e,t){var n=t||"",r=e>0?"-":"+",a=Math.abs(e);return r+Gu(Math.floor(a/60),2)+n+Gu(a%60,2)}var Ku=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,Ju=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,ec=/^'([^]*?)'?$/,tc=/''/g,nc=/[a-zA-Z]/;function rc(e,t,n){Nu(2,arguments);var r=String(t),a=n||{},o=a.locale||Du,i=o.options&&o.options.firstWeekContainsDate,l=null==i?1:Pu(i),s=null==a.firstWeekContainsDate?l:Pu(a.firstWeekContainsDate);if(!(s>=1&&s<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var u=o.options&&o.options.weekStartsOn,c=null==u?0:Pu(u),d=null==a.weekStartsOn?c:Pu(a.weekStartsOn);if(!(d>=0&&d<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");if(!o.localize)throw new RangeError("locale must contain localize property");if(!o.formatLong)throw new RangeError("locale must contain formatLong property");var f=Iu(e);if(!function(e){Nu(1,arguments);var t=Iu(e);return!isNaN(t)}(f))throw new RangeError("Invalid time value");var p=function(e){var t=new Date(e.getTime()),n=Math.ceil(t.getTimezoneOffset());return t.setSeconds(0,0),6e4*n+(n>0?(6e4+Mu(t))%6e4:Mu(t))}(f),h=Au(f,p),m={firstWeekContainsDate:s,weekStartsOn:d,locale:o,_originalDate:f},g=r.match(Ju).map((function(e){var t=e[0];return"p"===t||"P"===t?(0,ju[t])(e,o.formatLong,m):e})).join("").match(Ku).map((function(e){if("''"===e)return"'";var t=e[0];if("'"===t)return function(e){return e.match(ec)[1].replace(tc,"'")}(e);var n=Zu[t];if(n)return!a.useAdditionalWeekYearTokens&&function(e){return-1!==Bu.indexOf(e)}(e)&&zu(e),!a.useAdditionalDayOfYearTokens&&function(e){return-1!==Fu.indexOf(e)}(e)&&zu(e),n(h,e,o.localize,m);if(t.match(nc))throw new RangeError("Format string contains an unescaped latin alphabet character `"+t+"`");return e})).join("");return g}function ac(e,t){Nu(2,arguments);var n=Iu(e),r=Pu(t);return isNaN(r)?new Date(NaN):r?(n.setDate(n.getDate()+r),n):n}function oc(e,t){Nu(1,arguments);var n=e||{},r=Iu(n.start),a=Iu(n.end).getTime();if(!(r.getTime()<=a))throw new RangeError("Invalid interval");var o=[],i=r;i.setHours(0,0,0,0);var l=t&&"step"in t?Number(t.step):1;if(l<1||isNaN(l))throw new RangeError("`options.step` must be a number greater than 1");for(;i.getTime()<=a;)o.push(Iu(i)),i.setDate(i.getDate()+l),i.setHours(0,0,0,0);return o}function ic(e,t){Nu(1,arguments);var n=t||{},r=n.locale,a=r&&r.options&&r.options.weekStartsOn,o=null==a?0:Pu(a),i=null==n.weekStartsOn?o:Pu(n.weekStartsOn);if(!(i>=0&&i<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var l=Iu(e),s=l.getDay(),u=6+(s<i?-7:0)-(s-i);return l.setDate(l.getDate()+u),l.setHours(23,59,59,999),l}function lc(e){Nu(1,arguments);var t=Iu(e);return t.setDate(1),t.setHours(0,0,0,0),t}function sc(e,t){Nu(1,arguments);var n=t||{},r=n.locale,a=r&&r.options&&r.options.weekStartsOn,o=null==a?0:Pu(a),i=null==n.weekStartsOn?o:Pu(n.weekStartsOn);if(!(i>=0&&i<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var l=Iu(e),s=l.getDay(),u=(s<i?7:0)+s-i;return l.setDate(l.getDate()-u),l.setHours(0,0,0,0),l}var uc=function(e){return rc(e,"dd")},cc=function(e){return rc(e,"eeeeee")},dc=function(e){return rc(e,"MMMM yyyy")};function fc(e){var t=e.year,n=e.month,a=e.firstDayOfWeek,o=void 0===a?1:a,i=e.dayLabelFormat,l=void 0===i?uc:i,s=e.weekdayLabelFormat,u=void 0===s?cc:s,c=e.monthLabelFormat,d=void 0===c?dc:c;return{days:r.useMemo((function(){return function(e){var t=e.year,n=e.month,r=e.firstDayOfWeek,a=void 0===r?1:r,o=e.dayLabelFormat,i=void 0===o?function(e){return rc(e,"dd")}:o,l=new Date(t,n),s=lc(l),u=function(e){return Nu(1,arguments),Iu(e).getDay()}(s),c=function(e){Nu(1,arguments);var t=Iu(e),n=t.getMonth();return t.setFullYear(t.getFullYear(),n+1,0),t.setHours(23,59,59,999),t}(l);return function(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var r=Array(e),a=0;for(t=0;t<n;t++)for(var o=arguments[t],i=0,l=o.length;i<l;i++,a++)r[a]=o[i];return r}(Array.from(Array(u>=a?u-a:6-a+u+1).keys()).fill(0),oc({start:s,end:c}).map((function(e){return{date:e,dayLabel:i(e)}})))}({year:t,month:n,firstDayOfWeek:o,dayLabelFormat:l})}),[t,n,o,l]),weekdayLabels:r.useMemo((function(){return function(e){var t=void 0===e?{}:e,n=t.firstDayOfWeek,r=void 0===n?1:n,a=t.weekdayLabelFormat,o=void 0===a?function(e){return rc(e,"iiiiii")}:a,i=new Date;return oc({start:ac(sc(i),r),end:ac(ic(i),r)}).reduce((function(e,t){return e.push(o(t)),e}),[])}({firstDayOfWeek:o,weekdayLabelFormat:u})}),[o,u]),monthLabel:d(new Date(t,n))}}function pc(e,t){Nu(2,arguments);var n=Iu(e),r=Iu(t);return n.getTime()<r.getTime()}function hc(e,t){Nu(2,arguments);var n=Iu(e),r=Iu(t);return n.getTime()>r.getTime()}function mc(e,t){Nu(2,arguments);var n=t||{},r=Iu(e).getTime(),a=Iu(n.start).getTime(),o=Iu(n.end).getTime();if(!(a<=o))throw new RangeError("Invalid interval");return r>=a&&r<=o}function gc(e){Nu(1,arguments);var t=Iu(e);return t.setHours(0,0,0,0),t}function vc(e,t){Nu(2,arguments);var n=gc(e),r=gc(t);return n.getTime()===r.getTime()}function bc(e,t){Nu(2,arguments);var n=Iu(e),r=Pu(t);if(isNaN(r))return new Date(NaN);if(!r)return n;var a=n.getDate(),o=new Date(n.getTime());return o.setMonth(n.getMonth()+r+1,0),a>=o.getDate()?o:(n.setFullYear(o.getFullYear(),o.getMonth(),a),n)}var yc=function(e,t){return void 0===e&&(e=[]),e.some((function(e){return vc(t,e)}))};function wc(e){var t=lc(e);return{year:function(e){return Nu(1,arguments),Iu(e).getFullYear()}(t),month:function(e){return Nu(1,arguments),Iu(e).getMonth()}(t),date:t}}function xc(e,t){var n=wc(t||gc(Date.now())),r=n.date,a=[n];return e>1&&(a=Array.from(Array(e-1).keys()).reduce((function(e){return r=bc(e[e.length-1].date,1),e.concat([wc(r)])}),a)),a}function kc(e,t,n,r){var a=e[r?n>0?0:e.length-r:n>0?e.length-1:0].date;return Array.from(Array(t).keys()).reduce((function(e){return a=0===e.length?bc(a,n):bc(a,n>=0?1:-1),n>0?e.concat([wc(a)]):[wc(a)].concat(e)}),[])}function _c(e){var t=e.startDate,n=e.endDate,r=e.isDateBlocked,a=e.minBookingDays,o=e.exactMinBookingDays,i=e.minBookingDate,l=e.maxBookingDate,s=!i||!pc(t,ac(i,-1)),u=!l||!hc(ac(t,a-1),l);return!((!t||1!==a||n||r(t))&&(t&&a>1&&!n&&!o||t&&a>0&&o&&s&&u||t&&a>0&&o&&!i&&!l?oc({start:t,end:ac(t,a-1)}).some((function(e){return r(e)})):!t||!n||o||pc(n,ac(t,a-1))||oc({start:t,end:n}).some((function(e){return r(e)}))))}function Ec(e){var t=e.startDate,n=e.endDate,a=e.focusedInput,o=e.minBookingDate,i=e.maxBookingDate,l=e.onDatesChange,s=e.initialVisibleMonth,u=e.exactMinBookingDays,c=void 0!==u&&u,d=e.minBookingDays,f=void 0===d?1:d,p=e.numberOfMonths,h=void 0===p?2:p,m=e.firstDayOfWeek,g=void 0===m?1:m,v=e.isDateBlocked,b=void 0===v?function(){return!1}:v,y=e.unavailableDates,w=void 0===y?[]:y,x=e.changeActiveMonthOnSelect,k=void 0===x||x,_=r.useState((function(){return xc(h,t||s||null)})),E=_[0],S=_[1],C=r.useState(null),T=C[0],O=C[1],D=r.useState(t),P=D[0],N=D[1];r.useEffect((function(){return"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("keydown",R),function(){window.removeEventListener&&window.removeEventListener("keydown",R)}}));var I=function(e){return yc(w,e)||b(e)},A=function(e){N(e),(!P||P&&!vc(e,P))&&S(xc(h,e))},L=function(e){return function(e){var t=e.date,n=e.minBookingDate,r=e.maxBookingDate,a=e.isDateBlockedFn,o=e.startDate,i=e.endDate,l=e.minBookingDays,s=void 0===l?1:l,u=e.unavailableDates,c=void 0===u?[]:u,d=n?new Date(n.getFullYear(),n.getMonth(),n.getDate(),0,0,0):n,f=r?new Date(r.getFullYear(),r.getMonth(),r.getDate(),0,0,0):r;return!!(yc(c,t)||d&&pc(t,d)||f&&hc(t,f)||o&&!i&&s>1&&mc(t,{start:o,end:ac(o,s-2)})||a&&a(t))}({date:e,minBookingDate:o,maxBookingDate:i,startDate:t,endDate:n,minBookingDays:f,isDateBlockedFn:I})};function R(e){if(("ArrowRight"===e.key||"ArrowLeft"===e.key||"ArrowDown"===e.key||"ArrowUp"===e.key)&&!P){var t=E[0];A(t.date),S(xc(h,t.date))}}var j=r.useCallback((function(){S(kc(E,h,-1)),N(null)}),[E,h]),M=r.useCallback((function(){S(kc(E,h,-1,1)),N(null)}),[E,h]),F=r.useCallback((function(){S(kc(E,h,1)),N(null)}),[E,h]),B=r.useCallback((function(){S(kc(E,h,1,1)),N(null)}),[E,h]),z=r.useCallback((function(e){S(xc(h,e)),N(null)}),[h]),$=r.useCallback((function(e){void 0===e&&(e=1),S(kc(E,h,-(12*e-h+1))),N(null)}),[E,h]),U=r.useCallback((function(e){void 0===e&&(e=1),S(kc(E,h,12*e-h+1)),N(null)}),[E,h]);return{firstDayOfWeek:g,activeMonths:E,isDateSelected:function(e){return function(e,t,n){return!(!t||!n)&&mc(e,{start:t,end:n})}(e,t,n)},isDateHovered:function(e){return a=(r={date:e,hoveredDate:T,startDate:t,endDate:n,minBookingDays:f,exactMinBookingDays:c,isDateBlocked:I}).date,o=r.startDate,i=r.endDate,l=r.isDateBlocked,u=r.minBookingDays,(s=r.hoveredDate)&&u>1&&r.exactMinBookingDays&&mc(a,{start:s,end:ac(s,u-1)})?!oc({start:s,end:ac(s,u-1)}).some((function(e){return l(e)})):o&&!i&&s&&mc(a,{start:o,end:ac(o,u-1)})&&vc(o,s)&&u>1?!oc({start:o,end:ac(o,u-1)}).some((function(e){return l(e)})):!(!o||i||!s||pc(s,o)||!mc(a,{start:o,end:s})||oc({start:o,end:s}).some((function(e){return l(e)})));var r,a,o,i,l,s,u},isFirstOrLastSelectedDate:function(e){return function(e,t,n){return!!(t&&vc(e,t)||n&&vc(e,n))}(e,t,n)},isStartDate:function(e){return function(e,t){return!(!t||!vc(e,t))}(e,t)},isEndDate:function(e){return function(e,t){return!(!t||!vc(e,t))}(e,n)},isDateBlocked:L,numberOfMonths:h,isDateFocused:function(e){return!!P&&vc(e,P)},focusedDate:P,hoveredDate:T,onResetDates:function(){l({startDate:null,endDate:null,focusedInput:"startDate"})},onDateHover:function(e){if(e){if(e){var r=!L(e)||t&&vc(e,t),a=!o||!pc(e,ac(o,-1)),l=!i||!hc(e,i),s=ac(e,f-1),u=!o||!pc(s,o),d=!i||!hc(s,i),p=c&&f>1&&a&&l&&u&&d,h=t&&!n&&!c&&a&&l,m=!(f>1&&t)||mc(e,{start:t,end:ac(t,f-2)}),g=t&&vc(e,t)&&m;r&&(p||h||g)?O(e):null!==T&&O(null)}}else O(null)},onDateSelect:function(e){("endDate"===a||"startDate"===a)&&f>0&&c&&_c({minBookingDays:f,exactMinBookingDays:c,minBookingDate:o,maxBookingDate:i,isDateBlocked:I,startDate:e,endDate:null})?l({startDate:e,endDate:ac(e,f-1),focusedInput:null}):("endDate"===a&&t&&pc(e,t)||"startDate"===a&&n&&hc(e,n))&&!c&&_c({minBookingDays:f,isDateBlocked:I,startDate:e,endDate:null})?l({endDate:null,startDate:e,focusedInput:"endDate"}):"startDate"===a&&!c&&_c({minBookingDays:f,isDateBlocked:I,endDate:n,startDate:e})?l({endDate:n,startDate:e,focusedInput:"endDate"}):"startDate"===a&&!c&&_c({minBookingDays:f,isDateBlocked:I,endDate:null,startDate:e})?l({endDate:null,startDate:e,focusedInput:"endDate"}):"endDate"===a&&t&&!pc(e,t)&&!c&&_c({minBookingDays:f,isDateBlocked:I,startDate:t,endDate:e})&&l({startDate:t,endDate:e,focusedInput:null}),"endDate"!==a&&(!P||P&&!vc(e,P))&&k&&S(xc(h,e))},onDateFocus:A,goToPreviousMonths:j,goToPreviousMonthsByOneMonth:M,goToNextMonths:F,goToNextMonthsByOneMonth:B,goToDate:z,goToPreviousYear:$,goToNextYear:U}}const Sc={root:"lsd-calendar",container:"lsd-calendar-container",small:"lsd-calendar--small",medium:"lsd-calendar--medium",large:"lsd-calendar--large",open:"lsd-calendar--open",disabled:"lsd-calendar--disabled",header:"lsd-calendar-header",weekDay:"lsd-calendar__week_day",button:"lsd-calendar__button",changeYear:"lsd-calendar__change-year",changeYearActive:"lsd-calendar__change-year--active",changeYearIconContainer:"lsd-calendar__change-year-icon-container",year:"lsd-calendar-year",month:"lsd-calendar-month",day:"lsd-calendar-day",yearAndIcon:"lsd-calendar__year-and-icon",monthAndYear:"lsd-calendar__month-and-year",dayContainer:"lsd-calendar-day__container",dayRange:"lsd-calendar-day--range",daySelected:"lsd-calendar-day--selected",dayDisabled:"lsd-calendar-day--disabled",dayIsToday:"lsd-calendar-day--today",dayBorderLeft:"lsd-calendar-day--border-left",dayBorderRight:"lsd-calendar-day--border-right",dayBorderLeftAndRight:"lsd-calendar-day--border-left-and-right",dayBorderTopAndBottom:"lsd-calendar-day--border-top-and-bottom",todayIndicator:"lsd-calendar-day__today_indicator",monthTable:"lsd-calendar__month-table",nextMonthButton:"lsd-calendar__next-month-button",previousMonthButton:"lsd-calendar__previous-month-button",yearDropdown:"lsd-calendar__year-dropdown",yearDropdownHidden:"lsd-calendar__year-dropdown--hidden"},Cc=r.createContext(null),Tc=()=>r.useContext(Cc),Oc=(e,t,n)=>{if(!e)return{isValid:!1,date:null};const r=new Date(e+"T00:00:00");return{isValid:!Number.isNaN(+r)&&r>=t&&r<=n,date:r}},Dc=e=>new Date(e.getTime()-6e4*e.getTimezoneOffset()).toISOString().split("T")[0],Pc=e=>e.setHours(0,0,0,0),Nc=(e,t,n)=>!!(e&&t&&n)&&(Pc(t)<=Pc(e)&&Pc(n)>=Pc(e)),Ic=(e,t)=>{if(!e||!t)return!1;return Dc(e)===Dc(t)},Ac=e=>{const t=(e=>{const t=e.find((e=>"number"!=typeof e));return t?new Date(t.date):new Date})(e),n=new Date(t);n.setDate(n.getDate()-t.getDay());const r=[];for(let a=0;a<42;a++){const e=new Date(n);e.setDate(e.getDate()+a),r.push(e)}return r},Lc=(e,t)=>e&&e===t?null:t;function Rc(e,t){if(!e||!t)return!0;let n=new Date(Dc(new Date(e)));return new Date(Dc(new Date(t)))>n}const jc=(e,t)=>"large"===t?"startDate"===e?130:291:"medium"===t?"startDate"===e?120:267:"small"===t?"startDate"===e?107:239:0,Mc=({day:e,index:t,fullMonthDays:n,disabled:a=!1})=>{const o=n[t],{mode:i,startDate:l,endDate:s,onDateSelect:u}=Tc(),c=r.useRef(null),d=Pc(o)===Pc(new Date),f="range"===i&&Nc(o,l,s),p=r.useCallback((()=>u(o)),[o,u]),h=Ic(o,l),m="range"===i&&Ic(o,s),g=h||m||f;if(!e)return null;const v=((e,t,n,r,a)=>{if(!n)return"";if(!r||!a)return Sc.dayBorderLeftAndRight;const{prevIndex:o,nextIndex:i}=((e,t)=>{const n=e-1,r=e+1;return{prevIndex:n>=0?n:null,nextIndex:r<t.length?r:null}})(e,t),l=null!==o&&Nc(t[o],r,a),s=null!==i&&Nc(t[i],r,a),u=null!==o&&Ic(t[o],r)||l,c=null!==i&&Ic(t[i],r)||s;let d="";return n&&(d=e%7==0?c?Sc.dayBorderLeft:Sc.dayBorderLeftAndRight:e%7==6?u?Sc.dayBorderRight:Sc.dayBorderLeftAndRight:u&&c?"":u?Sc.dayBorderRight:c?Sc.dayBorderLeft:Sc.dayBorderLeftAndRight),d})(t,n,g,l,s);return We("td",{onClick:p,ref:c,className:Qe(Sc.dayContainer,g&&Sc.dayBorderTopAndBottom,a&&Sc.dayDisabled,d&&Sc.dayIsToday,v),children:Ge("div",{className:Sc.day,children:[We(Vs,{variant:"label2",children:parseInt(e,10)}),d&&We(Vs,{variant:"label2",className:Sc.todayIndicator,children:"\u25ac"})]})})},Fc=({year:e,monthNumber:t,size:n,yearStep:a=10})=>{const o=r.useRef(null),i=r.useRef(null),{goToDate:l,changeYearMode:s,setChangeYearMode:u}=Tc(),c=r.useRef(null),{y:d}=eu(c),[f,p]=r.useState((()=>parseInt(e)-a)),[h,m]=r.useState((()=>parseInt(e)+a)),g=Array.from({length:h-f+1},((e,t)=>f+t));Ys(o,(()=>{u(!1)}));return r.useEffect((()=>{if(s&&i.current&&c.current){const e=i.current.offsetTop,t=i.current.offsetHeight,n=e-c.current.clientHeight/2+t/2;c.current.scrollTop=n}}),[s]),r.useEffect((()=>{var e,t;const n=null==(e=null==c?void 0:c.current)?void 0:e.scrollHeight,r=null==(t=null==c?void 0:c.current)?void 0:t.clientHeight;if(!n||!r)return;const o=d/(n-r)*100;o>90&&m((e=>Math.min(e+a,Gc))),o<10&&p((e=>Math.max(e-a,Wc)))}),[d,a]),Ge("div",{ref:o,className:Qe(Sc.changeYear,s&&Sc.changeYearActive),onClick:()=>{u(!s)},children:[Ge("div",{className:Qe(Sc.year,Sc.yearAndIcon),children:[We(Vs,{component:"span",variant:"large"===n?"label1":"label2",children:e}),We("div",{className:Sc.changeYearIconContainer,children:We(s?Cs:Es,{color:"primary"})})]}),We("div",{className:Qe(Sc.yearDropdown,!s&&Sc.yearDropdownHidden),ref:c,children:g.map((r=>We("div",{className:Sc.year,onClick:()=>(e=>{const n=new Date(e,t,1);l(n),u(!1)})(r),ref:r===parseInt(e)?i:null,children:We(Vs,{component:"span",variant:"large"===n?"label1":"label2",children:r})},r)))})]})},Bc=({direction:e,onClick:t,className:n})=>{const r="previous"===e?js:Ms;return We("button",{className:Qe(Sc.button,n),type:"button",onClick:t,children:We(r,{color:"primary"})})},zc=({monthLabel:e,monthNumber:t,size:n})=>{const{goToPreviousMonths:r,goToNextMonths:a}=Tc(),[o,i]=e.split(" ");return Ge("div",{className:Sc.header,children:[We(Bc,{direction:"previous",onClick:r,className:Sc.previousMonthButton}),Ge("div",{className:Sc.monthAndYear,children:[We(Vs,{className:Sc.month,component:"span",variant:"large"===n?"label1":"label2",children:o}),We(Fc,{year:i,monthNumber:t,size:n})]}),We(Bc,{direction:"next",onClick:a,className:Sc.nextMonthButton})]})},$c=({weekdayLabels:e})=>We("tr",{children:e.map(((e,t)=>We("th",{children:We("div",{className:Sc.weekDay,children:We(Vs,{variant:"label2",children:e[0]})})},t)))}),Uc=({days:e})=>{const t=Ac(e),n=new Date(t[15]).getMonth();return We(qe,{children:Array.from({length:6}).map(((e,r)=>We("tr",{children:Array.from({length:7}).map(((e,a)=>{const o=7*r+a,i=t[o];return We(Mc,{index:o,day:i.getDate().toString(),fullMonthDays:t,disabled:i.getMonth()!==n},`day-${o}`)}))},`week-${r}`)))})},Hc=({size:e="large",year:t,month:n,firstDayOfWeek:r})=>{const a=Tc(),o=(null==a?void 0:a.size)??e,{days:i,weekdayLabels:l,monthLabel:s}=fc({year:t,month:n,firstDayOfWeek:r});return Ge(qe,{children:[We(zc,{monthLabel:s,monthNumber:n,size:o}),Ge("table",{className:Sc.monthTable,children:[We("thead",{children:We($c,{weekdayLabels:l})}),We("tbody",{children:We(Uc,{days:i})})]})]})},Vc={root:"lsd-tooltip-base",arrowTip:"lsd-tooltip-base__arrow-tip",content:"lsd-tooltip-base__content"},qc=({children:e,arrowOffset:t,arrowPosition:n="top",arrowSize:r=10,rootRef:a,...o})=>{const i=bs(o),l={width:`${r}px`,height:`${r}px`,transform:"rotate(45deg)"};return["top","bottom"].includes(n)?(l.left=`${t}px`,l[n]=`-${r/2}px`):(l.top=`${t}px`,l[n]=`-${r/2}px`),We("div",{ref:a,...ws(o),className:Qe(i.className,o.className,Vc.root),children:t?Ge(qe,{children:[We("div",{className:Vc.arrowTip,style:l}),We("div",{className:Vc.content,children:e})]}):e})};qc.classes=Vc;const Wc=1850,Gc=2100,Zc=({open:e,handleRef:t,size:n="large",mode:a="date",disabled:o=!1,onStartDateChange:i,onEndDateChange:l,onClose:s,onCalendarClickaway:u,startDate:c,endDate:d,calendarType:f="startDate",minDate:p=new Date(Wc,0,1),maxDate:h=new Date(Gc,0,1),tooltipArrowOffset:m,...g})=>{const v=bs(g),b=r.useRef(null),[y,w]=r.useState(c?Oc(c,p,h).date:null),[x,k]=r.useState(d?Oc(d,p,h).date:null),[_,E]=r.useState(!1);Ys(b,(t=>{e&&(u&&u(t),void 0===e&&s&&s())}));const{activeMonths:S,onDateFocus:C,onDateSelect:T,goToPreviousMonths:O,goToNextMonths:D,goToDate:P}=Ec({startDate:y,endDate:x,focusedInput:"startDate",onDatesChange:e=>{const t=((e,t,n,r)=>{let a=t,o=n;const i=r.startDate;return i?("startDate"===e?(!o||o&&i.getTime()<=o.getTime())&&(a=i):"endDate"===e&&(!a||a&&i.getTime()>=a.getTime())&&(o=i),{newStartDate:a,newEndDate:o}):{newStartDate:a,newEndDate:o}})(f,y,x,e),{newStartDate:n,newEndDate:r}=t;n!==y&&(null==i||i(n??new Date),w(n)),r!==x&&"range"===a&&(null==l||l(r??new Date),k(r))},numberOfMonths:1});r.useEffect((()=>{const e=Oc(c,p,h);if(Ic(e.date,y)||w(e.isValid?e.date:null),"range"===a){const e=Oc(d,p,h);Ic(e.date,x)||k(e.isValid?e.date:null)}}),[c,d,a,p,h,y,x]),r.useEffect((()=>{y&&C(y)}),[y]),r.useEffect((()=>{x&&C(x)}),[x]);const N=nu(t,e);return We(Cc.Provider,{value:{size:n,mode:a,startDate:y,endDate:x,onDateFocus:C,onDateSelect:T,goToPreviousMonths:O,goToNextMonths:D,goToDate:P,changeYearMode:_,setChangeYearMode:E},children:We(qc,{...g,className:Qe({...ws(g)},v.className,g.className,Sc.root,Sc[n],e&&Sc.open,o&&Sc.disabled),rootRef:b,style:{...N,...g.style??{}},arrowOffset:m,children:We("div",{className:Qe(Sc.container),children:S.map(((e,t)=>We(Hc,{year:e.year,month:e.month,firstDayOfWeek:0,size:n},`${e.year}-${e.month}-${t}`)))})})})};Zc.classes=Sc;const Qc={root:"lsd-card",small:"lsd-card--small",medium:"lsd-card--medium",large:"lsd-card--large"},Yc=r.createContext(null),Xc=({size:e="large",children:t,...n})=>{const r=bs(n);return We(Yc.Provider,{value:{size:e},children:We("div",{...ws(n),className:Qe(r.className,Qc.root,Qc[e]),children:t})})};Xc.classes=Qc;const Kc={root:"lsd-card-body"},Jc=({children:e,...t})=>{const n=bs(t);return We("div",{...ws(t),className:Qe(n.className,t.className,Kc.root),children:e})};Jc.classes=Kc;const ed={root:"lsd-card-header",title:"lsd-card-header__title",small:"lsd-card-header--small",medium:"lsd-card-header--medium",large:"lsd-card-header--large"},td=({size:e="large",children:t,...n})=>{const a=bs(n),o=r.useContext(Yc),i=(null==o?void 0:o.size)??e;return We("div",{...ws(n),className:Qe(a.className,n.className,ed.root,ed[i]),children:We(Vs,{className:ed.title,component:"div",variant:"large"===i?"label1":"label2",children:t})})};td.classes=ed;const nd=r.createContext(null),rd=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M2.91667 1.75C2.27233 1.75 1.75 2.27233 1.75 2.91667V11.0833C1.75 11.7277 2.27233 12.25 2.91667 12.25H11.0833C11.7277 12.25 12.25 11.7277 12.25 11.0833V2.91667C12.25 2.27233 11.7277 1.75 11.0833 1.75H2.91667ZM9.91667 6.41667H4.08333V7.58333H9.91667V6.41667Z",fill:"black"})})),{filled:!0}),ad={root:"lsd-checkbox",input:"lsd-checkbox__input",icon:"lsd-checkbox__icon",label:"lsd-checkbox__label",focused:"lsd-checkbox--focused",disabled:"lsd-checkbox--disabled",indeterminate:"lsd-checkbox--indeterminate",large:"lsd-checkbox--large",medium:"lsd-checkbox--medium",small:"lsd-checkbox--small"},od=({name:e,size:t="large",onChange:n,checked:a,defaultChecked:o,disabled:i=!1,indeterminate:l=!1,inputProps:s={},children:u,...c})=>{const d=bs(c),f=r.useRef(null),[p,h]=r.useState(!1),m=Ye({value:a,defaultValue:o??!1,onChange:n,ref:f}),g=r.useContext(nd),v=(null==g?void 0:g.size)??t;return r.useEffect((()=>{if(!f.current)return;const e=()=>h(!0),t=()=>h(!1);return f.current.addEventListener("focus",e),f.current.addEventListener("blur",t),()=>{var n,r;null==(n=f.current)||n.removeEventListener("focus",e),null==(r=f.current)||r.removeEventListener("blur",t)}}),[f.current]),Ge(Vs,{color:"primary",variant:"large"===v?"label1":"label2",component:"label","aria-disabled":i?"true":"false",...ws(c),className:Qe(d.className,c.className,ad.root,ad[v],p&&ad.focused,i&&ad.disabled,l&&ad.indeterminate),children:[We("input",{ref:f,name:e,type:"checkbox",disabled:i,checked:m.value,onChange:m.onChange,defaultChecked:o,className:Qe(s.className,ad.input),...s}),l?We(rd,{color:"primary",focusable:!1}):m.value?We(Ts,{color:"primary",focusable:!1}):We(Os,{color:"primary",focusable:!1}),We("span",{className:ad.label,children:u})]})};od.classes=ad;const id={root:"lsd-checkbox-group",label:"lsd-checkbox-group__label"},ld=({size:e="large",label:t,children:n,...r})=>{const a=bs(r);return We(nd.Provider,{value:{size:e},children:Ge("div",{...ws(r),className:Qe(a.className,r.className,id.root),children:[We(Vs,{component:"span",variant:"small"===e?"label2":"label1",className:id.label,...ys(r),children:t}),n]})})};ld.classes=id;const sd={root:"lsd-collapse-header",trigger:"lsd-collapse-header__trigger",label:"lsd-collapse-header__label",icons:"lsd-collapse-header__icons",icon:"lsd-collapse-header__icon",menuIcon:"lsd-collapse-header__menu-icon",open:"lsd-collapse-header--open",disabled:"lsd-collapse-header--disabled",small:"lsd-collapse-header--small",medium:"lsd-collapse-header--medium",large:"lsd-collapse-header--large"},ud=({label:e,disabled:t=!1,open:n,setOpen:r,size:a="large",onTrigger:o,...i})=>{const l=bs(i);return We("div",{...ws(i),className:Qe(l.className,i.className,sd.root,sd[a],t&&sd.disabled,n&&sd.open),children:Ge("button",{className:Qe(sd.trigger),onClick:o,children:[We(Vs,{color:"primary",component:"label",variant:"small"===a?"label2":"label1",className:sd.label,children:e}),We("div",{className:sd.icons,children:We(n?Cs:Es,{color:"primary",className:sd.menuIcon})})]})})};ud.classes=sd;const cd={root:"lsd-collapse",content:"lsd-collapse__content",open:"lsd-collapse--open",disabled:"lsd-collapse--disabled"},dd=({label:e,disabled:t=!1,size:n="large",open:a,children:o,...i})=>{const l=bs(i),s=r.useRef(null),[u,c]=r.useState(a??!1),d=e=>{if(void 0===a)return c(e);i.onChange&&i.onChange(e)};return r.useEffect((()=>{t&&u&&d(!1)}),[t,u,d]),r.useEffect((()=>{void 0!==a&&c(a)}),[a]),Ge("div",{...ws(i),ref:s,className:Qe(l.className,i.className,cd.root,t&&cd.disabled,u&&cd.open),children:[We(ud,{label:e,open:u,setOpen:c,size:n,onTrigger:()=>!t&&d(!u),disabled:t,...ys(i)}),u&&We("div",{className:cd.content,children:o})]})};dd.classes=cd;const fd={root:"lsd-date-field",label:"lsd-date-field__label",inputContainer:"lsd-date-field__input-container",input:"lsd-date-field__input-container__input",inputFilled:"lsd-date-field__input-container__input--filled",icon:"lsd-date-field__input-container__icon",noIcon:"lsd-date-field__input-container__no-icon",iconButton:"lsd-date-field__input-container__icon-button",supportingText:"lsd-date-field__supporting-text",disabled:"lsd-date-field--disabled",error:"lsd-date-field--error",large:"lsd-date-field--large",medium:"lsd-date-field--medium",small:"lsd-date-field--small",outlined:"lsd-date-field--outlined",underlined:"lsd-date-field--underlined"},pd=({label:e,size:t="large",error:n=!1,errorIcon:a=!1,clearButton:o,supportingText:i,children:l,value:s,placeholder:u,defaultValue:c,disabled:d,onChange:f,icon:p,onIconClick:h,inputProps:m={},calendarIconRef:g,variant:v="underlined",...b})=>{const y=bs(b),w=r.useRef(null),x=Ye({defaultValue:c,value:s,onChange:f,ref:w}),k=(null==m?void 0:m.id)??(b.id||"date-field")+"-input";return Ge("div",{"aria-disabled":d?"true":"false",...b,className:Qe({...ws(b)},b.className,y.className,fd.root,fd[t],d&&fd.disabled,n&&fd.error),children:[e&&We(Vs,{htmlFor:k,className:fd.label,variant:"label2",component:"label",children:e}),Ge("div",{className:Qe(fd.inputContainer,"outlined"===v?fd.outlined:fd.underlined),children:[We("input",{id:k,type:"date",placeholder:u,...m,ref:w,value:x.value||"",onChange:x.onChange,className:Qe(m.className,fd.input,x.filled&&fd.inputFilled),max:m.max||"9999-12-31"}),p?We("span",{className:fd.icon,onClick:()=>!d&&h&&h(),ref:g,children:p}):n&&a?We("span",{className:fd.icon,children:We(Ns,{color:"primary"})}):o&&x.filled?We("span",{onClick:()=>!d&&x.setValue(""),className:fd.icon,children:We(Ps,{color:"primary"})}):We("span",{className:fd.noIcon})]}),i&&We("div",{className:Qe(fd.supportingText),children:We(Vs,{variant:"label2",component:"p",children:i})}),l]})};pd.classes=fd;const hd={root:"lsd-date-picker",calendar:"lsd-date-picker__calendar",large:"lsd-date-picker--large",medium:"lsd-date-picker--medium",small:"lsd-date-picker--small"},md=(e,t)=>t&&(null==e?void 0:e.composedPath().includes(t))||!1,gd=({label:e,size:t="large",value:n,onChange:a,withCalendar:o=!0,variant:i="underlined",...l})=>{const s=bs(l),u=r.useRef(null),c=r.useRef(null),[d,f]=r.useState(!1),p=void 0!==n,h=Ye({value:n,defaultValue:"",onChange:a,getInput:()=>{var e;return null==(e=u.current)?void 0:e.querySelector(`input.${pd.classes.input}`)}});return We("div",{id:(l.id||"date-picker")+"-input",ref:u,className:Qe({...ws(l)},l.className,s.className,hd.root,hd[t]),children:We(pd,{label:e,size:t,variant:i,icon:o&&We(Us,{color:"primary"}),onIconClick:()=>f((e=>!e)),value:p||d?h.value:void 0,onChange:h.onChange,calendarIconRef:c,...l,children:We(lu,{id:"calendar",children:o&&We(Zc,{...ys(l),onStartDateChange:e=>(e=>h.setValue(Dc(e)))(e),open:d,onCalendarClickaway:e=>{md(e,c.current)||f(!1)},handleRef:u,startDate:h.value,disabled:l.disabled,className:hd.calendar})})})})};gd.classes=hd;const vd={root:"lsd-date-range-picker",calendar:"lsd-date-picker__calendar",withCalendar:"lsd-date-range-picker--with-calendar",openCalendar:"lsd-date-range-picker--calendar-open",disabled:"lsd-date-range-picker--disabled",inputContainer:"lsd-date-range-picker__input-container",icon:"lsd-date-range-picker__icon",large:"lsd-date-range-picker--large",medium:"lsd-date-range-picker--medium",small:"lsd-date-range-picker--small",label:"lsd-date-range-picker__label",supportingText:"lsd-date-range-picker__supporting-text",outlined:"lsd-date-range-picker--outlined",separator:"lsd-date-range-picker__separator"},bd=({startValue:e,endValue:t,onStartDateChange:n,onEndDateChange:a,size:o="large",variant:i="underlined",withCalendar:l=!0,label:s,supportingText:u,disabled:c,...d})=>{const f=bs(d),p=r.useRef(null),h=r.useRef(null),m=r.useRef(null),[g,v]=r.useState(null),b=void 0!==e,y=void 0!==t,w=Ye({value:e,defaultValue:"",onChange:n,getInput:()=>{var e;return null==(e=p.current)?void 0:e.querySelectorAll(`input.${pd.classes.input}`)[0]}}),x=Ye({value:t,defaultValue:"",onChange:a,getInput:()=>{var e;return null==(e=p.current)?void 0:e.querySelectorAll(`input.${pd.classes.input}`)[1]}}),k={...d,size:o,label:void 0,supportingText:void 0},_="startDate"===g||"endDate"===g;return Ge("div",{ref:p,className:Qe({...ws(d)},f.className,d.className,vd.root,vd[o],l&&vd.withCalendar,_&&vd.openCalendar,c&&vd.disabled),children:[s&&We(Vs,{className:vd.label,variant:"label2",component:"label",children:s}),Ge("div",{className:Qe(d.className,vd.inputContainer,"outlined"===i&&vd.outlined),children:[We(pd,{variant:i,calendarIconRef:m,icon:l&&We(Us,{color:"primary"}),value:b||_?w.value:void 0,onIconClick:()=>v((e=>Lc(e,"startDate"))),onChange:e=>{x.value&&!Rc(e.target.value,x.value)||w.onChange(e)},...k}),We("div",{className:vd.separator}),We(pd,{variant:i,calendarIconRef:h,icon:l&&We(Us,{color:"primary"}),value:y||_?x.value:void 0,onIconClick:()=>v((e=>Lc(e,"endDate"))),onChange:e=>{w.value&&!Rc(w.value,e.target.value)||x.onChange(e)},...k})]}),u&&We("div",{className:Qe(vd.supportingText),children:We(Vs,{variant:"label2",component:"p",children:u})}),l&&We(lu,{id:"calendar",children:We(Zc,{...ys(d),onStartDateChange:e=>{w.setValue(Dc(e)),v("endDate")},onEndDateChange:e=>x.setValue(Dc(e)),onCalendarClickaway:e=>{md(e,h.current)||md(e,m.current)||v(null)},calendarType:g,open:_,onClose:()=>v(null),handleRef:p,mode:"range",disabled:c,startDate:w.value,endDate:x.value,className:vd.calendar,tooltipArrowOffset:jc(g,o),size:o})})]})};bd.classes=vd;const yd={root:"lsd-dropdown",label:"lsd-dropdown__label",buttonContainer:"lsd-dropdown__button-container",trigger:"lsd-dropdown__trigger",optionLabel:"lsd-dropdown__option-label",icons:"lsd-dropdown__icons",icon:"lsd-dropdown__icon",menuIcon:"lsd-dropdown__menu-icon",supportingText:"lsd-dropdown__supporting-text",open:"lsd-dropdown--open",error:"lsd-dropdown--error",disabled:"lsd-dropdown--disabled",small:"lsd-dropdown--small",medium:"lsd-dropdown--medium",large:"lsd-dropdown--large",outlined:"lsd-dropdown--outlined",underlined:"lsd-dropdown--underlined"},wd=({label:e,size:t="large",error:n=!1,disabled:a=!1,supportingText:o,triggerLabel:i,value:l=[],onChange:s,options:u=[],multi:c=!1,variant:d="outlined",isOpen:f,onToggle:p,menuProps:h={},...m})=>{const g=bs(m),v=r.useRef(null),b=void 0!==f,[y,w]=r.useState(!1);b&&f!==y&&w(f);const{select:x,isSelected:k,selected:_}=((e,t,{onDone:n,onChange:a,multi:o=!1}={})=>{const i=r.useMemo((()=>Object.fromEntries(e.map((e=>[e.value,e])))),[e]),[l,s]=r.useState(Array.isArray(t)?t:t?[t]:[]),u=r.useMemo((()=>ds(l,(()=>!0))),[l]),c=r.useMemo((()=>l.map((e=>i[e]))),[l,i]);r.useEffect((()=>{a&&s(Array.isArray(t)?t:t?[t]:[])}),[t,a]);const d=e=>"string"==typeof e?e:e.value;return{selected:c,isSelected:e=>!!u[d(e)],select:e=>{const t=d(e),r=o?u[t]?l.filter((e=>e!==t)):[...l,t]:[t];a?a(o?r:r[0]):s(r),!o&&n&&n(o?r:r[0])}}})(u,l,{multi:c,onChange:s,onDone:()=>{w(!1)}}),E=e=>{b?p&&p(e):w(e)};r.useEffect((()=>{a&&y&&!b&&w(!1)}),[y,a,b]);const S=(null==m?void 0:m.id)??(m.id||"dropdown")+"-input";return Ge("div",{ref:v,...ws(m),className:Qe(g.className,m.className,yd.root,yd[t],n&&yd.error,a&&yd.disabled,y&&yd.open,"outlined"===d?yd.outlined:yd.underlined),children:[e&&We(Vs,{htmlFor:S,className:yd.label,variant:"label2",component:"label",children:e}),We("div",{className:yd.buttonContainer,children:Ge("button",{id:S,className:Qe(yd.trigger),onClick:()=>{a||E(!y)},children:[We(Vs,{color:"primary",component:"label",variant:"large"===t?"label1":"label2",className:yd.optionLabel,children:_.length>0?_.map((e=>e.name)).join(", "):i}),Ge("div",{className:yd.icons,children:[n&&We(Ns,{color:"primary",className:yd.icon}),We(y?Cs:Es,{color:"primary",className:yd.menuIcon})]})]})}),o&&We(Vs,{variant:"large"===t?"label1":"label2",component:"p",className:yd.supportingText,children:o}),We(lu,{id:"dropdown",children:We(ru,{handleRef:v,open:y,onClose:()=>E(!1),size:t,genericFontFamily:m.genericFontFamily,...h,children:u.map((e=>We(Ws,{size:t,tabIndex:0,onClick:x.bind(null,e),withIcon:c,label:e.name,selected:k(e),onKeyDown:t=>"Enter"===t.key&&x(e)},e.value)))})})]})};wd.classes=yd;const xd=r.createContext(null),kd={root:"lsd-icon-button",outlined:"lsd-icon-button--outlined",filled:"lsd-icon-button--filled",disabled:"lsd-icon-button--disabled",small:"lsd-icon-button--small",medium:"lsd-icon-button--medium",large:"lsd-icon-button--large"},_d=({size:e,disabled:t,variant:n,children:a,...o})=>{const i=bs(o),l=r.useContext(xd),s=e??(null==l?void 0:l.size)??"large",u=n??(null==l?void 0:l.variant)??"outlined",c=t??(null==l?void 0:l.disabled)??!1;return We("button",{...ws(o),className:Qe(i.className,o.className,kd.root,kd[s],kd[u],c&&kd.disabled),children:a})};_d.classes=kd;const Ed={root:"lsd-icon-button-group",outlined:"lsd-icon-button-group--outlined",filled:"lsd-icon-button-group--filled",disabled:"lsd-icon-button-group--disabled",small:"lsd-icon-button-group--small",medium:"lsd-icon-button-group--medium",large:"lsd-icon-button-group--large"},Sd=({size:e="large",disabled:t,variant:n="outlined",children:r,...a})=>{const o=bs(a);return We("div",{...ws(a),className:Qe(o.className,a.className,Ed.root,Ed[e],Ed[n],t&&Ed.disabled),children:We(xd.Provider,{value:{size:e,variant:n,disabled:t},children:r})})};Sd.classes=Ed;const Cd={root:"lsd-modal",small:"lsd-modal--small",medium:"lsd-modal--medium",large:"lsd-modal--large",xsmall:"lsd-modal--extra-small",modalContainer:"lsd-modal__container",header:"lsd-modal__header",title:"lsd-modal__title",subtitle:"lsd-modal__subtitle",titleAndSubtitleContainer:"lsd-modal__title-and-subtitle-container",closeIcon:"lsd-modal__close-icon"},Td=({isOpen:e,size:t="large",title:n,subtitle:r,onClose:a,children:o,...i})=>{const l=bs(i);return e?We("div",{...ws(i),className:Qe(l.className,Cd.root,Cd[t]),onClick:e=>{e.target===e.currentTarget&&a&&a()},children:Ge("div",{className:Qe(Cd.modalContainer),children:[Ge("div",{className:Cd.header,children:[Ge("div",{className:Cd.titleAndSubtitleContainer,children:[!!n&&We(Vs,{className:Cd.title,component:"div",variant:"small"===t?"h6":"h5",children:n}),!!r&&We(Vs,{className:Cd.subtitle,variant:"small"===t?"label2":"label1",component:"div",children:r})]}),We(_d,{onClick:a,className:Cd.closeIcon,size:"medium",children:We(Ps,{color:"primary"})})]}),o]})}):null};Td.classes=Cd;const Od={root:"lsd-modal-body"},Dd=({children:e,...t})=>{const n=bs(t);return We("div",{...ws(t),className:Qe(n.className,Od.root),children:e})};Dd.classes=Od;const Pd={root:"lsd-modal-footer"},Nd=({children:e,...t})=>{const n=bs(t);return We("div",{...ws(t),className:Qe(n.className,Pd.root),children:e})};Nd.classes=Pd;const Id={root:"lsd-number-input",label:"lsd-number-input__label",mainContainer:"lsd-number-input__main-container",inputContainer:"lsd-number-input__input-container",input:"lsd-number-input__input",errorIcon:"lsd-number-input__error-icon",plusMinusIcons:"lsd-number-input__plus-minus-icons",supportingText:"lsd-number-input__supporting-text",disabled:"lsd-number-input--disabled",error:"lsd-number-input--error",large:"lsd-number-input--large",medium:"lsd-number-input--medium",small:"lsd-number-input--small"},Ad=({label:e,size:t="large",error:n=!1,errorIcon:a=!1,supportingText:o,value:i,placeholder:l,defaultValue:s,disabled:u,onChange:c,icon:d,inputProps:f={},id:p="number-input",min:h=Number.MIN_SAFE_INTEGER,max:m=Number.MAX_SAFE_INTEGER,step:g=1,...v})=>{const b=r.useRef(null),y=bs(v),w=Ye({defaultValue:s,value:i,onChange:c,ref:b});return Ge("div",{"aria-disabled":u?"true":"false",...ws(v),className:Qe(v.className,y.className,Id.root,Id[t],u&&Id.disabled,n&&Id.error),children:[e&&We(Vs,{htmlFor:p,className:Id.label,variant:"label2",component:"label",children:e}),Ge("div",{className:Id.mainContainer,children:[We(_d,{onClick:()=>{if(u)return;const e=Math.max(h,Number(w.value||"0")-g);w.setValue(e.toString())},className:Id.plusMinusIcons,children:We(Hs,{color:"primary"})}),Ge("div",{className:Id.inputContainer,children:[We("input",{id:p,type:"number",placeholder:l,ref:b,className:Qe(f.className,Id.input),value:w.value||"",onChange:w.onChange,min:h,max:m,step:g,disabled:u,...f}),n&&!!a&&We("span",{className:Id.errorIcon,children:We(Ns,{color:"primary"})})]}),We(_d,{onClick:()=>{if(u)return;const e=Math.min(m,Number(w.value||"0")+g);w.setValue(e.toString())},className:Id.plusMinusIcons,children:We(_s,{color:"primary"})})]}),o&&We("div",{className:Qe(Id.supportingText),children:We(Vs,{variant:"label2",component:"p",children:o})})]})};Ad.classes=Id;const Ld=e=>{try{return[e(),void 0]}catch(t){return[void 0,t]}},Rd=({children:e})=>{const[t,n]=r.useState(!1);return r.useEffect((()=>{if("undefined"==typeof window)return;const e=document.querySelector("body");let t=e.querySelector("#lsd-presentation");return t||(t=document.createElement("div"),t.id="lsd-presentation"),e.appendChild(t),n(!0),()=>{Ld((()=>e.removeChild(t)))}}),[]),We(au.Provider,{value:{initialized:t},children:e})},jd={root:"lsd-quote",indentedInline:"lsd-quote--indented-inline",parentheses:"lsd-quote--parentheses",text:"lsd-quote__text"},Md=({mode:e="indented-line",children:t,...n})=>{const r=bs(n);return We(qe,{children:We("div",{...ws(n),className:Qe(r.className,n.className,jd.root,e&&"parentheses"===e?jd.parentheses:jd.indentedInline),children:We(Vs,{color:"primary",component:"label",variant:"label1",children:t})})})};Md.classes=jd;const Fd=r.createContext(null),Bd={root:"lsd-radio-button",input:"lsd-radio-button__input",label:"lsd-radio-button__label",disabled:"lsd-radio-button--disabled",large:"lsd-radio-button--large",medium:"lsd-radio-button--medium",small:"lsd-radio-button--small"},zd=({size:e="large",onChange:t,checked:n,defaultChecked:a,disabled:o=!1,value:i,name:l,inputProps:s={},children:u,...c})=>{const d=bs(c),f=r.useRef(null),p=r.useContext(Fd),h=(null==p?void 0:p.size)??e,m=(null==p?void 0:p.name)??l??"",g=p?p.value===i:n,v=Ye({value:g,defaultValue:a??!1,onChange:t,ref:f});return Ge(Vs,{color:"primary",variant:"large"===h?"label1":"label2",component:"label","aria-disabled":o?"true":"false",...ws(c),className:Qe(d.className,c.className,Bd.root,Bd[h],o&&Bd.disabled),children:[We("input",{ref:f,name:m,value:i,type:"radio",checked:v.value,onChange:e=>{p?p.setActiveRadioButton(e.target.value):v.onChange(e)},defaultChecked:a,className:Qe(s.className,Bd.input),...s}),v.value?We($s,{color:"primary",focusable:!1}):We(zs,{color:"primary",focusable:!1}),We("span",{className:Bd.label,children:u})]})};zd.classes=Bd;const $d={root:"lsd-radio-button-group",label:"lsd-radio-button-group__label"},Ud=({size:e="large",label:t,value:n,name:a,onChange:o,children:i,...l})=>{const s=bs(l),u=r.useRef(null),[c,d]=r.useState(n);return r.useEffect((()=>d(n)),[n]),We(Fd.Provider,{value:{value:c,setActiveRadioButton:e=>{o?o(e):d(e)},name:a,size:e},children:Ge("div",{ref:u,...ws(l),className:Qe(s.className,l.className,$d.root),children:[We(Vs,{component:"span",variant:"small"===e?"label2":"label1",className:$d.label,children:t&&t}),i]})})};Ud.classes=$d;const Hd=r.createContext(null),Vd={root:"lsd-tab-item",text:"lsd-tab-item--text",icon:"lsd-tab-item--icon",disabled:"lsd-tab-item--disabled",selected:"lsd-tab-item--selected",small:"lsd-tab-item--small",medium:"lsd-tab-item--medium",large:"lsd-tab-item--large",withIcon:"lsd-tab-item--with-icon"},qd=({name:e,size:t="large",selected:n=!1,inactive:a=!1,icon:o,children:i,...l})=>{const s=bs(l),u=r.useContext(Hd),c=(null==u?void 0:u.size)??t,d=u?u.activeTab===e:n;return Ge("button",{...ws(l),className:Qe(s.className,l.className,Vd.root,Vd[c],d&&Vd.selected,l.disabled&&Vd.disabled,!!o&&Vd.withIcon),onClick:t=>{l.onClick&&l.onClick(t),a||(null==u?void 0:u.setActiveTab)&&u.setActiveTab(e)},children:[We(Vs,{component:"span",className:Vd.text,variant:"small"===c?"label2":"label1",children:i}),o&&We("span",{className:Vd.icon,children:o})]})};qd.classes=Vd;const Wd={root:"lsd-table-body",toolbar:"lsd-table-body__toolbar",row:"lsd-table-body__row"},Gd=({options:e=[],size:t="large",buttonLabel:n="Button",toolbar:r,children:a,...o})=>{const i=bs(o);return Ge("div",{...ws(o),className:Qe(i.className,o.className,Wd.root),children:[r&&We("div",{className:Qe(Wd.toolbar),children:r}),We("table",{children:a})]})};Gd.classes=Wd;const Zd={root:"lsd-table-header"},Qd=({size:e="large",children:t,...n})=>{const r=bs(n);return We("div",{...ws(n),className:Qe(r.className,n.className,Zd.root),children:t})};Qd.classes=Zd;const Yd={root:"lsd-table",small:"lsd-table--small",medium:"lsd-table--medium",large:"lsd-table--large"},Xd=r.createContext(null),Kd=()=>r.useContext(Xd),Jd=({size:e="large",type:t="default",headerOptions:n,header:r,toolbar:a,children:o,...i})=>{const l=bs(i);return We(Xd.Provider,{value:{size:e,type:t,headerOptions:n},children:Ge("div",{...ws(i),className:Qe(l.className,Yd.root,Yd[e]),children:[We(Qd,{children:r}),We(Gd,{toolbar:a,options:n,children:o})]})})};Jd.classes=Yd;const ef={root:"lsd-table-item",large:"lsd-table-item--large",medium:"lsd-table-item--medium",small:"lsd-table-item--small"},tf=({size:e="large",children:t,...n})=>{const r=bs(n),a=Kd(),o=(null==a?void 0:a.size)??e;return We("td",{...ws(n),className:Qe(r.className,n.className,ef.root,ef[o]),children:t})};tf.classes=ef;const nf={root:"lsd-table-row"},rf=({size:e="large",type:t="default",children:n,...r})=>{const a=bs(r),o=Kd(),i=(null==o?void 0:o.type)??t;return Ge("tr",{...ws(r),className:Qe(a.className,r.className,nf.root),children:["checkbox"===i&&We("td",{className:ef.root,children:We(od,{})}),"radio"===i&&We("td",{className:ef.root,children:We(zd,{value:"1"})}),n]})};rf.classes=nf;const af=r.createContext(null),of=(e=0)=>{let t=e-1;return()=>(t++,t)},lf="undefined"==typeof DOMRectReadOnly?null:new DOMRectReadOnly(0,0,0,0),sf=of(),uf=(e,t)=>{const n=(()=>{const{observe:e,unobserve:t,ready:n}=r.useContext(af)??{};return r.useMemo((()=>({observe:e,unobserve:t,ready:n})),[e,t,n])})(),a=r.useMemo((()=>t??sf().toString()),[t]),o=((e,t)=>{var n;const a=r.useContext(af);return(null==(n=null==a?void 0:a.rect)?void 0:n[e])??t})(a)??lf;return r.useEffect((()=>{if(n&&n.ready)return e.current&&n.observe(a,e),()=>{n.unobserve(a)}}),[n.ready,e.current]),o},cf=(e,t,n,r)=>-1===e?t:n-(r+t),df=(e,t)=>{var n;const a=uf(e),[o,i]=r.useState((null==(n=null==e?void 0:e.current)?void 0:n.scrollLeft)??0),[l,s]=r.useState(0),[u,c]=r.useState(0),d=r.useRef(null);((e,t,n,a,o)=>{const i=r.useMemo((()=>"string"==typeof e?e:e()),[]),l=r.useMemo((()=>"function"==typeof t?t():t),[t]);r.useEffect((()=>{if((null==l?void 0:l.addEventListener)&&(null==l?void 0:l.removeEventListener))return l.addEventListener(i,n,a),()=>{l.removeEventListener(i,n,a)}}),[i,l])})("scroll",e.current,(e=>{i(e.target.scrollLeft)}),{passive:!0});r.useEffect((()=>{if(d.current&&clearTimeout(d.current),!e.current)return;const{scrollLeft:t,scrollWidth:n,clientWidth:r}=e.current;c(cf(1,t,n,r)),s(cf(-1,t,n,r))}),[a,o,null==t?void 0:t.deps]);const f=(n,r)=>{const{clientWidth:a,scrollLeft:o}=e.current,i=Array.from(e.current.childNodes).find((e=>e.getBoundingClientRect().x>=0)),l=Math.max(r??a/3,i?i.clientWidth:0);e.current.scrollTo({behavior:(null==t?void 0:t.scrollBehavior)??"smooth",left:o+l*n})};return r.useMemo((()=>({right:u,left:l,toRight:f.bind(null,1),toLeft:f.bind(null,-1)})),[u,l])},ff={root:"lsd-tabs",fullWidth:"lsd-tabs--full-width",withScrollControls:"lsd-tabs--with-scroll-controls",leftScrollControl:"lsd-tabs__left-scroll-control",rightScrollControl:"lsd-tabs__right-scroll-control"},pf=({size:e="large",fullWidth:t=!1,scrollControls:n=!1,onChange:a,activeTab:o,children:i,...l})=>{const s=bs(l),u=r.useRef(null),[c,d]=r.useState(o);r.useEffect((()=>d(o)),[o]);const f=df(u,{scrollBehavior:"smooth",deps:[i]}),p=0!==f.left||0!==f.right;return We(Hd.Provider,{value:{activeTab:c,setActiveTab:e=>{a?a(e):d(e)},size:e},children:Ge("div",{ref:u,...ws(l),className:Qe(s.className,l.className,ff.root,t&&ff.fullWidth,n&&p&&ff.withScrollControls),children:[n&&p&&We(qd,{inactive:!0,name:"Prev",disabled:0===f.left,onClick:()=>f.toLeft(),className:ff.leftScrollControl,children:We(js,{color:"primary"})}),i,n&&p&&We(qd,{inactive:!0,name:"Next",disabled:0===f.right,onClick:()=>f.toRight(),className:ff.rightScrollControl,children:We(Ms,{color:"primary"})})]})})};pf.classes=ff;const hf={root:"lsd-tag",label:"lsd-tag__label",outlined:"lsd-tag--outlined",filled:"lsd-tag--filled",disabled:"lsd-tag--disabled",small:"lsd-badge--small",large:"lsd-badge--large"},mf=({variant:e="outlined",disabled:t,icon:n,iconDirection:r="left",children:a,size:o="large",...i})=>{const l=bs(i);return Ge("div",{"aria-label":a,...ws(i),className:Qe(l.className,i.className,hf.root,hf[e],t&&hf.disabled,hf[o]),children:["left"===r&&n,We(Vs,{variant:"small"===o?"label2":"label1",className:hf.label,component:"span",children:a}),"right"===r&&n]})};mf.classes=hf;var gf=Hi,vf=0;var bf=function(e){var t=++vf;return gf(e)+t};const yf={root:"lsd-text-field",inputContainer:"lsd-text-field__input-container",label:"lsd-text-field__label",input:"lsd-text-field__input",icon:"lsd-text-field__icon",clearButton:"lsd-text-field__clear-button",supportingText:"lsd-text-field__supporting-text",disabled:"lsd-text-field--disabled",error:"lsd-text-field--error",large:"lsd-text-field--large",medium:"lsd-text-field--medium",small:"lsd-text-field--small",outlined:"lsd-text-field--outlined",underlined:"lsd-text-field--underlined"},wf=({size:e="large",label:t,icon:n,error:a=!1,errorIcon:o=!1,clearButton:i,supportingText:l,children:s,value:u,placeholder:c,defaultValue:d,disabled:f,onChange:p,inputProps:h={},labelProps:m={},variant:g="underlined",...v})=>{const b=bs(v),y=r.useRef(null),w=Ye({defaultValue:d,value:u,onChange:p,ref:y}),x=h.id||bf("TextField-");return Ge("div",{"aria-disabled":f?"true":"false",...ws(v),className:Qe(b.className,v.className,yf.root,yf[e],f&&yf.disabled,a&&yf.error,"outlined"===g?yf.outlined:yf.underlined),children:[t&&We(Vs,{variant:"label2",component:"label",htmlFor:x,...m,className:Qe(yf.label,m.className),children:t}),Ge("div",{className:yf.inputContainer,children:[We("input",{id:x,placeholder:c,ref:y,value:w.value,onChange:w.onChange,...h,className:Qe(h.className,yf.input)}),a&&o?We(Ns,{color:"primary",className:yf.icon}):i&&w.filled?We(_d,{disabled:f,onClick:()=>!f&&w.setValue(""),"aria-label":"clear",className:yf.clearButton,children:We(Ps,{color:"primary",className:yf.icon})}):n]}),l&&We("div",{className:Qe(yf.supportingText),children:We(Vs,{variant:"large"===e?"label1":"label2",component:"p",children:l})})]})};wf.classes=yf;const xf={vars:{lsd:(...e)=>`--${["lsd",...e].join("-")}`,typography:(e,t)=>xf.vars.lsd(e,t),color:(e,t)=>xf.vars.lsd(e,t),wrap:e=>`var(${e})`},define:(e,t)=>`${e}: ${t};`},kf=(()=>{const e={};return t=>{const n=t.name;return e[n]&&"undefined"!=typeof window||(e[n]=(e=>{const t=[],n=[],r=fs.map((()=>[])),a=fs.map((()=>[]));ps.forEach((n=>{ms.forEach((r=>{var a;const o=(null==(a=e.typography[n][r])?void 0:a.toString())??"unset";t.push(xf.define(xf.vars.typography(n,r),o))}))})),t.push(xf.define(xf.vars.lsd("typography","generic-font-family"),e.typographyGlobal.genericFontFamily)),fs.forEach(((t,n)=>{ps.forEach((r=>{ms.forEach((o=>{var i,l,s,u;const c=e.breakpoints[t].typography[r][o],d=n>0?null==(u=null==(s=null==(l=null==(i=e.breakpoints)?void 0:i[fs[n-1]])?void 0:l.typography)?void 0:s[r])?void 0:u[o]:e.typography[r][o];c&&c!==d&&a[n].push(xf.define(xf.vars.typography(r,o),c.toString()))}))}))}));{const{primary:n,secondary:r,...a}=e.palette,o=a;t.push(xf.define(xf.vars.color("theme","primary"),n),xf.define(xf.vars.color("theme","secondary"),r),...Object.keys(o).flatMap((e=>Object.keys(o[e]).map((t=>xf.define(xf.vars.color(e,t),o[e][t]))))))}e.spacing.map((e=>{const n=xf.vars.lsd("spacing",e.toString());t.push(xf.define(n,`${e}px`))})),fs.map(((t,o)=>{n.push(`@media (min-width: ${e.breakpoints[t].width}px) {\n :root {\n ${a[o].join("\n")}\n }\n\n ${r[o]}\n }`)}));const i=`\n ${t.join("\n")} \n\n ${n.join("\n")}\n `;return{cssVars:i,globalStyles:o.css(":root{",i,";}","")}})(t)),e[n]}})(),_f={name:"LSD",breakpoints:{xs:{width:0,typography:{display1:{},display2:{},display3:{},display4:{},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},body1:{},body2:{},body3:{},label1:{},label2:{},subtitle1:{},subtitle2:{},subtitle3:{},subtitle4:{}}},sm:{width:400,typography:{display1:{},display2:{},display3:{},display4:{},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},body1:{},body2:{},body3:{},label1:{},subtitle4:{},subtitle3:{},label2:{},subtitle1:{},subtitle2:{}}},md:{width:768,typography:{display1:{},display2:{},display3:{},display4:{},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},body1:{},body2:{},body3:{},label1:{},subtitle4:{},subtitle3:{},label2:{},subtitle1:{},subtitle2:{}}},lg:{width:1024,typography:{display1:{},display2:{},display3:{},display4:{},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},body1:{},body2:{},body3:{},label1:{},subtitle4:{},subtitle3:{},label2:{},subtitle1:{},subtitle2:{}}},xl:{width:1205,typography:{display1:{},display2:{},display3:{},display4:{},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},body1:{},body2:{},body3:{},label1:{},subtitle4:{},subtitle3:{},label2:{},subtitle1:{},subtitle2:{}}}},typography:{display1:{fontSize:"5.5rem",fontWeight:"normal",lineHeight:"6rem"},display2:{fontSize:"4rem",fontWeight:"normal",lineHeight:"4.5rem"},display3:{fontSize:"3.5rem",fontWeight:"normal",lineHeight:"4rem"},display4:{fontSize:"3rem",fontWeight:"normal",lineHeight:"3.5rem"},h1:{fontSize:"2.5rem",fontWeight:"normal",lineHeight:"3rem"},h2:{fontSize:"2rem",fontWeight:"normal",lineHeight:"2.5rem"},h3:{fontSize:"1.75rem",fontWeight:"normal",lineHeight:"2.25rem"},h4:{fontSize:"1.5rem",fontWeight:"normal",lineHeight:"2rem"},h5:{fontSize:"1.25rem",fontWeight:"normal",lineHeight:"1.75rem"},h6:{fontSize:"1rem",fontWeight:"normal",lineHeight:"1.5rem"},subtitle1:{fontSize:"1.125rem",fontWeight:"normal",lineHeight:"1.5rem"},subtitle2:{fontSize:"1rem",fontWeight:"normal",lineHeight:"1.5rem"},subtitle3:{fontSize:"0.875rem",fontWeight:"normal",lineHeight:"1.25rem"},subtitle4:{fontSize:"0.75rem",fontWeight:"normal",lineHeight:"1rem"},body1:{fontSize:"1rem",fontWeight:"normal",lineHeight:"1.5rem"},body2:{fontSize:"0.875rem",fontWeight:"normal",lineHeight:"1.25rem"},body3:{fontSize:"0.75rem",fontWeight:"normal",lineHeight:"1rem"},label1:{fontSize:"0.875rem",fontWeight:"normal",lineHeight:"1.25rem"},label2:{fontSize:"0.75rem",fontWeight:"normal",lineHeight:"1rem"}},typographyGlobal:{genericFontFamily:"sans-serif"},palette:{primary:"0, 0, 0",secondary:"255, 255, 255",surface:{primary:"255, 255, 255",secondary:"0, 0, 0"},text:{primary:"0, 0, 0",secondary:"255, 255, 255",tertiary:"0, 0, 0, 0.34"},border:{primary:"0, 0, 0",secondary:"255, 255, 255"},icon:{primary:"0, 0, 0",secondary:"255, 255, 255"}},spacing:[4,8,16,24,32,40,64,80,96,120],globalStyles:o.css("",""),cssVars:""},{cssVars:Ef,globalStyles:Sf}=kf(_f);_f.cssVars=Ef,_f.globalStyles=Sf;const Cf=of(),Tf=(e,t)=>ds(ps,(n=>({...t.typography[n],...e.typography[n]??{}}))),Of=(e,t)=>({...t.typographyGlobal,...e.typographyGlobal}),Df=(e,t)=>{const n=new Map;return Object.fromEntries(fs.reduce(((r,a,o)=>[...r,{...t.breakpoints[a],...e.breakpoints[a],...ds(["typography"],(a=>((e,t,n,r,a,o)=>"typography"===e?ds(a[e],(i=>{var l,s,u,c,d,f,p,h,m,g,v;const b=`${e}.${i}`,y=!0===o.get(b);return Object.keys((null==(u=null==(s=null==(l=r.breakpoints)?void 0:l[fs[n]])?void 0:s[e])?void 0:u[i])??{}).length>0&&o.set(b,!0),{...a[e][i],...r[e][i],...y?(null==(d=null==(c=null==t?void 0:t[n-1])?void 0:c[e])?void 0:d[i])??{}:null==(h=null==(p=null==(f=a.breakpoints)?void 0:f[fs[n]])?void 0:p[e])?void 0:h[i],...(null==(v=null==(g=null==(m=r.breakpoints)?void 0:m[fs[n]])?void 0:g[e])?void 0:v[i])??{}}})):{})(a,r,o,e,t,n)))}]),[]).map(((e,t)=>[fs[t],e])))},Pf=(e,t)=>{var n,r,a,o,i,l,s,u,c;const d=e.palette.primary??t.palette.primary,f=e.palette.secondary??t.palette.secondary;return{primary:d,secondary:f,surface:{primary:(null==(n=e.palette.surface)?void 0:n.primary)??f,secondary:(null==(r=e.palette.surface)?void 0:r.secondary)??d},border:{primary:(null==(a=e.palette.border)?void 0:a.primary)??d,secondary:(null==(o=e.palette.border)?void 0:o.secondary)??f},icon:{primary:(null==(i=e.palette.icon)?void 0:i.primary)??d,secondary:(null==(l=e.palette.icon)?void 0:l.secondary)??f},text:{primary:(null==(s=e.palette.text)?void 0:s.primary)??d,secondary:(null==(u=e.palette.text)?void 0:u.secondary)??f,tertiary:(null==(c=e.palette.text)?void 0:c.tertiary)??`${d}, 0.34`}}},Nf=(e,t=_f)=>{const n={name:e.name??(r=t.name,`${r}-${Cf()}`),typography:Tf(e,t),typographyGlobal:Of(e,t),breakpoints:Df(e,t),palette:Pf(e,t),globalStyles:o.css("",""),cssVars:"",spacing:e.spacing.length?e.spacing:t.spacing};var r;const{cssVars:a,globalStyles:i}=kf(n);return n.cssVars=a,n.globalStyles=i,n},If=Nf({name:"Light",breakpoints:{},typography:{},typographyGlobal:{},palette:{},spacing:[]},_f),Af={light:If,dark:Nf({name:"Dark",breakpoints:{},typography:{},typographyGlobal:{},palette:{primary:"255, 255, 255",secondary:"0, 0, 0"},spacing:[]},If)},Lf=o.css(".",uu.root,"{box-sizing:border-box;}.",uu.label,"{display:block;}.",uu.inputContainer,"{display:flex;justify-content:space-between;}.",uu.disabled,"{opacity:0.34;}.",uu.input,"{border:none;outline:none;font-size:14px;color:rgb(var(--lsd-text-primary));background:none;width:100%;}.",uu.input,":hover{outline:none;}.",uu.input,"::placeholder{color:rgb(var(--lsd-text-primary));opacity:0.3;}.",uu.icon,"{cursor:pointer;display:flex;align-items:center;}.",uu.error,"{text-decoration:line-through;}.",uu.large,"{width:208px;.",uu.label,"{margin:0 0 6px 18px;}.",uu.inputContainer,"{height:40px;}.",uu.input,"{padding:9px 17px;}.",uu.icon,"{padding:12px 13px;}}.",uu.medium,"{width:188px;.",uu.label,"{margin:0 0 6px 14px;}.",uu.inputContainer,"{height:32px;}.",uu.input,"{padding:5px 13px;}.",uu.icon,"{padding:8px 11px;}}.",uu.small,"{width:164px;.",uu.label,"{margin:0 0 6px 12px;}.",uu.inputContainer,"{height:28px;}.",uu.input,"{padding:5px 11px;}.",uu.icon,"{padding:6px 9px;}}.",uu.withIcon,"{}.",uu.outlined," .",uu.inputContainer,"{border:1px solid rgb(var(--lsd-border-primary));}.",uu.underlined," .",uu.inputContainer,"{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}.",uu.dropdownItemPlaceholder,"{opacity:0.5;white-space:pre;}",""),Rf=o.css(".",du.root,"{width:fit-content;box-sizing:border-box;display:flex;flex-direction:row;align-items:center;justify-content:center;border:1px solid rgb(var(--lsd-icon-primary));border-radius:20px;&:hover,&:focus{text-decoration:underline;cursor:pointer;}}.",du.large,"{padding:3px 11px;gap:12px;height:28px;}.",du.small,"{padding:3px 7px;gap:8px;height:24px;}.",du.filled,"{background-color:rgb(var(--lsd-icon-primary));.",du.label,"{color:rgb(var(--lsd-text-secondary));}svg{--lsd-icon-primary:var(--lsd-icon-secondary);}}.",du.outlined,"{color:rgb(var(--lsd-text-primary));}.",du.disabled,"{opacity:0.3;cursor:initial;pointer-events:none;}",""),jf=o.css(".",mu.root,"{}.",mu.list,"{display:flex;flex-direction:row;align-items:center;list-style-type:none;margin:0;padding:0;}.",mu.disabled,"{.",mu.list,"{opacity:0.34;cursor:initial;pointer-events:none;}}.",mu.listBox,"{display:flex;flex-direction:column;overflow:auto;border:1px solid rgb(var(--lsd-border-primary));margin-top:10px;position:absolute;width:auto!important;}.",mu.listBox,">li{cursor:pointer;&:not(:last-child){border-bottom:1px solid rgb(var(--lsd-border-primary));}&:hover,&:focus{text-decoration:underline;text-decoration-color:rgb(var(--lsd-border-primary));}}.",mu.listBox," li>a{width:164px;padding:5px 11px;}",""),Mf=o.css(".",pu.root,"{list-style-type:none;display:flex;align-items:center;}.",mu.list,">li:not(:last-child)::after{display:inline-block;margin-inline:12px;content:'/';}.",pu.itemLink,"{text-decoration:none;cursor:pointer;}.",pu.outlined,"{padding:3px 11px;border:1px solid rgb(var(--lsd-border-primary));}",pu.large,"{}",pu.small,"{}.",mu.root,":not(.",mu.disabled,"){.",pu.itemLink,"{&:hover,&:focus{text-decoration:underline;text-decoration-color:rgb(var(--lsd-border-primary));}}}",""),Ff=o.css(".",bu.root,"{width:auto;cursor:pointer;padding:6px 24px;}.",bu.disabled,"{cursor:default;opacity:0.34;}.",bu.large,"{padding:10px 40px;}.",bu.medium,"{padding:6px 24px;}.",bu.small,"{padding:6px 12px;}.",bu.root,":hover{&:not(.",bu.disabled,"){.",bu.text,"{text-decoration:underline;}}}.",bu.withIcon,"{display:flex;align-items:center;}.",bu.icon,"{display:flex;justify-content:center;align-items:center;height:100%;}.",bu.large,".",bu.withIcon,"{padding:10px 0px 10px 18px;.",bu.icon,"{width:42px;}}.",bu.medium,".",bu.withIcon,"{padding:6px 0px 6px 14px;.",bu.icon,"{width:38px;}}.",bu.small,".",bu.withIcon,"{padding:6px 0px 6px 12px;.",bu.icon,"{width:34px;}}.",bu.outlined,"{background:none;border:1px solid rgb(var(--lsd-border-primary));.",bu.text,"{color:rgb(var(--lsd-text-primary));}}.",bu.filled,"{background:rgb(var(--lsd-surface-secondary));border:1px solid rgb(var(--lsd-border-primary));.",bu.text,"{color:rgb(var(--lsd-text-secondary));}}",""),Bf=o.css(".",Sc.root,"{border:1px solid rgb(var(--lsd-border-primary));visibility:hidden;position:absolute!important;top:0;left:0;opacity:0;visibility:hidden;margin:0;padding:0;box-sizing:border-box;background:rgb(var(--lsd-surface-primary));user-select:none;}.",Sc.container,"{display:flex;flex-direction:column;padding:8px;}.",Sc.open,"{opacity:1;visibility:visible;}.",Sc.header,"{display:flex;justify-content:center;align-items:center;height:32px;margin-bottom:8px;}.",Sc.weekDay,"{display:flex;justify-content:center;align-items:center;aspect-ratio:1/1;margin-bottom:4px;}.",Sc.changeYear,"{position:relative;display:flex;justify-content:center;align-items:center;padding:2px 0xp 2px 8px;gap:6px;border:1px solid transparent;}.",Sc.changeYearActive,"{.",Sc.yearAndIcon,"{border:1px solid rgb(var(--lsd-border-primary));}}.",Sc.changeYearIconContainer,"{display:flex;justify-content:center;align-items:center;cursor:pointer;border:none;}.",Sc.month,"{margin-right:8px;}.",Sc.monthAndYear,"{display:flex;align-items:center;justify-content:center;}.",Sc.dayContainer,"{cursor:pointer;background:transparent;position:relative;box-sizing:border-box;border:1px solid transparent;}.",Sc.day,"{aspect-ratio:1/1;display:flex;justify-content:center;align-items:center;}.",Sc.day,":hover{cursor:pointer;text-decoration:underline;text-decoration-color:rgb(var(--lsd-border-primary));}.",Sc.day," label:hover{cursor:pointer;}.",Sc.daySelected,"{border:1px solid rgb(var(--lsd-border-primary));}.",Sc.dayDisabled,"{opacity:0.3;cursor:default;}.",Sc.todayIndicator,"{position:absolute;left:50%;transform:translateX(-50%);bottom:2px;}.",Sc.disabled,"{pointer-events:none;border:1px solid rgba(var(--lsd-border-primary), 0.3);label{opacity:0.3;}.",Sc.button,"{opacity:0.3;}.",Sc.daySelected,"{opacity:0.3;}}.",Sc.button,"{border:1px solid rgb(var(--lsd-border-primary));cursor:pointer;background:transparent;width:32px;height:32px;display:flex;align-items:center;justify-content:center;position:absolute;}.",Sc.nextMonthButton,"{top:8px;right:8px;}.",Sc.previousMonthButton,"{top:8px;left:8px;}.",Sc.dayBorderLeft,"{border-left:1px double rgb(var(--lsd-border-primary));}.",Sc.dayBorderRight,"{border-right:1px double rgb(var(--lsd-border-primary));}.",Sc.dayBorderLeftAndRight,"{border-left:1px double rgb(var(--lsd-border-primary));border-right:1px double rgb(var(--lsd-border-primary));}.",Sc.dayBorderTopAndBottom,"{border-top:1px double rgb(var(--lsd-border-primary));border-bottom:1px double rgb(var(--lsd-border-primary));}.",Sc.monthTable,"{border-collapse:collapse;}.",Sc.yearDropdown,"{box-sizing:border-box;position:absolute;top:100%;left:0;max-height:200px;overflow-y:auto;width:100%;border:1px solid rgb(var(--lsd-border-primary));border-top:none;z-index:1;.",Sc.year,"{border-bottom:1px solid rgb(var(--lsd-border-primary));}}.",Sc.yearDropdownHidden,"{visibility:hidden;}.",Sc.year,"{display:flex;cursor:pointer;transition:background-color 0.2s;align-items:center;background:rgb(var(--lsd-surface-primary));:hover{text-decoration:underline;}}.",Sc.yearAndIcon,"{border:1px solid rgb(var(--lsd-border-primary));}.",Sc.large,"{.",Sc.year,"{padding:6px 0px 6px 14px;}.",Sc.changeYearIconContainer,"{width:32px;}}.",Sc.medium,"{.",Sc.year,"{padding:6px 0px 6px 12px;}.",Sc.changeYearIconContainer,"{width:28px;}}.",Sc.small,"{.",Sc.year,"{padding:6px 0px 6px 12px;}.",Sc.changeYearIconContainer,"{width:28px;}}",""),zf=o.css(".",Qc.root,"{box-sizing:border-box;display:flex;flex-direction:column;}.",Qc.root,">.",ed.root,"{margin-bottom:-1px;}.",Qc.large,"{}.",Qc.medium,"{}.",Qc.small,"{}",""),$f=o.css(".",Kc.root,"{box-sizing:border-box;padding:14px 22px;border:1px solid rgb(var(--lsd-border-primary));}",""),Uf=o.css(".",ed.root,"{box-sizing:border-box;padding:10px 18px;text-align:center;border:1px solid rgb(var(--lsd-border-primary));}.",ed.title,"{overflow:hidden;word-break:break-all;}.",ed.large,"{padding:10px 18px;}.",ed.medium,"{padding:6px 14px;}.",ed.small,"{padding:6px 12px;}",""),Hf=o.css(".",ad.root,"{position:relative;display:flex;flex-direction:row;align-items:center;}.",ad.input,"{opacity:0;position:absolute;left:0;top:0;padding:0;margin:0;width:100%;height:100%;}.",ad.root,":not(.",ad.disabled,"){&:hover,&.",ad.focused,"{text-decoration:underline;}.",ad.input,"{cursor:pointer;}}.",ad.disabled,"{opacity:0.34;}.",ad.label,"{margin-left:18px;}.",ad.large,"{.",ad.label,"{margin-left:18px;}}.",ad.medium,"{.",ad.label,"{margin-left:14px;}}.",ad.small,"{.",ad.label,"{margin-left:12px;}}",""),Vf=o.css(".",id.root,"{display:flex;flex-direction:column;gap:6px;width:fit-content;}.",id.label,"{margin-bottom:6px;}",""),qf=o.css(".",cd.root,"{box-sizing:border-box;display:flex;flex-direction:column;}.",cd.open,"{.",cd.content,"{border-top:1px solid transparent;}}.",cd.content,"{border:1px solid rgb(var(--lsd-border-primary));}",""),Wf=o.css(".",sd.root,"{box-sizing:border-box;}.",sd.root,":not(.",sd.disabled,"){.",sd.trigger,"{&:hover{.",sd.label,"{text-decoration:underline;}}}}.",sd.trigger,"{width:100%;display:flex;flex-direction:row;align-items:center;justify-content:space-between;cursor:pointer;background:none;border:1px solid rgb(var(--lsd-border-primary));&:focus{outline:none;}}.",sd.label,"{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:auto;}.",sd.icons,"{display:flex;flex-direction:row;align-items:center;justify-content:flex-end;}.",sd.icon,"{margin-right:8px;}.",sd.menuIcon,"{}.",sd.disabled,"{.",sd.trigger,"{opacity:0.34;cursor:initial;}}.",sd.large,"{.",sd.trigger,"{width:299px;height:40px;padding:9px 17px;}}.",sd.medium,"{.",sd.trigger,"{width:270px;height:32px;padding:5px 13px;}}.",sd.small,"{.",sd.trigger,"{width:235px;height:28px;padding:5px 11px;}}",""),Gf=o.css(".",fd.root,"{width:auto;box-sizing:border-box;}.",fd.label,"{display:block;}.",fd.icon,"{position:absolute;right:0;cursor:pointer;display:flex;align-items:center;background-color:rgb(var(--lsd-surface-primary));}.",fd.icon,":focus{background:blue;background-color:pink;border:1px solid rgb(var(--lsd-border-primary));}.",fd.noIcon,"{position:absolute;right:0;background-color:rgb(var(--lsd-surface-primary));padding:12px;}.",fd.outlined,"{border:1px solid rgb(var(--lsd-border-primary));}.",fd.underlined,"{border-bottom:1px solid rgb(var(--lsd-border-primary));}.",fd.inputContainer,"{position:relative;display:flex;align-items:center;justify-content:space-between;}.",fd.disabled,"{opacity:0.34;}.",fd.input,"{border:none;outline:none;font-size:14px;color:rgb(var(--lsd-text-primary));background:none;width:100%;opacity:0.4;transition:opacity 0.2s ease-in-out;}.",fd.input,"::-webkit-inner-spin-button,.",fd.input,"::-webkit-calendar-picker-indicator{display:none;-webkit-appearance:none;}.",fd.input,":hover{outline:none;}.",fd.supportingText,"{position:absolute;}.",fd.large,"{width:208px;.",fd.label,"{margin:0 0 6px 18px;}.",fd.inputContainer,"{height:40px;}.",fd.input,"{padding:9px 0px 9px 17px;}.",fd.icon,"{padding:12px 13px;}.",fd.supportingText,"{margin:6px 18px 0 18px;}}.",fd.medium,"{width:188px;.",fd.label,"{margin:0 0 6px 14px;}.",fd.inputContainer,"{height:32px;}.",fd.input,"{padding:5px 11px 5px 13px;}.",fd.icon,"{padding:8px 11px;}.",fd.supportingText,"{margin:6px 14px 0 14px;}}.",fd.small,"{width:164px;.",fd.label,"{margin:0 0 6px 12px;}.",fd.inputContainer,"{height:28px;}.",fd.input,"{padding:5px 9px 5px 11px;font-size:12px;}.",fd.icon,"{padding:6px 9px;}.",fd.supportingText,"{margin:6px 12px 0 12px;}}.",fd.input,":invalid,.",fd.inputFilled,"{color:rgb(var(--lsd-border-primary));opacity:1;}.",fd.error," .",fd.input,"::-webkit-datetime-edit-year-field,.",fd.error," .",fd.input,"::-webkit-datetime-edit-month-field,.",fd.error," .",fd.input,"::-webkit-datetime-edit-day-field{text-decoration:line-through;}@supports not selector(::-webkit-datetime-edit-day-field){.",fd.error," .",fd.input,"{text-decoration:line-through;}}",""),Zf=o.css(".",hd.root,"{width:fit-content;}.",hd.calendar,"{border-top:none!important;}.",hd.large,"{.",fd.large,"{width:318px;}}.",hd.medium,"{.",fd.medium,"{width:290px;}}.",hd.small,"{.",fd.small,"{width:262px;}}",""),Qf=o.css(".",yd.root,"{}.",yd.root,":not(.",yd.disabled,"):not(\n .",yd.error,"\n ){.",yd.trigger,"{&:hover,&:focus{.",yd.optionLabel,"{text-decoration:underline;}}}}.",yd.label,"{display:block;}.",yd.buttonContainer,"{display:flex;justify-content:space-between;}.",yd.trigger,"{width:100%;display:flex;flex-direction:row;align-items:center;justify-content:space-between;border:none;cursor:pointer;background:none;&:focus{outline:none;}}.",yd.optionLabel,"{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.",yd.icons,"{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:8px;}.",yd.icon,"{display:flex;align-items:center;}.",yd.menuIcon,"{}.",yd.supportingText,"{margin:6px 14px;}.",yd.error,"{.",yd.optionLabel,"{text-decoration:line-through;}}.",yd.disabled,"{opacity:0.34;cursor:initial;}.",yd.large,"{width:208px;&.",yd.error,"{width:230px;}.",yd.label,"{margin:0 0 6px 18px;}.",yd.buttonContainer,"{height:40px;}.",yd.trigger,"{padding:10px 0px 10px 18px;}.",yd.icons,"{padding:0px 14px;}}.",yd.medium,"{width:188px;&.",yd.error,"{width:210px;}.",yd.label,"{margin:0 0 6px 14px;}.",yd.buttonContainer,"{height:32px;}.",yd.trigger,"{padding:6px 0px 6px 14px;}.",yd.icons,"{padding:0px 12px;}}.",yd.small,"{width:164px;&.",yd.error,"{width:186px;}.",yd.label,"{margin:0 0 6px 12px;}.",yd.buttonContainer,"{height:28px;}.",yd.trigger,"{padding:6px 0px 6px 12px;}.",yd.icons,"{padding:0px 10px;}}.",yd.outlined,"{.",yd.buttonContainer,"{border:1px solid rgb(var(--lsd-border-primary));}}.",yd.underlined,"{.",yd.buttonContainer,"{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}}",""),Yf=o.css(".",qs.root,"{width:100%;box-sizing:border-box;display:flex;flex-direction:row;align-items:center;border:1px solid rgb(var(--lsd-border-primary));:not(.",qs.disabled,"){cursor:pointer;&:hover,&:focus{outline:none;.",qs.label,"{text-decoration:underline;}}}}.",qs.label,"{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.",qs.disabled,"{opacity:0.34;}.",qs.icon,"{margin-right:18px;flex-shrink:0;}.",qs.small,"{padding:5px 9px;height:28px;}.",qs.medium,"{padding:5px 11px;height:32px;}.",qs.large,"{padding:5px 13px;height:40px;}",""),Xf=o.css(".",kd.root,"{display:flex;flex-direction:row;align-items:center;justify-content:center;cursor:pointer;background:none;padding:0;border:1px solid rgb(var(--lsd-border-primary));}.",kd.filled,"{background-color:rgb(var(--lsd-icon-primary));svg{--lsd-icon-primary:var(--lsd-icon-secondary);}}.",kd.outlined,"{}.",kd.disabled,"{opacity:0.34;cursor:default;}.",kd.large,"{width:40px;height:40px;}.",kd.medium,"{width:32px;height:32px;}.",kd.small,"{width:28px;height:28px;}",""),Kf=o.css(".",Ed.root,"{display:flex;flex-direction:row;}.",Ed.outlined," .",kd.root,":not(:last-child){border-right:none;}",""),Jf=o.css(".",xs.root,"{}.",xs.primary,"{&.",xs.filled,"{&,*{fill:rgb(var(--lsd-icon-primary));}}$.",xs.stroked,"{&,*{fill:rgb(var(--lsd-icon-primary));}}}.",xs.secondary,"{&.",xs.filled,"{&,*{fill:rgb(var(--lsd-icon-secondary));}}$.",xs.stroked,"{&,*{fill:rgb(var(--lsd-icon-secondary));}}}",""),ep=o.css(".",tu.root,"{position:absolute;top:0;left:0;opacity:0;visibility:hidden;margin:0;padding:0;box-sizing:border-box;background:rgb(var(--lsd-surface-primary));overflow:auto;border:1px solid rgb(var(--lsd-border-primary));border-top:0;}.",tu.root,">div{border:0;&:not(:last-child){border-bottom:1px solid rgb(var(--lsd-border-primary));}}.",tu.open,"{opacity:1;visibility:visible;}.",tu.large,"{max-height:220px;}.",tu.medium,"{max-height:176px;}.",tu.small,"{max-height:154px;}",""),tp=o.css(".",jd.root,"{color:rgb(var(--lsd-text-primary));white-space:pre-wrap;}.",jd.indentedInline,"{border-left:1px solid rgb(var(--lsd-border-primary));padding:4px 8px 4px 28px;}.",jd.parentheses,"{padding:0px;text-align:center;}.",jd.parentheses,"::before{content:'***';}.",jd.parentheses,"::after{content:'***';}",""),np=o.css(".",Bd.root,"{position:relative;display:flex;flex-direction:row;align-items:center;}.",Bd.input,"{opacity:0;position:absolute;left:0;top:0;padding:0;margin:0;width:100%;height:100%;}.",Bd.root,":not(.",Bd.disabled,"){&:hover{text-decoration:underline;}.",Bd.input,"{cursor:pointer;}}.",Bd.disabled,"{opacity:0.34;}.",Bd.label,"{margin-left:18px;}.",Bd.large,"{.",Bd.label,"{margin-left:18px;}}.",Bd.medium,"{.",Bd.label,"{margin-left:14px;}}.",Bd.small,"{.",Bd.label,"{margin-left:12px;}}",""),rp=o.css(".",$d.root,"{display:flex;flex-direction:column;gap:6px;width:fit-content;}.",$d.label,"{margin-bottom:6px;}",""),ap=o.css(".",Vd.root,"{background:rgb(var(--lsd-surface-primary));border:1px solid transparent;cursor:pointer;display:flex;flex-direction:row;align-items:center;justify-content:center;box-sizing:border-box;&:hover{text-decoration:underline;}&:not(",Vd.selected,"){border-bottom:1px solid rgb(var(--lsd-border-primary));}}.",Vd.text,"{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.",Vd.icon,"{margin-left:14px;}.",Vd.selected,"{border:1px solid rgb(var(--lsd-border-primary));&:hover{text-decoration:none;}}.",Vd.withIcon,"{justify-content:space-between;}.",Vd.disabled,"{cursor:default;opacity:0.34;&:hover{text-decoration:none;}}.",Vd.small,"{padding:6px 12px;.",Vd.icon,"{margin-left:10px;}}.",Vd.medium,"{padding:6px 14px;.",Vd.icon,"{margin-left:12px;}}.",Vd.large,"{padding:10px 18px;.",Vd.icon,"{margin-left:14px;}}",""),op=o.css(".",Yd.root,"{box-sizing:border-box;display:flex;flex-direction:column;}.",Yd.root,">.",Zd.root,"{margin-bottom:-1px;}.",Yd.large,"{}.",Yd.medium,"{}.",Yd.small,"{}",""),ip=o.css(".",Wd.root,"{table{border-collapse:collapse;text-align:center;table-layout:fixed;width:100%;height:auto;}table tr:first-of-type td label:has(input[type='radio']){display:none;}}.",Wd.toolbar,"{box-sizing:border-box;padding:10px;border:1px solid rgb(var(--lsd-border-primary));border-bottom:none;display:flex;justify-content:space-between;}",""),lp=o.css(".",Zd.root,"{box-sizing:border-box;border:1px solid rgb(var(--lsd-border-primary));}",""),sp=o.css(".",ef.root,"{border:1px solid rgb(var(--lsd-border-primary));}.",ef.root,":has(> label){width:40px;input{position:relative;width:14px;height:14px;margin:auto;}span{margin-left:14px!important;}}.",ef.large,"{padding:10px;}.",ef.medium,"{padding:6px 8px;}.",ef.small,"{padding:6px;}",""),up=o.css(".",nf.root,"{align-items:center;}",""),cp=o.css(".",ff.root,"{display:flex;flex-direction:row;overflow:auto;width:fit-content;max-width:100%;border-bottom:1px solid rgb(var(--lsd-border-primary));&>*{flex-shrink:0;}.",Vd.root,"{border-bottom:none;}}.",ff.fullWidth,"{width:100%;justify-content:stretch;&>*{width:100%;flex:1 0;}}.",ff.root,"{-ms-overflow-style:none;scrollbar-width:none;&::-webkit-scrollbar{display:none;}}.",ff.leftScrollControl,"{left:0;}.",ff.rightScrollControl,"{right:0;}.",ff.rightScrollControl,",.",ff.leftScrollControl,"{top:0;flex:0 1;position:sticky;}",""),dp=o.css(".",hf.root,"{width:fit-content;display:flex;flex-direction:row;align-items:center;justify-content:center;box-sizing:border-box;border:1px solid rgb(var(--lsd-icon-primary));&:hover,&:focus{text-decoration:underline;cursor:pointer;}}.",hf.large,"{padding:3px 11px;gap:12px;height:28px;}.",hf.small,"{padding:3px 7px;gap:8px;height:24px;}.",hf.filled,"{background-color:rgb(var(--lsd-icon-primary));.",hf.label,"{color:rgb(var(--lsd-text-secondary));}svg{--lsd-icon-primary:var(--lsd-icon-secondary);}}.",hf.outlined,"{color:rgb(var(--lsd-text-primary));}.",hf.disabled,"{opacity:0.3;cursor:initial;pointer-events:none;}",""),fp=o.css(".",yf.root,"{box-sizing:border-box;display:flex;flex-direction:column;}.",yf.inputContainer,"{display:flex;align-items:center;justify-content:space-between;}.",yf.disabled,"{opacity:0.34;}.",yf.input,"{border:none;outline:none;font-size:14px;color:rgb(var(--lsd-text-primary));background:none;width:100%;}.",yf.input,":hover{outline:none;}.",yf.input,"::placeholder{color:rgb(var(--lsd-text-primary));opacity:0.3;}.",yf.error," .",yf.input,"{text-decoration:line-through;}.",yf.supportingText,"{width:fit-content;}.",yf.large,"{width:208px;&>*{padding:10px 14px 10px 18px;}}.",yf.medium,"{width:188px;&>*{padding:6px 12px 6px 14px;}}.",yf.small,"{width:164px;&>*{padding:6px 10px 6px 12px;}}.",yf.label,"{padding-top:0;padding-bottom:6px;}.",yf.supportingText,"{padding-bottom:0;padding-top:6px;}.",yf.outlined," .",yf.inputContainer,"{border:1px solid rgb(var(--lsd-border-primary));}.",yf.underlined," .",yf.inputContainer,"{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}.",yf.clearButton,"{padding:0;width:auto;height:auto;margin:0;border:0;}.",yf.icon,"{}",""),pp=o.css("body *{font-family:var(--lsd-typography-generic-font-family);}.",gs.root,"{color:rgb(var(--lsd-text-primary));}.",gs.sansSerif,"{&,*{font-family:sans-serif;}}.",gs.serif,"{&,*{font-family:serif;}}.",gs.monospace,"{&,*{font-family:monospace;}}",ps.map((e=>o.css((e=>[...hs[e]??[],`.${gs[e]}`].join(", "))(e),"{color:rgb(var(--lsd-text-primary));font-weight:var(--lsd-",e,"-fontWeight);font-size:var(--lsd-",e,"-fontSize);line-height:var(--lsd-",e,"-lineHeight);}","")))," .",gs.primary,"{color:rgb(var(--lsd-text-primary));}.",gs.secondary,"{color:rgb(var(--lsd-text-secondary));}input{color:rgb(var(--lsd-text-primary));font-size:var(--lsd-body1-fontSize);font-weight:var(--lsd-body1-fontWeight);}h1,h2,h3,h4,h5,h6,p,span{margin:0;}",""),hp={root:"lsd-toast",inlineContainer:"lsd-toast__inline-container",columnContainer:"lsd-toast__column-container",large:"lsd-toast--large",medium:"lsd-toast--medium",small:"lsd-toast--small",icon:"lsd-toast__icon",textContainer:"lsd-toast__text-container",columnIconContainer:"lsd-toast__column-icon-container",inlineIconContainer:"lsd-toast__inline-icon-container",title:"lsd-toast__title",information:"lsd-toast__information",inlineButtonContainer:"lsd-toast__inline-button-container",columnButtonContainer:"lsd-toast__column-button-container",buttonContainer:"lsd-toast__button-container",closeButton:"lsd-toast__close-button"},mp={toastContainer:"lsd-toast-provider__toast-container",topLeft:"lsd-toast-provider__toast--top-left",topCenter:"lsd-toast-provider__toast--top-center",topRight:"lsd-toast-provider__toast--top-right",bottomLeft:"lsd-toast-provider__toast--bottom-left",bottomCenter:"lsd-toast-provider__toast--bottom-center",bottomRight:"lsd-toast-provider__toast--bottom-right"},gp=[Ff,Xf,Kf,pp,Jf,ap,cp,ep,Qf,Yf,jf,Mf,zf,Uf,$f,dp,fp,Hf,Lf,tp,qf,Wf,Vf,Rf,np,rp,op,lp,ip,sp,up,o.css(".",Id.root,"{width:auto;box-sizing:border-box;}.",Id.mainContainer,":hover{text-decoration:underline;}.",Id.error,"{.",Id.mainContainer,"{text-decoration:line-through;}}.",Id.label,"{display:block;}.",Id.plusMinusIcons,"{display:flex;flex-shrink:0;}.",Id.inputContainer,"{box-sizing:border-box;border:1px solid rgb(var(--lsd-border-primary));border-left:0px;border-right:0px;}.",Id.errorIcon,"{cursor:pointer;display:flex;align-items:center;padding:10px 8px;}.",Id.inputContainer,"{display:flex;align-items:center;justify-content:space-between;}.",Id.disabled,"{opacity:0.34;}.",Id.mainContainer,"{display:flex;align-items:center;}.",Id.input,"{border:none;outline:none;font-size:14px;color:rgb(var(--lsd-text-primary));background:none;text-align:center;padding:0 4px;}.",Id.input,"::-webkit-inner-spin-button{display:none;-webkit-appearance:none;}.",Id.input,":hover{outline:none;}.",Id.supportingText,"{position:absolute;}.",Id.large,"{.",Id.label,"{margin:0 0 6px 18px;}.",Id.inputContainer,"{height:40px;}.",Id.input,"{width:62px;}.",Id.plusMinusIcons,"{height:40px;width:40px;}.",Id.supportingText,"{margin:6px 18px 0 18px;}}.",Id.medium,"{.",Id.label,"{margin:0 0 6px 14px;}.",Id.inputContainer,"{height:32px;}.",Id.input,"{width:58px;}.",Id.plusMinusIcons,"{height:32px;width:32px;}.",Id.supportingText,"{margin:6px 14px 0 14px;}}.",Id.small,"{.",Id.label,"{margin:0 0 6px 12px;}.",Id.inputContainer,"{height:28px;}.",Id.input,"{width:50px;}.",Id.plusMinusIcons,"{height:28px;width:28px;}.",Id.supportingText,"{margin:6px 12px 0 12px;}}",""),o.css(".",Cd.root,"{box-sizing:border-box;display:flex;flex-direction:column;position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0, 0, 0, 0.5);display:flex;justify-content:center;align-items:center;z-index:9999;}.",Cd.modalContainer,"{position:relative;background:rgb(var(--lsd-surface-primary));padding:20px;max-width:90%;box-sizing:border-box;border:1px solid rgb(var(--lsd-border-primary));}.",Cd.header,"{display:flex;justify-content:space-between;align-items:center;}.",Cd.title,"{}.",Cd.subtitle,"{}.",Cd.closeIcon,"{position:absolute;top:8px;right:8px;cursor:pointer;}.",Cd.titleAndSubtitleContainer,"{display:flex;flex-direction:column;}.",Cd.large,"{.",Cd.modalContainer,"{min-width:960px;}}.",Cd.medium,"{.",Cd.modalContainer,"{min-width:768px;}}.",Cd.small,"{.",Cd.modalContainer,"{min-width:614px;}}.",Cd.xsmall,"{.",Cd.modalContainer,"{min-width:490px;}}",""),o.css(".",Pd.root,"{display:flex;}",""),o.css(".",Od.root,"{margin:18px 0;}",""),Zf,Gf,Bf,o.css(".",hp.root,"{box-sizing:border-box;display:inline-flex;align-items:center;background:rgb(var(--lsd-surface-primary));border:1px solid rgb(var(--lsd-border-primary));padding:8px;height:fit-content;}.",hp.inlineButtonContainer,"{flex-shrink:0;}.",hp.columnButtonContainer,"{margin-top:18px;margin-bottom:6px;}.",hp.inlineContainer,"{display:flex;align-items:center;justify-content:space-between;flex-grow:1;}.",hp.columnContainer,"{display:flex;flex-direction:column;justify-content:space-between;}.",hp.textContainer,"{display:flex;flex-direction:column;color:rgb(var(--lsd-text-secondary));padding-left:12px;}.",hp.title,"{position:relative;}.",hp.information,"{margin-top:4px;}.",hp.buttonContainer,"{min-height:28px;min-width:60px;width:fit-content;padding:0px 12px;}.",hp.closeButton,"{margin-bottom:auto;flex-shrink:0;height:28px;width:28px;margin-left:auto;}.",hp.columnIconContainer,"{display:flex;justify-content:center;margin-bottom:auto;position:relative;top:4px;padding-left:4px;}.",hp.inlineIconContainer,"{display:flex;align-items:center;justify-content:center;padding-left:4px;}.",hp.icon,"{position:relative;}.",hp.large,"{width:364px;}.",hp.medium,"{width:336px;}.",hp.small,"{width:296px;.",hp.icon,"{top:0px;}}",""),o.css(".",mp.toastContainer,"{position:fixed;transition:all 230ms cubic-bezier(0.21, 1.02, 0.73, 1);z-index:9999;}.",mp.topLeft,",.",mp.topCenter,",.",mp.topRight,"{top:0;}.",mp.bottomLeft,",.",mp.bottomCenter,",.",mp.bottomRight,"{bottom:0;}.",mp.topCenter,",.",mp.bottomCenter,"{left:50%;}.",mp.topRight,",.",mp.bottomRight,"{right:0;}",""),o.css(".",wu.root,"{display:flex;flex-direction:row;>*:not(:last-child){&.",bu.outlined,",.",bu.outlined,"{border-right:none;}}}",""),o.css(".",vd.root,"{box-sizing:border-box;.",fd.outlined,"{border:none;}.",fd.icon,"{padding:8px;}}.",vd.label,"{display:block;}.",vd.inputContainer,"{box-sizing:border-box;display:flex;align-items:center;border:1px solid transparent;}.",vd.calendar,"{border-top:none!important;.",Vc.arrowTip,"{transition:left 0.2s ease-in-out;}}.",vd.openCalendar,"{.",vd.inputContainer,"{border-bottom:1px solid rgb(var(--lsd-border-primary));}}.",vd.icon,"{cursor:pointer;display:flex;align-items:center;justify-content:center;flex-grow:1;padding:0 10px;}.",vd.disabled,"{opacity:0.3;}.",vd.supportingText,"{position:absolute;}.",vd.large,"{width:318px;.",fd.large,"{width:156px;}.",fd.input,"{padding-right:0;}.",fd.icon,"{padding:11px 12px;}.",vd.label,"{margin:0 0 6px 18px;}.",vd.inputContainer,"{height:40px;}.",vd.supportingText,"{margin:6px 18px 0 18px;}}.",vd.medium,"{width:290px;.",fd.medium,"{width:142px;}.",fd.input,"{padding-right:0;}.",fd.icon,"{padding:7px 8px;}.",vd.label,"{margin:0 0 6px 14px;}.",vd.inputContainer,"{height:32px;}.",vd.supportingText,"{margin:6px 14px 0 14px;}}.",vd.small,"{width:262px;.",fd.small,"{width:128px;}.",fd.input,"{padding-right:0;}.",fd.icon,"{padding:5px 7px;}.",vd.label,"{margin:0 0 6px 12px;}.",vd.inputContainer,"{height:28px;}.",vd.supportingText,"{margin:6px 12px 0 12px;}}.",vd.separator,"{margin-left:3px;width:1px;height:100%;}.",vd.separator,"{border-left:1px solid transparent;}.",vd.outlined,"{border:1px solid rgb(var(--lsd-border-primary));.",vd.separator,"{border-left:1px solid rgb(var(--lsd-border-primary));}}",""),o.css(".",Vc.root,"{border:1px solid rgb(var(--lsd-border-primary));position:relative;}.",Vc.arrowTip,"{border:1px solid rgb(var(--lsd-border-primary));position:absolute;background:rgb(var(--lsd-surface-primary));}.",Vc.content,"{background:rgb(var(--lsd-surface-primary));width:100%;height:100%;position:relative;z-index:1;}","")],vp=({theme:e=Af.light})=>{const t=r.useMemo((()=>gp.map((t=>"function"==typeof t?t(e):t)).map((e=>We(o.Global,{styles:e},e.name)))),[e]);return We(qe,{children:t})},bp=({children:e})=>{const t=r.useRef(),n=r.useRef({}),[a,o]=r.useState({}),[i,l]=r.useState(!1),s=e=>{const t=n.current[e];t&&t.current&&Ld((()=>{o((n=>({...n,[e]:t.current.getBoundingClientRect()})))}))};r.useEffect((()=>{if("undefined"!=typeof window&&"undefined"!=typeof ResizeObserver)return t.current=new ResizeObserver((e=>{Ld((()=>{const t=Object.entries(n.current);e.map((e=>t.find((([t,n])=>n.current===e.target)))).forEach((e=>{if(e&&2===e.length){const[t]=e;s(t)}}))}))})),l(!0),()=>{var e;null==(e=t.current)||e.disconnect()}}),[]);return We(af.Provider,{value:{observe:(e,r)=>{t.current&&(n.current[e]=r,s(e),r.current instanceof Element&&t.current.observe(r.current))},unobserve:e=>{if(!t.current)return;const r=n.current[e];r&&(r.current instanceof Element&&t.current.unobserve(r.current),delete n.current[e],o((t=>Vl(t,e))))},rect:a,ready:i},children:e})},yp=r.createContext({theme:null}),wp=({title:e,information:t,onClose:n,size:r="large",toastRef:a,children:o,icon:i,actions:l,...s})=>{const u=bs(s),c=!t,d=void 0===i?Ns:i;return Ge("div",{ref:a,...ws(s),className:Qe(s.className,u.className,hp.root,hp[r]),children:[We("div",{className:Qe(c?hp.inlineIconContainer:hp.columnIconContainer),children:d&&We(d,{color:"primary",className:hp.icon})}),Ge("div",{className:c?hp.inlineContainer:hp.columnContainer,children:[Ge("div",{className:Qe(hp.textContainer),children:[!!e&&We(Vs,{className:hp.title,component:"div",variant:"small"===r?"label2":"label1",children:e}),!!t&&We(Vs,{className:hp.information,component:"div",variant:"small"===r?"label2":"label1",children:t})]}),!!l&&We("div",{className:Qe(hp.buttonContainer,c?hp.inlineButtonContainer:hp.columnButtonContainer),children:l})]}),We(_d,{onClick:n,className:hp.closeButton,size:"medium",children:We(Ps,{color:"primary"})})]})};wp.classes=hp;var xp=(e,t)=>(e=>"function"==typeof e)(e)?e(t):e,kp=(()=>{let e=0;return()=>(++e).toString()})(),_p=new Map,Ep=e=>{if(_p.has(e))return;let t=setTimeout((()=>{_p.delete(e),Op({type:4,toastId:e})}),1e3);_p.set(e,t)},Sp=(e,t)=>{switch(t.type){case 0:return{...e,toasts:[t.toast,...e.toasts].slice(0,20)};case 1:return t.toast.id&&(e=>{let t=_p.get(e);t&&clearTimeout(t)})(t.toast.id),{...e,toasts:e.toasts.map((e=>e.id===t.toast.id?{...e,...t.toast}:e))};case 2:let{toast:n}=t;return e.toasts.find((e=>e.id===n.id))?Sp(e,{type:1,toast:n}):Sp(e,{type:0,toast:n});case 3:let{toastId:r}=t;return r?Ep(r):e.toasts.forEach((e=>{Ep(e.id)})),{...e,toasts:e.toasts.map((e=>e.id===r||void 0===r?{...e,visible:!1}:e))};case 4:return void 0===t.toastId?{...e,toasts:[]}:{...e,toasts:e.toasts.filter((e=>e.id!==t.toastId))};case 5:return{...e,pausedAt:t.time};case 6:let a=t.time-(e.pausedAt||0);return{...e,pausedAt:void 0,toasts:e.toasts.map((e=>({...e,pauseDuration:e.pauseDuration+a})))}}},Cp=[],Tp={toasts:[],pausedAt:void 0},Op=e=>{Tp=Sp(Tp,e),Cp.forEach((e=>{e(Tp)}))},Dp={blank:4e3,error:4e3,success:2e3,loading:1/0,custom:4e3},Pp=e=>(t,n)=>{let r=((e,t="blank",n)=>({createdAt:Date.now(),visible:!0,type:t,ariaProps:{role:"status","aria-live":"polite"},message:e,pauseDuration:0,...n,id:(null==n?void 0:n.id)||kp()}))(t,e,n);return Op({type:2,toast:r}),r.id},Np=(e,t)=>Pp("blank")(e,t);Np.error=Pp("error"),Np.success=Pp("success"),Np.loading=Pp("loading"),Np.custom=Pp("custom"),Np.dismiss=e=>{Op({type:3,toastId:e})},Np.remove=e=>Op({type:4,toastId:e}),Np.promise=(e,t,n)=>{let r=Np.loading(t.loading,{...n,...null==n?void 0:n.loading});return e.then((e=>(Np.success(xp(t.success,e),{id:r,...n,...null==n?void 0:n.success}),e))).catch((e=>{Np.error(xp(t.error,e),{id:r,...n,...null==n?void 0:n.error})})),e};var Ip=(e,t)=>{Op({type:1,toast:{id:e,height:t}})},Ap=()=>{Op({type:5,time:Date.now()})},Lp=e=>{let{toasts:t,pausedAt:n}=((e={})=>{let[t,n]=r.useState(Tp);r.useEffect((()=>(Cp.push(n),()=>{let e=Cp.indexOf(n);e>-1&&Cp.splice(e,1)})),[t]);let a=t.toasts.map((t=>{var n,r;return{...e,...e[t.type],...t,duration:t.duration||(null==(n=e[t.type])?void 0:n.duration)||(null==e?void 0:e.duration)||Dp[t.type],style:{...e.style,...null==(r=e[t.type])?void 0:r.style,...t.style}}}));return{...t,toasts:a}})(e);r.useEffect((()=>{if(n)return;let e=Date.now(),r=t.map((t=>{if(t.duration===1/0)return;let n=(t.duration||0)+t.pauseDuration-(e-t.createdAt);if(!(n<0))return setTimeout((()=>Np.dismiss(t.id)),n);t.visible&&Np.dismiss(t.id)}));return()=>{r.forEach((e=>e&&clearTimeout(e)))}}),[t,n]);let a=r.useCallback((()=>{n&&Op({type:6,time:Date.now()})}),[n]),o=r.useCallback(((e,n)=>{let{reverseOrder:r=!1,gutter:a=8,defaultPosition:o}=n||{},i=t.filter((t=>(t.position||o)===(e.position||o)&&t.height)),l=i.findIndex((t=>t.id===e.id)),s=i.filter(((e,t)=>t<l&&e.visible)).length;return i.filter((e=>e.visible)).slice(...r?[s+1]:[0,s]).reduce(((e,t)=>e+(t.height||0)+a),0)}),[t]);return{toasts:t,handlers:{updateHeight:Ip,startPause:Ap,endPause:a,calculateOffset:o}}};const Rp=r.createContext(null),jp=({toastsPropsMap:e,className:t,...n})=>{const{toasts:r,handlers:a}=Lp(),{startPause:o,endPause:i,calculateOffset:l,updateHeight:s}=a;return We(lu,{id:"toast",children:r.map((r=>{const a=e.get(r.id);if(!a)return console.warn("Could not find toast with id",r.id),null;const{position:u,duration:c,...d}=a,f=l(r,{reverseOrder:!1,gutter:8,defaultPosition:u}),{transform:p,positionClassName:h}=((e,t)=>{if(!e)return{positionClassName:"",transform:`translateY(${t}px)`};let n="";const r=e.includes("center"),a=e.includes("bottom");return"top-left"===e?n=mp.topLeft:"top-center"===e?n=mp.topCenter:"top-right"===e?n=mp.topRight:"bottom-left"===e?n=mp.bottomLeft:"bottom-center"===e?n=mp.bottomCenter:"bottom-right"===e&&(n=mp.bottomRight),{positionClassName:n,transform:`translateY(${a?-t:t}px) translateX(${r?"-50%":"0"})`}})(u,f);return We("div",{onMouseEnter:o,onMouseLeave:i,...n,className:Qe(mp.toastContainer,h,t),style:{transform:p,...n.style},children:We(wp,{className:Qe(d.className),toastRef:e=>{if(e&&"number"!=typeof r.height){const t=e.getBoundingClientRect().height;s(r.id,t)}},...d,style:{opacity:r.visible?1:0,...d.style},onClose:()=>{var e;Np.dismiss(r.id),null==(e=d.onClose)||e.call(d)}},r.id)},`container-${r.id}`)}))})};t.AddIcon=_s,t.ArrowForwardIcon=Ss,t.Autocomplete=cu,t.Badge=fu,t.Breadcrumb=gu,t.BreadcrumbItem=hu,t.Button=yu,t.ButtonGroup=xu,t.CALENDAR_MAX_YEAR=Gc,t.CALENDAR_MIN_YEAR=Wc,t.Calendar=Zc,t.CalendarIcon=Us,t.Card=Xc,t.CardBody=Jc,t.CardHeader=td,t.CheckIcon=Ds,t.Checkbox=od,t.CheckboxGroup=ld,t.CheckboxIcon=Ts,t.CheckboxOutlineBlankIcon=Os,t.ChevronDownIcon=Es,t.ChevronLeftIcon=js,t.ChevronRightIcon=Ms,t.ChevronUpIcon=Cs,t.CloseIcon=Ps,t.Collapse=dd,t.CollapseHeader=ud,t.DateField=pd,t.DatePicker=gd,t.DateRangePicker=bd,t.Dropdown=wd,t.DropdownItem=Ws,t.DropdownMenu=ru,t.ErrorIcon=Ns,t.FolderIcon=Is,t.IconButton=_d,t.IconButtonGroup=Sd,t.KeyboardReturnIcon=As,t.LSD_NAMESPACE="lsd",t.LsdIcon=ks,t.MenuIcon=Ls,t.Modal=Td,t.ModalBody=Dd,t.ModalFooter=Nd,t.MoreIcon=Rs,t.NumberInput=Ad,t.PickIcon=Bs,t.Portal=lu,t.PortalContext=au,t.PortalProvider=Rd,t.Quote=Md,t.RadioButton=zd,t.RadioButtonCheckedIcon=$s,t.RadioButtonGroup=Ud,t.RadioButtonIcon=zs,t.RemoveIcon=Hs,t.SearchIcon=Fs,t.THEME_BREAKPOINTS=fs,t.THEME_TYPOGRAPHY_PROPERTIES=ms,t.THEME_TYPOGRAPHY_VARIANTS=ps,t.THEME_VARIANT_PROPERTIES=["typography"],t.TabItem=qd,t.Table=Jd,t.TableBody=Gd,t.TableHeader=Qd,t.TableItem=tf,t.TableRow=rf,t.Tabs=pf,t.Tag=mf,t.TextField=wf,t.ThemeProvider=({theme:e,children:t,injectCssVars:n=!0})=>We(bp,{children:We(Rd,{children:Ge(yp.Provider,{value:{theme:e},children:[We(vp,{theme:e}),n&&We(o.Global,{styles:e.globalStyles}),We(o.ThemeProvider,{theme:e,children:t})]})})}),t.Toast=wp,t.ToastContext=Rp,t.ToastProvider=({providerToastOptions:e,children:t,...n})=>{const[a,o]=r.useState(new Map);return Ge(Rp.Provider,{value:(t,n)=>{const r={...e,...n},a=Np("",{duration:null==r?void 0:r.duration});t&&o((e=>{const n=new Map(e);return n.set(a,{...t,...r}),n}))},children:[t,We(jp,{toastsPropsMap:a,...n})]})},t.TooltipBase=qc,t.Typography=Vs,t.createTheme=Nf,t.createThemeGlobalStyles=kf,t.defaultThemes=Af,t.useCanUsePortal=ou,t.usePortal=iu,t.useTheme=()=>r.useContext(yp).theme??Af.light,t.useToast=function(){const e=r.useContext(Rp);if(!e)throw new Error("useToast must be used within a ToastProvider");return e},t.withTheme=e=>t=>e(t)},90602:(e,t,n)=>{"use strict";n.d(t,{Z:()=>ae});var r=function(){function e(e){var t=this;this._insertTag=function(e){var n;n=0===t.tags.length?t.insertionPoint?t.insertionPoint.nextSibling:t.prepend?t.container.firstChild:t.before:t.tags[t.tags.length-1].nextSibling,t.container.insertBefore(e,n),t.tags.push(e)},this.isSpeedy=void 0===e.speedy||e.speedy,this.tags=[],this.ctr=0,this.nonce=e.nonce,this.key=e.key,this.container=e.container,this.prepend=e.prepend,this.insertionPoint=e.insertionPoint,this.before=null}var t=e.prototype;return t.hydrate=function(e){e.forEach(this._insertTag)},t.insert=function(e){this.ctr%(this.isSpeedy?65e3:1)==0&&this._insertTag(function(e){var t=document.createElement("style");return t.setAttribute("data-emotion",e.key),void 0!==e.nonce&&t.setAttribute("nonce",e.nonce),t.appendChild(document.createTextNode("")),t.setAttribute("data-s",""),t}(this));var t=this.tags[this.tags.length-1];if(this.isSpeedy){var n=function(e){if(e.sheet)return e.sheet;for(var t=0;t<document.styleSheets.length;t++)if(document.styleSheets[t].ownerNode===e)return document.styleSheets[t]}(t);try{n.insertRule(e,n.cssRules.length)}catch(r){0}}else t.appendChild(document.createTextNode(e));this.ctr++},t.flush=function(){this.tags.forEach((function(e){return e.parentNode&&e.parentNode.removeChild(e)})),this.tags=[],this.ctr=0},e}(),a=Math.abs,o=String.fromCharCode,i=Object.assign;function l(e){return e.trim()}function s(e,t,n){return e.replace(t,n)}function u(e,t){return e.indexOf(t)}function c(e,t){return 0|e.charCodeAt(t)}function d(e,t,n){return e.slice(t,n)}function f(e){return e.length}function p(e){return e.length}function h(e,t){return t.push(e),e}var m=1,g=1,v=0,b=0,y=0,w="";function x(e,t,n,r,a,o,i){return{value:e,root:t,parent:n,type:r,props:a,children:o,line:m,column:g,length:i,return:""}}function k(e,t){return i(x("",null,null,"",null,null,0),e,{length:-e.length},t)}function _(){return y=b>0?c(w,--b):0,g--,10===y&&(g=1,m--),y}function E(){return y=b<v?c(w,b++):0,g++,10===y&&(g=1,m++),y}function S(){return c(w,b)}function C(){return b}function T(e,t){return d(w,e,t)}function O(e){switch(e){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function D(e){return m=g=1,v=f(w=e),b=0,[]}function P(e){return w="",e}function N(e){return l(T(b-1,L(91===e?e+2:40===e?e+1:e)))}function I(e){for(;(y=S())&&y<33;)E();return O(e)>2||O(y)>3?"":" "}function A(e,t){for(;--t&&E()&&!(y<48||y>102||y>57&&y<65||y>70&&y<97););return T(e,C()+(t<6&&32==S()&&32==E()))}function L(e){for(;E();)switch(y){case e:return b;case 34:case 39:34!==e&&39!==e&&L(y);break;case 40:41===e&&L(e);break;case 92:E()}return b}function R(e,t){for(;E()&&e+y!==57&&(e+y!==84||47!==S()););return"/*"+T(t,b-1)+"*"+o(47===e?e:E())}function j(e){for(;!O(S());)E();return T(e,b)}var M="-ms-",F="-moz-",B="-webkit-",z="comm",$="rule",U="decl",H="@keyframes";function V(e,t){for(var n="",r=p(e),a=0;a<r;a++)n+=t(e[a],a,e,t)||"";return n}function q(e,t,n,r){switch(e.type){case"@layer":if(e.children.length)break;case"@import":case U:return e.return=e.return||e.value;case z:return"";case H:return e.return=e.value+"{"+V(e.children,r)+"}";case $:e.value=e.props.join(",")}return f(n=V(e.children,r))?e.return=e.value+"{"+n+"}":""}function W(e){return P(G("",null,null,null,[""],e=D(e),0,[0],e))}function G(e,t,n,r,a,i,l,d,p){for(var m=0,g=0,v=l,b=0,y=0,w=0,x=1,k=1,T=1,O=0,D="",P=a,L=i,M=r,F=D;k;)switch(w=O,O=E()){case 40:if(108!=w&&58==c(F,v-1)){-1!=u(F+=s(N(O),"&","&\f"),"&\f")&&(T=-1);break}case 34:case 39:case 91:F+=N(O);break;case 9:case 10:case 13:case 32:F+=I(w);break;case 92:F+=A(C()-1,7);continue;case 47:switch(S()){case 42:case 47:h(Q(R(E(),C()),t,n),p);break;default:F+="/"}break;case 123*x:d[m++]=f(F)*T;case 125*x:case 59:case 0:switch(O){case 0:case 125:k=0;case 59+g:-1==T&&(F=s(F,/\f/g,"")),y>0&&f(F)-v&&h(y>32?Y(F+";",r,n,v-1):Y(s(F," ","")+";",r,n,v-2),p);break;case 59:F+=";";default:if(h(M=Z(F,t,n,m,g,a,d,D,P=[],L=[],v),i),123===O)if(0===g)G(F,t,M,M,P,i,v,d,L);else switch(99===b&&110===c(F,3)?100:b){case 100:case 108:case 109:case 115:G(e,M,M,r&&h(Z(e,M,M,0,0,a,d,D,a,P=[],v),L),a,L,v,d,r?P:L);break;default:G(F,M,M,M,[""],L,0,d,L)}}m=g=y=0,x=T=1,D=F="",v=l;break;case 58:v=1+f(F),y=w;default:if(x<1)if(123==O)--x;else if(125==O&&0==x++&&125==_())continue;switch(F+=o(O),O*x){case 38:T=g>0?1:(F+="\f",-1);break;case 44:d[m++]=(f(F)-1)*T,T=1;break;case 64:45===S()&&(F+=N(E())),b=S(),g=v=f(D=F+=j(C())),O++;break;case 45:45===w&&2==f(F)&&(x=0)}}return i}function Z(e,t,n,r,o,i,u,c,f,h,m){for(var g=o-1,v=0===o?i:[""],b=p(v),y=0,w=0,k=0;y<r;++y)for(var _=0,E=d(e,g+1,g=a(w=u[y])),S=e;_<b;++_)(S=l(w>0?v[_]+" "+E:s(E,/&\f/g,v[_])))&&(f[k++]=S);return x(e,t,n,0===o?$:c,f,h,m)}function Q(e,t,n){return x(e,t,n,z,o(y),d(e,2,-2),0)}function Y(e,t,n,r){return x(e,t,n,U,d(e,0,r),d(e,r+1,-1),r)}var X=function(e,t,n){for(var r=0,a=0;r=a,a=S(),38===r&&12===a&&(t[n]=1),!O(a);)E();return T(e,b)},K=function(e,t){return P(function(e,t){var n=-1,r=44;do{switch(O(r)){case 0:38===r&&12===S()&&(t[n]=1),e[n]+=X(b-1,t,n);break;case 2:e[n]+=N(r);break;case 4:if(44===r){e[++n]=58===S()?"&\f":"",t[n]=e[n].length;break}default:e[n]+=o(r)}}while(r=E());return e}(D(e),t))},J=new WeakMap,ee=function(e){if("rule"===e.type&&e.parent&&!(e.length<1)){for(var t=e.value,n=e.parent,r=e.column===n.column&&e.line===n.line;"rule"!==n.type;)if(!(n=n.parent))return;if((1!==e.props.length||58===t.charCodeAt(0)||J.get(n))&&!r){J.set(e,!0);for(var a=[],o=K(t,a),i=n.props,l=0,s=0;l<o.length;l++)for(var u=0;u<i.length;u++,s++)e.props[s]=a[l]?o[l].replace(/&\f/g,i[u]):i[u]+" "+o[l]}}},te=function(e){if("decl"===e.type){var t=e.value;108===t.charCodeAt(0)&&98===t.charCodeAt(2)&&(e.return="",e.value="")}};function ne(e,t){switch(function(e,t){return 45^c(e,0)?(((t<<2^c(e,0))<<2^c(e,1))<<2^c(e,2))<<2^c(e,3):0}(e,t)){case 5103:return B+"print-"+e+e;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 6391:case 5879:case 5623:case 6135:case 4599:case 4855:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:return B+e+e;case 5349:case 4246:case 4810:case 6968:case 2756:return B+e+F+e+M+e+e;case 6828:case 4268:return B+e+M+e+e;case 6165:return B+e+M+"flex-"+e+e;case 5187:return B+e+s(e,/(\w+).+(:[^]+)/,B+"box-$1$2"+M+"flex-$1$2")+e;case 5443:return B+e+M+"flex-item-"+s(e,/flex-|-self/,"")+e;case 4675:return B+e+M+"flex-line-pack"+s(e,/align-content|flex-|-self/,"")+e;case 5548:return B+e+M+s(e,"shrink","negative")+e;case 5292:return B+e+M+s(e,"basis","preferred-size")+e;case 6060:return B+"box-"+s(e,"-grow","")+B+e+M+s(e,"grow","positive")+e;case 4554:return B+s(e,/([^-])(transform)/g,"$1"+B+"$2")+e;case 6187:return s(s(s(e,/(zoom-|grab)/,B+"$1"),/(image-set)/,B+"$1"),e,"")+e;case 5495:case 3959:return s(e,/(image-set\([^]*)/,B+"$1$`$1");case 4968:return s(s(e,/(.+:)(flex-)?(.*)/,B+"box-pack:$3"+M+"flex-pack:$3"),/s.+-b[^;]+/,"justify")+B+e+e;case 4095:case 3583:case 4068:case 2532:return s(e,/(.+)-inline(.+)/,B+"$1$2")+e;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(f(e)-1-t>6)switch(c(e,t+1)){case 109:if(45!==c(e,t+4))break;case 102:return s(e,/(.+:)(.+)-([^]+)/,"$1"+B+"$2-$3$1"+F+(108==c(e,t+3)?"$3":"$2-$3"))+e;case 115:return~u(e,"stretch")?ne(s(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(115!==c(e,t+1))break;case 6444:switch(c(e,f(e)-3-(~u(e,"!important")&&10))){case 107:return s(e,":",":"+B)+e;case 101:return s(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+B+(45===c(e,14)?"inline-":"")+"box$3$1"+B+"$2$3$1"+M+"$2box$3")+e}break;case 5936:switch(c(e,t+11)){case 114:return B+e+M+s(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return B+e+M+s(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return B+e+M+s(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return B+e+M+e+e}return e}var re=[function(e,t,n,r){if(e.length>-1&&!e.return)switch(e.type){case U:e.return=ne(e.value,e.length);break;case H:return V([k(e,{value:s(e.value,"@","@"+B)})],r);case $:if(e.length)return function(e,t){return e.map(t).join("")}(e.props,(function(t){switch(function(e,t){return(e=t.exec(e))?e[0]:e}(t,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return V([k(e,{props:[s(t,/:(read-\w+)/,":"+F+"$1")]})],r);case"::placeholder":return V([k(e,{props:[s(t,/:(plac\w+)/,":"+B+"input-$1")]}),k(e,{props:[s(t,/:(plac\w+)/,":"+F+"$1")]}),k(e,{props:[s(t,/:(plac\w+)/,M+"input-$1")]})],r)}return""}))}}],ae=function(e){var t=e.key;if("css"===t){var n=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(n,(function(e){-1!==e.getAttribute("data-emotion").indexOf(" ")&&(document.head.appendChild(e),e.setAttribute("data-s",""))}))}var a=e.stylisPlugins||re;var o,i,l={},s=[];o=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+t+' "]'),(function(e){for(var t=e.getAttribute("data-emotion").split(" "),n=1;n<t.length;n++)l[t[n]]=!0;s.push(e)}));var u,c,d,f,h=[q,(f=function(e){u.insert(e)},function(e){e.root||(e=e.return)&&f(e)})],m=(c=[ee,te].concat(a,h),d=p(c),function(e,t,n,r){for(var a="",o=0;o<d;o++)a+=c[o](e,t,n,r)||"";return a});i=function(e,t,n,r){u=n,V(W(e?e+"{"+t.styles+"}":t.styles),m),r&&(g.inserted[t.name]=!0)};var g={key:t,sheet:new r({key:t,container:o,nonce:e.nonce,speedy:e.speedy,prepend:e.prepend,insertionPoint:e.insertionPoint}),nonce:e.nonce,inserted:l,registered:{},insert:i};return g.sheet.hydrate(s),g}},45042:(e,t,n)=>{"use strict";function r(e){var t=Object.create(null);return function(n){return void 0===t[n]&&(t[n]=e(n)),t[n]}}n.d(t,{Z:()=>r})},80123:(e,t,n)=>{"use strict";n.d(t,{C:()=>g,E:()=>T,T:()=>y,_:()=>v,a:()=>k,b:()=>_,c:()=>S,h:()=>h,i:()=>p,u:()=>w,w:()=>b});var r=n(67294),a=n(90602);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o.apply(this,arguments)}var i=function(e){var t=new WeakMap;return function(n){if(t.has(n))return t.get(n);var r=e(n);return t.set(n,r),r}},l=n(8679),s=n.n(l),u=function(e,t){return s()(e,t)},c=n(70444),d=n(48137),f=n(27278),p=!0,h={}.hasOwnProperty,m=r.createContext("undefined"!=typeof HTMLElement?(0,a.Z)({key:"css"}):null);var g=m.Provider,v=function(){return(0,r.useContext)(m)},b=function(e){return(0,r.forwardRef)((function(t,n){var a=(0,r.useContext)(m);return e(t,a,n)}))};p||(b=function(e){return function(t){var n=(0,r.useContext)(m);return null===n?(n=(0,a.Z)({key:"css"}),r.createElement(m.Provider,{value:n},e(t,n))):e(t,n)}});var y=r.createContext({});var w=function(){return r.useContext(y)},x=i((function(e){return i((function(t){return function(e,t){return"function"==typeof t?t(e):o({},e,t)}(e,t)}))})),k=function(e){var t=r.useContext(y);return e.theme!==t&&(t=x(t)(e.theme)),r.createElement(y.Provider,{value:t},e.children)};function _(e){var t=e.displayName||e.name||"Component",n=function(t,n){var a=r.useContext(y);return r.createElement(e,o({theme:a,ref:n},t))},a=r.forwardRef(n);return a.displayName="WithTheme("+t+")",u(a,e)}var E="__EMOTION_TYPE_PLEASE_DO_NOT_USE__",S=function(e,t){var n={};for(var r in t)h.call(t,r)&&(n[r]=t[r]);return n[E]=e,n},C=function(e){var t=e.cache,n=e.serialized,r=e.isStringTag;return(0,c.hC)(t,n,r),(0,f.L)((function(){return(0,c.My)(t,n,r)})),null};var T=b((function(e,t,n){var a=e.css;"string"==typeof a&&void 0!==t.registered[a]&&(a=t.registered[a]);var o=e[E],i=[a],l="";"string"==typeof e.className?l=(0,c.fp)(t.registered,i,e.className):null!=e.className&&(l=e.className+" ");var s=(0,d.O)(i,void 0,r.useContext(y));l+=t.key+"-"+s.name;var u={};for(var f in e)h.call(e,f)&&"css"!==f&&f!==E&&(u[f]=e[f]);return u.ref=n,u.className=l,r.createElement(r.Fragment,null,r.createElement(C,{cache:t,serialized:s,isStringTag:"string"==typeof o}),r.createElement(o,u))}))},70917:(e,t,n)=>{"use strict";n.r(t),n.d(t,{CacheProvider:()=>r.C,ClassNames:()=>h,Global:()=>u,ThemeContext:()=>r.T,ThemeProvider:()=>r.a,__unsafe_useEmotionCache:()=>r._,createElement:()=>s,css:()=>c,jsx:()=>s,keyframes:()=>d,useTheme:()=>r.u,withEmotionCache:()=>r.w,withTheme:()=>r.b});var r=n(80123),a=n(67294),o=n(70444),i=n(27278),l=n(48137),s=(n(90602),n(8679),function(e,t){var n=arguments;if(null==t||!r.h.call(t,"css"))return a.createElement.apply(void 0,n);var o=n.length,i=new Array(o);i[0]=r.E,i[1]=(0,r.c)(e,t);for(var l=2;l<o;l++)i[l]=n[l];return a.createElement.apply(null,i)}),u=(0,r.w)((function(e,t){var n=e.styles,s=(0,l.O)([n],void 0,a.useContext(r.T));if(!r.i){for(var u,c=s.name,d=s.styles,f=s.next;void 0!==f;)c+=" "+f.name,d+=f.styles,f=f.next;var p=!0===t.compat,h=t.insert("",{name:c,styles:d},t.sheet,p);return p?null:a.createElement("style",((u={})["data-emotion"]=t.key+"-global "+c,u.dangerouslySetInnerHTML={__html:h},u.nonce=t.sheet.nonce,u))}var m=a.useRef();return(0,i.j)((function(){var e=t.key+"-global",n=new t.sheet.constructor({key:e,nonce:t.sheet.nonce,container:t.sheet.container,speedy:t.sheet.isSpeedy}),r=!1,a=document.querySelector('style[data-emotion="'+e+" "+s.name+'"]');return t.sheet.tags.length&&(n.before=t.sheet.tags[0]),null!==a&&(r=!0,a.setAttribute("data-emotion",e),n.hydrate([a])),m.current=[n,r],function(){n.flush()}}),[t]),(0,i.j)((function(){var e=m.current,n=e[0];if(e[1])e[1]=!1;else{if(void 0!==s.next&&(0,o.My)(t,s.next,!0),n.tags.length){var r=n.tags[n.tags.length-1].nextElementSibling;n.before=r,n.flush()}t.insert("",s,n,!1)}}),[t,s.name]),null}));function c(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,l.O)(t)}var d=function(){var e=c.apply(void 0,arguments),t="animation-"+e.name;return{name:t,styles:"@keyframes "+t+"{"+e.styles+"}",anim:1,toString:function(){return"_EMO_"+this.name+"_"+this.styles+"_EMO_"}}},f=function e(t){for(var n=t.length,r=0,a="";r<n;r++){var o=t[r];if(null!=o){var i=void 0;switch(typeof o){case"boolean":break;case"object":if(Array.isArray(o))i=e(o);else for(var l in i="",o)o[l]&&l&&(i&&(i+=" "),i+=l);break;default:i=o}i&&(a&&(a+=" "),a+=i)}}return a};var p=function(e){var t=e.cache,n=e.serializedArr;return(0,i.L)((function(){for(var e=0;e<n.length;e++)(0,o.My)(t,n[e],!1)})),null},h=(0,r.w)((function(e,t){var n=[],i=function(){for(var e=arguments.length,r=new Array(e),a=0;a<e;a++)r[a]=arguments[a];var i=(0,l.O)(r,t.registered);return n.push(i),(0,o.hC)(t,i,!1),t.key+"-"+i.name},s={css:i,cx:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];return function(e,t,n){var r=[],a=(0,o.fp)(e,r,n);return r.length<2?n:a+t(r)}(t.registered,i,f(n))},theme:a.useContext(r.T)},u=e.children(s);return!0,a.createElement(a.Fragment,null,a.createElement(p,{cache:t,serializedArr:n}),u)}))},48137:(e,t,n)=>{"use strict";n.d(t,{O:()=>h});var r={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},a=n(45042),o=/[A-Z]|^ms/g,i=/_EMO_([^_]+?)_([^]*?)_EMO_/g,l=function(e){return 45===e.charCodeAt(1)},s=function(e){return null!=e&&"boolean"!=typeof e},u=(0,a.Z)((function(e){return l(e)?e:e.replace(o,"-$&").toLowerCase()})),c=function(e,t){switch(e){case"animation":case"animationName":if("string"==typeof t)return t.replace(i,(function(e,t,n){return f={name:t,styles:n,next:f},t}))}return 1===r[e]||l(e)||"number"!=typeof t||0===t?t:t+"px"};function d(e,t,n){if(null==n)return"";if(void 0!==n.__emotion_styles)return n;switch(typeof n){case"boolean":return"";case"object":if(1===n.anim)return f={name:n.name,styles:n.styles,next:f},n.name;if(void 0!==n.styles){var r=n.next;if(void 0!==r)for(;void 0!==r;)f={name:r.name,styles:r.styles,next:f},r=r.next;return n.styles+";"}return function(e,t,n){var r="";if(Array.isArray(n))for(var a=0;a<n.length;a++)r+=d(e,t,n[a])+";";else for(var o in n){var i=n[o];if("object"!=typeof i)null!=t&&void 0!==t[i]?r+=o+"{"+t[i]+"}":s(i)&&(r+=u(o)+":"+c(o,i)+";");else if(!Array.isArray(i)||"string"!=typeof i[0]||null!=t&&void 0!==t[i[0]]){var l=d(e,t,i);switch(o){case"animation":case"animationName":r+=u(o)+":"+l+";";break;default:r+=o+"{"+l+"}"}}else for(var f=0;f<i.length;f++)s(i[f])&&(r+=u(o)+":"+c(o,i[f])+";")}return r}(e,t,n);case"function":if(void 0!==e){var a=f,o=n(e);return f=a,d(e,t,o)}}if(null==t)return n;var i=t[n];return void 0!==i?i:n}var f,p=/label:\s*([^\s;\n{]+)\s*(;|$)/g;var h=function(e,t,n){if(1===e.length&&"object"==typeof e[0]&&null!==e[0]&&void 0!==e[0].styles)return e[0];var r=!0,a="";f=void 0;var o=e[0];null==o||void 0===o.raw?(r=!1,a+=d(n,t,o)):a+=o[0];for(var i=1;i<e.length;i++)a+=d(n,t,e[i]),r&&(a+=o[i]);p.lastIndex=0;for(var l,s="";null!==(l=p.exec(a));)s+="-"+l[1];var u=function(e){for(var t,n=0,r=0,a=e.length;a>=4;++r,a-=4)t=1540483477*(65535&(t=255&e.charCodeAt(r)|(255&e.charCodeAt(++r))<<8|(255&e.charCodeAt(++r))<<16|(255&e.charCodeAt(++r))<<24))+(59797*(t>>>16)<<16),n=1540483477*(65535&(t^=t>>>24))+(59797*(t>>>16)<<16)^1540483477*(65535&n)+(59797*(n>>>16)<<16);switch(a){case 3:n^=(255&e.charCodeAt(r+2))<<16;case 2:n^=(255&e.charCodeAt(r+1))<<8;case 1:n=1540483477*(65535&(n^=255&e.charCodeAt(r)))+(59797*(n>>>16)<<16)}return(((n=1540483477*(65535&(n^=n>>>13))+(59797*(n>>>16)<<16))^n>>>15)>>>0).toString(36)}(a)+s;return{name:u,styles:a,next:f}}},27278:(e,t,n)=>{"use strict";var r;n.d(t,{L:()=>i,j:()=>l});var a=n(67294),o=!!(r||(r=n.t(a,2))).useInsertionEffect&&(r||(r=n.t(a,2))).useInsertionEffect,i=o||function(e){return e()},l=o||a.useLayoutEffect},70444:(e,t,n)=>{"use strict";n.d(t,{My:()=>o,fp:()=>r,hC:()=>a});function r(e,t,n){var r="";return n.split(" ").forEach((function(n){void 0!==e[n]?t.push(e[n]+";"):r+=n+" "})),r}var a=function(e,t,n){var r=e.key+"-"+t.name;!1===n&&void 0===e.registered[r]&&(e.registered[r]=t.styles)},o=function(e,t,n){a(e,t,n);var r=e.key+"-"+t.name;if(void 0===e.inserted[t.name]){var o=t;do{e.insert(t===o?"."+r:"",o,e.sheet,!0),o=o.next}while(void 0!==o)}}},19044:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o.apply(this,arguments)}const i=e=>{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:18,height:18,viewBox:"0 0 18 18",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{stroke:"#fff",d:"M9 17.5V.5M.5 9h17"})))}},80255:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o.apply(this,arguments)}const i=e=>{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:20,height:20,viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M11.764 5.294 7.06 10l4.705 4.706",stroke:"#000",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"})))}},67146:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o.apply(this,arguments)}const i=e=>{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:14,height:14,viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M11.667 6.417h-7.1l3.261-3.261L7 2.333 2.333 7 7 11.667l.823-.823-3.255-3.26h7.099V6.417Z",fill:"#fff"})))}},68425:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>l});var r,a,o=n(67294);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i.apply(this,arguments)}const l=e=>{let{title:t,titleId:n,...l}=e;return o.createElement("svg",i({width:20,height:20,viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},l),t?o.createElement("title",{id:n},t):null,r||(r=o.createElement("rect",{width:20,height:20,rx:10,fill:"#000"})),a||(a=o.createElement("path",{d:"m9 8 2 2-2 2",stroke:"#fff",strokeWidth:1.2,strokeLinecap:"round",strokeLinejoin:"round"})))}},88121:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o.apply(this,arguments)}const i=e=>{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:14,height:14,viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"m7 2.333-.823.823 3.255 3.26H2.333v1.167h7.1l-3.256 3.261.823.823L11.667 7 7 2.333Z",fill:"#fff"})))}},62082:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>l});var r,a,o=n(67294);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i.apply(this,arguments)}const l=e=>{let{title:t,titleId:n,...l}=e;return o.createElement("svg",i({width:40,height:40,viewBox:"0 0 40 40",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},l),t?o.createElement("title",{id:n},t):null,r||(r=o.createElement("path",{d:"M20 20a3.21 3.21 0 0 1-2.354-.98 3.21 3.21 0 0 1-.98-2.353c0-.917.327-1.702.98-2.355A3.21 3.21 0 0 1 20 13.333a3.21 3.21 0 0 1 2.354.98 3.21 3.21 0 0 1 .98 2.354 3.21 3.21 0 0 1-.98 2.354A3.21 3.21 0 0 1 20 20Zm-6.666 6.667v-2.334c0-.472.121-.906.364-1.302.244-.396.567-.698.969-.906.86-.43 1.736-.754 2.625-.97A11.418 11.418 0 0 1 20 20.834c.917 0 1.82.108 2.709.324.888.215 1.763.538 2.625.968.402.208.725.51.969.907.243.396.364.83.364 1.301v2.334H13.333ZM15 25h10v-.667a.817.817 0 0 0-.417-.708 10.844 10.844 0 0 0-2.27-.843 9.652 9.652 0 0 0-4.625 0c-.764.187-1.521.468-2.271.843a.815.815 0 0 0-.303.292.776.776 0 0 0-.114.416V25Zm5-6.667c.459 0 .851-.163 1.178-.49.326-.326.49-.719.489-1.176 0-.459-.164-.851-.49-1.178A1.602 1.602 0 0 0 20 15c-.458 0-.85.164-1.177.49-.327.328-.49.72-.49 1.178 0 .458.164.85.49 1.177.327.327.72.49 1.177.49Z",fill:"#fff"})),a||(a=o.createElement("rect",{x:.5,y:.5,width:39,height:39,rx:19.5,stroke:"#fff"})))}},80469:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o.apply(this,arguments)}const i=e=>{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:16,height:16,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"m12.667 4.273-.94-.94L8.001 7.06 4.274 3.333l-.94.94L7.061 8l-3.727 3.727.94.94L8.001 8.94l3.726 3.727.94-.94L8.941 8l3.726-3.727Z",fill:"#fff",opacity:.6})))}},94793:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o.apply(this,arguments)}const i=e=>{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:14,height:14,viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M2.917 12.833c-.321 0-.596-.114-.825-.343a1.121 1.121 0 0 1-.342-.823V3.5h1.167v8.167h6.416v1.166H2.917ZM5.25 10.5c-.32 0-.596-.114-.824-.343a1.121 1.121 0 0 1-.343-.824v-7c0-.32.115-.595.343-.824.229-.229.504-.343.824-.342h5.25c.32 0 .596.114.824.343.229.228.343.503.343.823v7c0 .321-.115.596-.343.825a1.121 1.121 0 0 1-.824.342H5.25Zm0-1.167h5.25v-7H5.25v7Z",fill:"#fff"})))}},14607:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o.apply(this,arguments)}const i=e=>{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:40,height:40,viewBox:"0 0 40 40",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M14.2 23.077c-1.733 0-3.147-1.575-3.147-3.504 0-1.926 1.379-3.5 3.149-3.5 1.75 0 3.183 1.574 3.148 3.5 0 1.929-1.398 3.504-3.15 3.504Zm11.623 0c-1.733 0-3.15-1.575-3.15-3.504 0-1.926 1.382-3.5 3.15-3.5 1.75 0 3.184 1.574 3.15 3.5 0 1.929-1.381 3.504-3.15 3.504ZM16.875 7.205l-.513-.938-1.057.175a27.255 27.255 0 0 0-6.93 2.133l-.38.177-.237.348C3.403 15.523 2.208 21.847 2.8 28.06l.065.677.55.4a28.181 28.181 0 0 0 8.463 4.238l1.317.403 1.855-4.528c3.183.787 6.717.788 9.898 0l1.845 4.53 1.317-.405a28.033 28.033 0 0 0 8.467-4.24l.545-.397.066-.67c.727-7.2-1.161-13.473-4.93-18.975l-.236-.345-.38-.173a27.625 27.625 0 0 0-6.924-2.133l-1.03-.172-.523.902c-.155.27-.301.544-.438.823a26.463 26.463 0 0 0-5.439 0c-.133-.266-.27-.53-.413-.79Zm-5.683 20.478c.328.19.675.377 1.016.547l-.748 1.827a25.041 25.041 0 0 1-5.713-2.964c-.375-5.231.688-10.508 4.273-15.95a24.256 24.256 0 0 1 4.707-1.521c.1.208.193.411.27.593l.455 1.072 1.153-.169a23.508 23.508 0 0 1 6.817 0l1.15.167.453-1.07c.078-.187.17-.39.267-.593a24.71 24.71 0 0 1 4.713 1.525c3.125 4.7 4.702 9.943 4.243 15.945a24.841 24.841 0 0 1-5.716 2.963l-.742-1.823c.343-.172.69-.359 1.022-.549.816-.47 1.695-1.056 2.255-1.616l-2.134-2.134c-.271.274-.871.7-1.628 1.137-.74.427-1.475.772-1.945.927-3.338 1.105-7.38 1.105-10.72 0-.468-.155-1.203-.5-1.943-.927-.757-.435-1.357-.863-1.63-1.137l-2.134 2.134c.562.56 1.442 1.146 2.259 1.616Z",fill:"#fff"})))}},50437:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>l});var r,a,o=n(67294);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i.apply(this,arguments)}const l=e=>{let{title:t,titleId:n,...l}=e;return o.createElement("svg",i({width:71,height:55,viewBox:"0 0 71 55",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},l),t?o.createElement("title",{id:n},t):null,r||(r=o.createElement("g",{clipPath:"url(#a)"},o.createElement("path",{d:"M60.105 4.898A58.55 58.55 0 0 0 45.653.415a.22.22 0 0 0-.233.11 40.784 40.784 0 0 0-1.8 3.697c-5.456-.817-10.886-.817-16.23 0-.485-1.164-1.201-2.587-1.828-3.697a.228.228 0 0 0-.233-.11 58.386 58.386 0 0 0-14.451 4.483.207.207 0 0 0-.095.082C1.578 18.73-.944 32.144.293 45.39a.244.244 0 0 0 .093.167c6.073 4.46 11.955 7.167 17.729 8.962a.23.23 0 0 0 .249-.082 42.08 42.08 0 0 0 3.627-5.9.225.225 0 0 0-.123-.312 38.772 38.772 0 0 1-5.539-2.64.228.228 0 0 1-.022-.378c.372-.279.744-.569 1.1-.862a.22.22 0 0 1 .23-.03c11.619 5.304 24.198 5.304 35.68 0a.219.219 0 0 1 .233.027c.356.293.728.586 1.103.865a.228.228 0 0 1-.02.378 36.384 36.384 0 0 1-5.54 2.637.227.227 0 0 0-.121.315 47.249 47.249 0 0 0 3.624 5.897.225.225 0 0 0 .249.084c5.801-1.794 11.684-4.502 17.757-8.961a.228.228 0 0 0 .092-.164c1.48-15.315-2.48-28.618-10.497-40.412a.18.18 0 0 0-.093-.084Zm-36.38 32.427c-3.497 0-6.38-3.211-6.38-7.156 0-3.944 2.827-7.156 6.38-7.156 3.583 0 6.438 3.24 6.382 7.156 0 3.945-2.827 7.156-6.381 7.156Zm23.593 0c-3.498 0-6.38-3.211-6.38-7.156 0-3.944 2.826-7.156 6.38-7.156 3.582 0 6.437 3.24 6.38 7.156 0 3.945-2.798 7.156-6.38 7.156Z",fill:"#23272A"}))),a||(a=o.createElement("defs",null,o.createElement("clipPath",{id:"a"},o.createElement("path",{fill:"#fff",d:"M0 0h71v55H0z"})))))}},23179:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o.apply(this,arguments)}const i=e=>{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),void 0===t?a.createElement("title",{id:n},"Discourse"):t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M12.103 0C18.666 0 24 5.485 24 11.997c0 6.51-5.33 11.99-11.9 11.99L0 24V11.79C0 5.28 5.532 0 12.103 0zm.116 4.563a7.395 7.395 0 0 0-6.337 3.57 7.247 7.247 0 0 0-.148 7.22L4.4 19.61l4.794-1.074a7.424 7.424 0 0 0 8.136-1.39 7.256 7.256 0 0 0 1.737-7.997 7.375 7.375 0 0 0-6.84-4.585h-.008z"})))}},7744:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o.apply(this,arguments)}const i=e=>{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:16,height:16,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M9.334 1.333H4c-.733 0-1.326.6-1.326 1.334l-.007 10.666c0 .734.593 1.334 1.327 1.334H12c.734 0 1.334-.6 1.334-1.334v-8l-4-4ZM4 13.333V2.667h4.667V6H12v7.333H4Z",fill:"#fff"})))}},19818:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o.apply(this,arguments)}const i=e=>{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:20,height:20,viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("circle",{cx:10,cy:10,r:8.333,fill:"#fff"})))}},38981:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o.apply(this,arguments)}const i=e=>{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:14,height:14,viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M7 9.333 4.083 6.417 4.9 5.57l1.517 1.517V2.333h1.166v4.755L9.1 5.57l.817.846L7 9.333Zm-3.5 2.334c-.32 0-.596-.115-.824-.343a1.121 1.121 0 0 1-.343-.824V8.75H3.5v1.75h7V8.75h1.167v1.75c0 .32-.115.596-.343.824a1.121 1.121 0 0 1-.824.343h-7Z",fill:"#fff"})))}},28487:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o.apply(this,arguments)}const i=e=>{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:12,height:12,viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"m2 4 4 4 4-4",stroke:"#909091",strokeWidth:1.4,strokeLinecap:"round",strokeLinejoin:"round"})))}},94177:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o.apply(this,arguments)}const i=e=>{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:16,height:16,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"m12.707 2.393.9.9c.526.52.526 1.367 0 1.887L4.787 14H2v-2.787l6.933-6.94 1.887-1.88c.52-.52 1.367-.52 1.887 0ZM3.333 12.667l.94.04 6.547-6.554-.94-.94-6.547 6.547v.907Z",fill:"#fff"})))}},96867:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o.apply(this,arguments)}const i=e=>{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:16,height:16,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M14.667 2.667H1.34l-.007 10.667h13.334V2.667ZM13.333 12H2.667V5.334L8 8.667l5.333-3.333V12ZM8 7.334 2.667 4h10.666L8 7.334Z",fill:"#fff"})))}},58611:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o.apply(this,arguments)}const i=e=>{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:16,height:16,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M11.192 4H3.428V2.857h9.715v9.715H12V4.808l-8.167 8.168-.809-.808L11.192 4Z",fill:"#fff"})))}},13042:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o.apply(this,arguments)}const i=e=>{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:20,height:20,viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M1.804 16.292a.836.836 0 0 0 .696.374H15a.832.832 0 0 0 .766-.505l2.5-5.833a.833.833 0 0 0-.766-1.162h-.833v-2.5C16.667 5.747 15.919 5 15 5H9.454l-2.13-1.667h-3.99c-.92 0-1.667.748-1.667 1.667v10.833h.006a.834.834 0 0 0 .131.46ZM15 6.666v2.5H5a.832.832 0 0 0-.766.505l-.9 2.103V6.666H15Z",fill:"#000"})))}},96367:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o.apply(this,arguments)}const i=e=>{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:14,height:14,viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M4.667 11.083v-1.75h-1.75V8.166h2.916v2.917H4.667Zm3.5 0V8.166h2.916v1.167h-1.75v1.75H8.167Zm-5.25-5.25V4.666h1.75v-1.75h1.166v2.917H2.917Zm5.25 0V2.916h1.166v1.75h1.75v1.167H8.167Z",fill:"#fff"})))}},6907:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o.apply(this,arguments)}const i=e=>{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:14,height:14,viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M1.75 2.917V5.25h1.167V2.917H5.25V1.75H2.917A1.17 1.17 0 0 0 1.75 2.917ZM2.917 8.75H1.75v2.333a1.17 1.17 0 0 0 1.167 1.167H5.25v-1.167H2.917V8.75Zm8.166 2.333H8.75v1.167h2.333a1.17 1.17 0 0 0 1.167-1.167V8.75h-1.167v2.333Zm0-9.333H8.75v1.167h2.333V5.25h1.167V2.917a1.17 1.17 0 0 0-1.167-1.167Z",fill:"#fff"})))}},59570:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o.apply(this,arguments)}const i=e=>{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:40,height:40,viewBox:"0 0 40 40",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M20 4.4a16 16 0 0 0-16 16c0 7.072 4.592 13.072 10.944 15.2.8.128 1.056-.368 1.056-.8v-2.704c-4.432.96-5.376-2.144-5.376-2.144-.736-1.856-1.776-2.352-1.776-2.352-1.456-.992.112-.96.112-.96 1.6.112 2.448 1.648 2.448 1.648C12.8 30.72 15.152 30 16.064 29.616c.144-1.04.56-1.744 1.008-2.144-3.552-.4-7.28-1.776-7.28-7.872 0-1.776.608-3.2 1.648-4.336-.16-.4-.72-2.064.16-4.224 0 0 1.344-.432 4.4 1.632a15.075 15.075 0 0 1 4-.528c1.36 0 2.736.176 4 .528 3.056-2.064 4.4-1.632 4.4-1.632.88 2.16.32 3.824.16 4.224 1.04 1.136 1.648 2.56 1.648 4.336 0 6.112-3.744 7.456-7.312 7.856.576.496 1.104 1.472 1.104 2.96V34.8c0 .432.256.944 1.072.8C31.424 33.456 36 27.472 36 20.4a16.001 16.001 0 0 0-16-16Z",fill:"#fff"})))}},26890:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>l});var r,a,o=n(67294);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i.apply(this,arguments)}const l=e=>{let{title:t,titleId:n,...l}=e;return o.createElement("svg",i({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512","aria-labelledby":n},l),t?o.createElement("title",{id:n},t):null,r||(r=o.createElement("path",{d:"M256 411.12 0 202.667 256 0zM256 411.12l256-208.453L256 0z"})),a||(a=o.createElement("circle",{cx:256,cy:362.667,r:149.333})))}},42924:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o.apply(this,arguments)}const i=e=>{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:16,height:16,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"m4 13.333.667-2.666H2.333l.334-1.334H5l.667-2.666H3l.333-1.334H6l.667-2.666H8l-.667 2.666H10l.667-2.666H12l-.667 2.666h2.334l-.334 1.334H11l-.667 2.666H13l-.333 1.334H10l-.667 2.666H8l.667-2.666H6l-.667 2.666H4Zm2.333-4H9l.667-2.666H7l-.667 2.666Z",fill:"#fff"})))}},74297:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o.apply(this,arguments)}const i=e=>{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:16,height:16,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M8 14c-1.533 0-2.87-.508-4.009-1.525-1.139-1.017-1.791-2.287-1.958-3.808H3.4c.156 1.155.67 2.11 1.542 2.866.872.756 1.892 1.134 3.058 1.134 1.3 0 2.403-.453 3.309-1.359.905-.906 1.358-2.008 1.358-3.308 0-1.3-.453-2.403-1.359-3.309C10.402 3.786 9.3 3.333 8 3.333a4.5 4.5 0 0 0-2.15.534 4.954 4.954 0 0 0-1.683 1.466H6v1.334H2v-4h1.333v1.566A5.954 5.954 0 0 1 8 2c.833 0 1.614.158 2.342.475a6.107 6.107 0 0 1 1.9 1.283c.539.54.966 1.172 1.283 1.9C13.842 6.386 14 7.166 14 8c0 .833-.158 1.614-.475 2.342a6.108 6.108 0 0 1-1.283 1.9 6.11 6.11 0 0 1-1.9 1.283A5.793 5.793 0 0 1 8 14Zm1.867-3.2L7.333 8.267v-3.6h1.334v3.066L10.8 9.867l-.933.933Z",fill:"#fff"})))}},33336:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o.apply(this,arguments)}const i=e=>{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:16,height:16,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M12.667 2A1.333 1.333 0 0 1 14 3.333v9.334A1.334 1.334 0 0 1 12.667 14H3.333A1.334 1.334 0 0 1 2 12.667V3.333A1.333 1.333 0 0 1 3.333 2h9.334Zm-.334 10.333V8.8a2.173 2.173 0 0 0-2.173-2.173c-.567 0-1.227.346-1.547.866v-.74h-1.86v5.58h1.86V9.047a.93.93 0 1 1 1.86 0v3.286h1.86ZM4.587 5.707a1.12 1.12 0 0 0 1.12-1.12 1.124 1.124 0 1 0-1.12 1.12Zm.926 6.626v-5.58H3.667v5.58h1.846Z",fill:"#fff"})))}},78951:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o.apply(this,arguments)}const i=e=>{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:18,height:18,viewBox:"0 0 18 18",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{stroke:"#fff",d:"M.5 9h17"})))}},84629:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>l});var r,a,o=n(67294);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i.apply(this,arguments)}const l=e=>{let{title:t,titleId:n,...l}=e;return o.createElement("svg",i({width:18,height:18,viewBox:"0 0 18 18",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},l),t?o.createElement("title",{id:n},t):null,r||(r=o.createElement("g",{clipPath:"url(#a)"},o.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M1.79 6.75a4.979 4.979 0 1 1 9.957 0 4.979 4.979 0 0 1-9.957 0ZM6.768.572a6.179 6.179 0 1 0 3.817 11.037l5.146 5.146a1 1 0 0 0 1.414-1.414l-5.207-5.207A6.179 6.179 0 0 0 6.768.571Z",fill:"#000"}))),a||(a=o.createElement("defs",null,o.createElement("clipPath",{id:"a"},o.createElement("path",{fill:"#fff",d:"M0 0h18v18H0z"})))))}},23816:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o.apply(this,arguments)}const i=e=>{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:179,height:178,viewBox:"0 0 179 178",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M104.512 88.178c-10.667.615-17.352-1.87-28.02-1.254a44.732 44.732 0 0 0-7.853 1.146c1.575-19.73 15.538-36.988 34.525-38.085 11.652-.672 23.298 6.522 23.93 18.2.621 11.479-8.131 19.158-22.58 19.992l-.002.001Zm-28.645 40.355c-11.162.631-22.317-6.104-22.923-17.033-.596-10.742 7.79-17.93 21.633-18.71 10.218-.575 16.623 1.751 26.84 1.174a43.776 43.776 0 0 0 7.522-1.073c-1.506 18.464-14.881 34.617-33.072 35.642ZM89.5.001C40.346 0 .5 39.846.5 89c0 49.154 39.846 89 89 89s89-39.847 89-89-39.846-89-89-89",fill:"#000"})))}},35245:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o.apply(this,arguments)}const i=e=>{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:40,height:40,viewBox:"0 0 40 40",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M4.906 17.987c9.395-4.094 15.66-6.792 18.795-8.096 8.95-3.723 10.81-4.37 12.022-4.39.267-.005.863.06 1.249.374.326.264.416.622.459.873.043.25.096.822.053 1.268-.485 5.097-2.583 17.463-3.65 23.171-.453 2.415-1.342 3.225-2.203 3.304-1.872.172-3.293-1.237-5.106-2.425-2.836-1.86-4.439-3.017-7.192-4.831-3.182-2.097-1.12-3.25.694-5.133.475-.493 8.72-7.993 8.88-8.674.02-.085.039-.402-.15-.57-.188-.167-.466-.11-.667-.064-.284.064-4.816 3.06-13.594 8.985-1.286.883-2.451 1.314-3.495 1.29-1.15-.024-3.364-.65-5.01-1.185-2.018-.656-3.622-1.003-3.483-2.117.073-.58.872-1.174 2.398-1.78Z",fill:"#fff"})))}},68902:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o.apply(this,arguments)}const i=e=>{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:24,height:24,xmlns:"http://www.w3.org/2000/svg",xmlSpace:"preserve",style:{fillRule:"evenodd",clipRule:"evenodd",strokeLinejoin:"round",strokeMiterlimit:1.41421},"aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M12 0C5.374 0 0 5.372 0 12c0 6.627 5.374 12 12 12 6.627 0 12-5.373 12-12 0-6.628-5.373-12-12-12Zm3.224 17.871c.188.133.43.166.646.085a.678.678 0 0 0 .422-.491c.507-2.382 1.737-8.412 2.198-10.578a.457.457 0 0 0-.151-.443.47.47 0 0 0-.465-.082c-2.446.906-9.979 3.732-13.058 4.871a.484.484 0 0 0-.316.467.483.483 0 0 0 .346.445c1.381.413 3.193.988 3.193.988s.847 2.558 1.288 3.858a.512.512 0 0 0 .352.336.505.505 0 0 0 .474-.121l1.805-1.704s2.084 1.527 3.266 2.369Zm-6.423-5.062.98 3.231.218-2.046 5.941-5.358a.162.162 0 0 0 .019-.22.165.165 0 0 0-.219-.037l-6.939 4.43Z"})))}},86089:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o.apply(this,arguments)}const i=e=>{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:17,height:14,viewBox:"0 0 17 14",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M16.557 1.597a6.802 6.802 0 0 1-1.95.534A3.406 3.406 0 0 0 16.1.251a6.782 6.782 0 0 1-2.157.824 3.398 3.398 0 0 0-5.788 3.1A9.647 9.647 0 0 1 1.153.624a3.395 3.395 0 0 0-.059 3.31c.264.494.645.915 1.11 1.225a3.389 3.389 0 0 1-1.538-.425v.044a3.398 3.398 0 0 0 2.725 3.33c-.5.136-1.025.156-1.534.06a3.399 3.399 0 0 0 3.173 2.357A6.817 6.817 0 0 1 0 11.934a9.607 9.607 0 0 0 5.207 1.526c6.249 0 9.665-5.176 9.665-9.665 0-.146-.004-.293-.01-.439A6.905 6.905 0 0 0 16.556 1.6l.001-.002Z",fill:"#000"})))}},92358:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o.apply(this,arguments)}const i=e=>{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:40,height:40,viewBox:"0 0 40 40",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M22.62 19.134 32.63 7.5h-2.373l-8.69 10.102L14.627 7.5H6.62l10.496 15.275-10.496 12.2h2.372l9.177-10.668 7.33 10.668h8.005L22.62 19.134Zm-3.248 3.776-1.063-1.521L9.847 9.285h3.643l6.829 9.768 1.063 1.521 8.877 12.697h-3.643l-7.244-10.36v-.001Z",fill:"#fff"})))}},4074:(e,t,n)=>{"use strict";n.r(t),n.d(t,{HOSTNAMES:()=>o,SCRIPT_URL:()=>a,SITE_ID:()=>r});const r="FUTMI",a="https://fathom.status.im/tracker.js",o=[]},723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(67294),a=n(87462),o=n(68356),i=n.n(o),l=n(16887);const s={"0444839e":[()=>n.e(175).then(n.bind(n,62093)),"@site/docs/guides/js-waku/manage-filter.md",62093],"0f1b9a4a":[()=>n.e(5158).then(n.bind(n,36280)),"@site/docs/guides/js-waku/run-waku-nodejs.md",36280],"1067bd84":[()=>Promise.all([n.e(532),n.e(4881),n.e(5447)]).then(n.bind(n,45173)),"@site/docs/learn/faq.md",45173],"1236ce69":[()=>n.e(3235).then(n.bind(n,64180)),"@site/docs/research/research-and-studies/rln-key-benchmarks.md",64180],17896441:[()=>Promise.all([n.e(532),n.e(7918)]).then(n.bind(n,18652)),"@theme/DocItem",18652],"1be78505":[()=>Promise.all([n.e(532),n.e(9514)]).then(n.bind(n,93717)),"@theme/DocPage",93717],"1f1f54c7":[()=>n.e(2285).then(n.bind(n,55345)),"@site/docs/guides/js-waku/store-retrieve-messages.md",55345],20987266:[()=>Promise.all([n.e(532),n.e(4881),n.e(7442)]).then(n.bind(n,26820)),"@site/docs/guides/nwaku/faq.md",26820],"2f51beae":[()=>n.e(231).then(n.bind(n,59043)),"@site/docs/learn/concepts/discv5.md",59043],"3b0eafbc":[()=>n.e(6167).then(n.t.bind(n,83769,19)),"/home/jenkins/workspace/website/dev-docs.waku.org/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",83769],"3b240eda":[()=>Promise.all([n.e(532),n.e(3178)]).then(n.bind(n,68458)),"@site/docs/guides/js-waku/use-waku-react.md",68458],"3fbcf129":[()=>n.e(8173).then(n.bind(n,71899)),"@site/docs/research/research-and-studies/message-propagation.md",71899],"406e0176":[()=>Promise.all([n.e(532),n.e(3855)]).then(n.bind(n,89472)),"@site/docs/guides/nwaku/run-node.md",89472],"41a4e09e":[()=>n.e(9169).then(n.bind(n,68518)),"@site/docs/learn/waku-vs-libp2p.md",68518],"488ca57d":[()=>Promise.all([n.e(532),n.e(6839)]).then(n.bind(n,76201)),"@site/docs/guides/js-waku/index.md",76201],"4aba8864":[()=>n.e(357).then(n.bind(n,19034)),"@site/docs/learn/glossary.md",19034],"4bb5c570":[()=>n.e(161).then(n.bind(n,46771)),"@site/docs/guides/js-waku/configure-discovery.md",46771],"4e726341":[()=>n.e(2588).then(n.bind(n,82493)),"@site/docs/research/research-and-studies/incentivisation.md",82493],"500a151f":[()=>n.e(4545).then(n.bind(n,41725)),"@site/docs/terms.md",41725],"5277fe18":[()=>Promise.all([n.e(532),n.e(1374)]).then(n.bind(n,48153)),"@site/docs/guides/js-waku/use-waku-create-app.md",48153],"606377f0":[()=>n.e(5832).then(n.bind(n,89955)),"@site/docs/learn/security-features.md",89955],60832973:[()=>n.e(7304).then(n.bind(n,40259)),"@site/docs/guides/nwaku/configure-nwaku.md",40259],"6778e957":[()=>n.e(3292).then(n.bind(n,82844)),"@site/docs/learn/concepts/peer-discovery.md",82844],"6c6e315a":[()=>n.e(8319).then(n.bind(n,40029)),"@site/docs/learn/research.md",40029],"6e8bfb6f":[()=>n.e(6512).then(n.bind(n,16783)),"@site/docs/guides/nwaku/run-docker.md",16783],"7c28fd94":[()=>n.e(906).then(n.bind(n,17217)),"@site/docs/guides/nwaku/run-docker-compose.md",17217],"80a3009a":[()=>n.e(3116).then(n.bind(n,67868)),"@site/docs/learn/concepts/peer-exchange.md",67868],"80ec2a43":[()=>n.e(3634).then(n.bind(n,69399)),"@site/docs/guides/nwaku/config-methods.md",69399],"8a655033":[()=>n.e(1385).then(n.bind(n,45948)),"@site/docs/guides/nwaku/configure-discovery.md",45948],"8c5da4da":[()=>n.e(1923).then(n.bind(n,88006)),"@site/docs/privacy-policy.md",88006],"8eff6037":[()=>n.e(5844).then(n.bind(n,64985)),"@site/docs/guides/nwaku/config-options.md",64985],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],"97983a7b":[()=>n.e(1937).then(n.bind(n,56055)),"@site/docs/research/research-and-studies/capped-bandwidth.md",56055],a44b8792:[()=>n.e(5787).then(n.bind(n,33447)),"@site/docs/learn/concepts/dns-discovery.md",33447],a494bfbc:[()=>Promise.all([n.e(532),n.e(4881),n.e(2675)]).then(n.bind(n,43815)),"@site/docs/guides/js-waku/faq.md",43815],b54b2767:[()=>n.e(727).then(n.bind(n,12381)),"@site/docs/learn/concepts/network-domains.md",12381],b99d0044:[()=>n.e(1201).then(n.bind(n,34765)),"@site/docs/learn/waku-network.md",34765],c57f3997:[()=>n.e(7683).then(n.bind(n,56804)),"@site/docs/guides/js-waku/light-send-receive.md",56804],c764ec94:[()=>n.e(3076).then(n.bind(n,73979)),"@site/docs/learn/concepts/content-topics.md",73979],c9ea0dcf:[()=>n.e(2941).then(n.bind(n,22103)),"@site/docs/guides/getting-started.md",22103],d53fc737:[()=>n.e(6471).then(n.bind(n,57704)),"@site/docs/rules-of-engagement.md",57704],df0a719b:[()=>n.e(6059).then(n.bind(n,61131)),"@site/docs/research/research-and-studies/maximum-bandwidth.md",61131],df28445d:[()=>Promise.all([n.e(532),n.e(2355)]).then(n.bind(n,30282)),"@site/docs/guides/js-waku/message-encryption.md",30282],e168415d:[()=>n.e(5306).then(n.bind(n,96608)),"@site/docs/research/benchmarks/postgres-adoption.md",96608],e610d71e:[()=>n.e(617).then(n.bind(n,92247)),"@site/docs/guides/js-waku/debug-waku-dapp.md",92247],e63bb37c:[()=>n.e(6321).then(n.bind(n,77362)),"@site/docs/learn/concepts/static-peers.md",77362],ef85d46a:[()=>n.e(6618).then(n.bind(n,63351)),"@site/docs/learn/concepts/transports.md",63351],f2470003:[()=>Promise.all([n.e(532),n.e(2811)]).then(n.bind(n,43733)),"@site/docs/guides/nwaku/build-source.md",43733],f7974e9c:[()=>n.e(5838).then(n.bind(n,34602)),"@site/docs/research/index.md",34602],fb5ea66b:[()=>n.e(5740).then(n.bind(n,898)),"@site/docs/learn/concepts/protocols.md",898]};function u(e){let{error:t,retry:n,pastDelay:a}=e;return t?r.createElement("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%"}},r.createElement("p",null,String(t)),r.createElement("div",null,r.createElement("button",{type:"button",onClick:n},"Retry"))):a?r.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"}},r.createElement("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"},r.createElement("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2"},r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"8"},r.createElement("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"}))))):null}var c=n(99670),d=n(30226);function f(e,t){if("*"===e)return i()({loading:u,loader:()=>Promise.all([n.e(532),n.e(2568)]).then(n.bind(n,92568)),modules:["@theme/NotFound"],webpack:()=>[92568],render(e,t){const n=e.default;return r.createElement(d.z,{value:{plugin:{name:"native",id:"default"}}},r.createElement(n,t))}});const o=l[`${e}-${t}`],f={},p=[],h=[],m=(0,c.Z)(o);return Object.entries(m).forEach((e=>{let[t,n]=e;const r=s[n];r&&(f[t]=r[0],p.push(r[1]),h.push(r[2]))})),i().Map({loading:u,loader:f,modules:p,webpack:()=>h,render(t,n){const i=JSON.parse(JSON.stringify(o));Object.entries(t).forEach((t=>{let[n,r]=t;const a=r.default;if(!a)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof a&&"function"!=typeof a||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{a[e]=r[e]}));let o=i;const l=n.split(".");l.slice(0,-1).forEach((e=>{o=o[e]})),o[l[l.length-1]]=a}));const l=i.__comp;delete i.__comp;const s=i.__context;return delete i.__context,r.createElement(d.z,{value:s},r.createElement(l,(0,a.Z)({},i,n)))}})}const p=[{path:"/",component:f("/","e04"),routes:[{path:"/",component:f("/","0f1"),exact:!0,sidebar:"guides"},{path:"/guides/js-waku/",component:f("/guides/js-waku/","9af"),exact:!0,sidebar:"guides"},{path:"/guides/js-waku/configure-discovery",component:f("/guides/js-waku/configure-discovery","dfe"),exact:!0,sidebar:"guides"},{path:"/guides/js-waku/debug-waku-dapp",component:f("/guides/js-waku/debug-waku-dapp","c0d"),exact:!0,sidebar:"guides"},{path:"/guides/js-waku/faq",component:f("/guides/js-waku/faq","1ad"),exact:!0,sidebar:"guides"},{path:"/guides/js-waku/light-send-receive",component:f("/guides/js-waku/light-send-receive","77b"),exact:!0,sidebar:"guides"},{path:"/guides/js-waku/manage-filter",component:f("/guides/js-waku/manage-filter","d72"),exact:!0,sidebar:"guides"},{path:"/guides/js-waku/message-encryption",component:f("/guides/js-waku/message-encryption","d96"),exact:!0,sidebar:"guides"},{path:"/guides/js-waku/run-waku-nodejs",component:f("/guides/js-waku/run-waku-nodejs","30f"),exact:!0,sidebar:"guides"},{path:"/guides/js-waku/store-retrieve-messages",component:f("/guides/js-waku/store-retrieve-messages","1c5"),exact:!0,sidebar:"guides"},{path:"/guides/js-waku/use-waku-create-app",component:f("/guides/js-waku/use-waku-create-app","76f"),exact:!0,sidebar:"guides"},{path:"/guides/js-waku/use-waku-react",component:f("/guides/js-waku/use-waku-react","ed9"),exact:!0,sidebar:"guides"},{path:"/guides/nwaku/build-source",component:f("/guides/nwaku/build-source","995"),exact:!0,sidebar:"guides"},{path:"/guides/nwaku/config-methods",component:f("/guides/nwaku/config-methods","c44"),exact:!0,sidebar:"guides"},{path:"/guides/nwaku/config-options",component:f("/guides/nwaku/config-options","def"),exact:!0,sidebar:"guides"},{path:"/guides/nwaku/configure-discovery",component:f("/guides/nwaku/configure-discovery","a6b"),exact:!0,sidebar:"guides"},{path:"/guides/nwaku/configure-nwaku",component:f("/guides/nwaku/configure-nwaku","a95"),exact:!0,sidebar:"guides"},{path:"/guides/nwaku/faq",component:f("/guides/nwaku/faq","ad1"),exact:!0,sidebar:"guides"},{path:"/guides/nwaku/run-docker",component:f("/guides/nwaku/run-docker","d03"),exact:!0,sidebar:"guides"},{path:"/guides/nwaku/run-docker-compose",component:f("/guides/nwaku/run-docker-compose","ca4"),exact:!0,sidebar:"guides"},{path:"/guides/nwaku/run-node",component:f("/guides/nwaku/run-node","9f1"),exact:!0,sidebar:"guides"},{path:"/learn/concepts/content-topics",component:f("/learn/concepts/content-topics","45b"),exact:!0,sidebar:"learn"},{path:"/learn/concepts/discv5",component:f("/learn/concepts/discv5","01f"),exact:!0,sidebar:"learn"},{path:"/learn/concepts/dns-discovery",component:f("/learn/concepts/dns-discovery","c5b"),exact:!0,sidebar:"learn"},{path:"/learn/concepts/network-domains",component:f("/learn/concepts/network-domains","5d8"),exact:!0,sidebar:"learn"},{path:"/learn/concepts/peer-discovery",component:f("/learn/concepts/peer-discovery","913"),exact:!0,sidebar:"learn"},{path:"/learn/concepts/peer-exchange",component:f("/learn/concepts/peer-exchange","e58"),exact:!0,sidebar:"learn"},{path:"/learn/concepts/protocols",component:f("/learn/concepts/protocols","13a"),exact:!0,sidebar:"learn"},{path:"/learn/concepts/static-peers",component:f("/learn/concepts/static-peers","9c6"),exact:!0,sidebar:"learn"},{path:"/learn/concepts/transports",component:f("/learn/concepts/transports","6fb"),exact:!0,sidebar:"learn"},{path:"/learn/faq",component:f("/learn/faq","74d"),exact:!0,sidebar:"learn"},{path:"/learn/glossary",component:f("/learn/glossary","cf5"),exact:!0,sidebar:"learn"},{path:"/learn/research",component:f("/learn/research","13c"),exact:!0,sidebar:"learn"},{path:"/learn/security-features",component:f("/learn/security-features","72b"),exact:!0,sidebar:"learn"},{path:"/learn/waku-network",component:f("/learn/waku-network","f0c"),exact:!0,sidebar:"learn"},{path:"/learn/waku-vs-libp2p",component:f("/learn/waku-vs-libp2p","c45"),exact:!0,sidebar:"learn"},{path:"/privacy-policy",component:f("/privacy-policy","4cd"),exact:!0},{path:"/research/",component:f("/research/","e8b"),exact:!0,sidebar:"research"},{path:"/research/benchmarks/postgres-adoption",component:f("/research/benchmarks/postgres-adoption","563"),exact:!0,sidebar:"research"},{path:"/research/research-and-studies/capped-bandwidth",component:f("/research/research-and-studies/capped-bandwidth","ee6"),exact:!0,sidebar:"research"},{path:"/research/research-and-studies/incentivisation",component:f("/research/research-and-studies/incentivisation","d49"),exact:!0,sidebar:"research"},{path:"/research/research-and-studies/maximum-bandwidth",component:f("/research/research-and-studies/maximum-bandwidth","80a"),exact:!0,sidebar:"research"},{path:"/research/research-and-studies/message-propagation",component:f("/research/research-and-studies/message-propagation","46a"),exact:!0,sidebar:"research"},{path:"/research/research-and-studies/rln-key-benchmarks",component:f("/research/research-and-studies/rln-key-benchmarks","5d8"),exact:!0,sidebar:"research"},{path:"/rules-of-engagement",component:f("/rules-of-engagement","0fc"),exact:!0},{path:"/terms",component:f("/terms","37d"),exact:!0}]},{path:"*",component:f("*")}]},26724:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.onRouteDidUpdate=void 0;const r=n(70655),a=n(4074);r.__importDefault(n(10412)).default.canUseDOM&&(()=>{if(a.HOSTNAMES.length>0?!a.HOSTNAMES.includes(window.location.hostname):"localhost"===window.location.hostname)return;!function(e,t,n,r){t[r]=t[r]||function(){(t[r].q=t[r].q||[]).push(arguments)};const a=e.createElement("script"),o=e.getElementsByTagName("script")[0];a.async=1,a.src=n,a.id="fathom-script",o.parentNode.insertBefore(a,o)}(document,window,a.SCRIPT_URL,"fathom");const{fathom:e}=window;e("set","siteId",a.SITE_ID),e("trackPageview")})();t.onRouteDidUpdate=e=>{let{location:t,previousLocation:n}=e;window.fathom&&t.pathname!==n?.pathname&&window.fathom("trackPageview")}},85711:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createPromise=t.ResultType=void 0;const r=n(70655),a=n(90022),o=n(91073),i=n(67133),l=n(98202),s=r.__importStar(n(61029)),u=e=>{let{versionUrl:t,searchContextByPaths:n}=e,r=window.location.pathname;if(r=r.endsWith("/")?r:r+"/",!Array.isArray(n)||!r.startsWith(t))return"";const a=r.substring(t.length);return n.find((e=>a===e||a.startsWith(`${e}/`)))??""};class c{constructor(e){this.config=e,this.loading=!1,this.source=null,this.init=async()=>{this.loading=!0;const{wrappedIndexes:e,zhDictionary:t}=await(async e=>{const{wrappedIndexes:t,zhDictionary:n}=await(0,a.fetchIndexes)(e.versionUrl,e.searchContext);return{wrappedIndexes:t,zhDictionary:n}})({versionUrl:this.baseUrl,searchContext:u({versionUrl:this.baseUrl,searchContextByPaths:this.searchContextByPaths})});this.source=(0,l.SearchSourceFactory)(e,t,this.config.resultsLimit)},this.query=async e=>{if(!this.source)throw new Error("Not initialized");const{promise:n,callback:r}=(0,t.createPromise)();return this.source&&this.source(e,r),{results:(await n).map((e=>this.formatResult(e)))}},this.formatResult=e=>({...e,type:this.resultTypeToString(e.type),page:e.page?this.formatDocument(e.page):null,document:e.document?this.formatDocument(e.document):null,highlighted:(0,i.highlightStemmed)(e.document.t,(0,o.getStemmedPositions)(e.metadata,"t"),e.tokens)}),this.resultTypeToString=e=>({0:d.Title,1:d.Heading,2:d.Paragraph}[e]),this.formatDocument=e=>({id:e.i,title:e.t,url:e.u,hash:e.h,parentId:e.p,breadcrumb:e.b,sectionTitle:e.s}),this.baseUrl=e.preferredVersionPath,this.searchContextByPaths=e.searchContextByPaths??""}}var d;!function(e){e.Title="title",e.Heading="heading",e.Paragraph="paragraph"}(d=t.ResultType||(t.ResultType={}));t.createPromise=()=>{let e,t;const n=new Promise(((n,r)=>{e=n,t=r}));return{reject:t,resolve:e,promise:n,callback:(n,r)=>{r?t(r):e(n)}}};(async()=>{if("undefined"==typeof window)return;const e=window;e.getProxiedGeneratedData=()=>s,e.createSearchInstance=async e=>new c(e)})()},55061:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.IconEmail=t.IconRemove=t.IconAdd=t.IconDownload=t.IconAvatar=t.IconX=t.IconTelegramWhite=t.IconDiscordWhite=t.IconExternalLink=t.IconFullscreenExit=t.IconFullscreen=t.IconEdit=t.IconClose=t.IconHistory=t.IconCopy=t.IconGScholar=t.IconDropdown=t.IconSearch=t.IconFolderFilled=t.IconDot=t.IconLinkedin=t.IconDiscourse=t.IconTelegram=t.IconTwitter=t.IconStatus=t.IconDiscord=t.IconGithub=t.IconFolder=t.IconArrowLeft=t.IconArrowRight=t.IconArrowLeftCircle=t.IconArrowRightCircle=t.Icon=void 0;const r=n(70655),a=n(86010),o=r.__importDefault(n(67294)),i=r.__importDefault(n(27861)),l=r.__importDefault(n(19044)),s=r.__importDefault(n(80255)),u=r.__importDefault(n(67146)),c=r.__importDefault(n(68425)),d=r.__importDefault(n(88121)),f=r.__importDefault(n(62082)),p=r.__importDefault(n(80469)),h=r.__importDefault(n(94793)),m=r.__importDefault(n(14607)),g=r.__importDefault(n(50437)),v=r.__importDefault(n(23179)),b=r.__importDefault(n(19818)),y=r.__importDefault(n(38981)),w=r.__importDefault(n(28487)),x=r.__importDefault(n(94177)),k=r.__importDefault(n(58611)),_=r.__importDefault(n(13042)),E=r.__importDefault(n(96367)),S=r.__importDefault(n(6907)),C=r.__importDefault(n(59570)),T=r.__importDefault(n(26890)),O=r.__importDefault(n(74297)),D=r.__importDefault(n(33336)),P=r.__importDefault(n(78951)),N=r.__importDefault(n(84629)),I=r.__importDefault(n(23816)),A=r.__importDefault(n(35245)),L=r.__importDefault(n(68902)),R=r.__importDefault(n(86089)),j=r.__importDefault(n(92358)),M=r.__importDefault(n(96867));t.Icon=e=>{const{children:t,size:n="m"}=e;return o.default.createElement("div",{className:(0,a.clsx)(i.default.icon,i.default[n],e.stroke&&i.default.stroke,e.fill&&i.default.fill,e.className&&e.className)},t)};t.IconArrowRightCircle=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(c.default,null));t.IconArrowLeftCircle=e=>o.default.createElement(t.Icon,null,o.default.createElement(s.default,null));t.IconArrowRight=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(d.default,null));t.IconArrowLeft=e=>o.default.createElement(t.Icon,null,o.default.createElement(u.default,null));t.IconFolder=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(_.default,null));t.IconGithub=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(C.default,null));t.IconDiscord=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(g.default,null));t.IconStatus=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(I.default,null));t.IconTwitter=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(R.default,null));t.IconTelegram=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(L.default,null));t.IconDiscourse=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(v.default,null));t.IconLinkedin=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(D.default,null));t.IconDot=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(b.default,null));t.IconFolderFilled=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(_.default,null));t.IconSearch=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(N.default,null));t.IconDropdown=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(w.default,null));t.IconGScholar=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(T.default,null));t.IconCopy=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(h.default,null));t.IconHistory=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(O.default,null));t.IconClose=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(p.default,null));t.IconEdit=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(x.default,null));t.IconFullscreen=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(S.default,null));t.IconFullscreenExit=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(E.default,null));t.IconExternalLink=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(k.default,null));t.IconDiscordWhite=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(m.default,null));t.IconTelegramWhite=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(A.default,null));t.IconX=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(j.default,null));t.IconAvatar=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(f.default,null));t.IconDownload=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(y.default,null));t.IconAdd=e=>o.default.createElement(t.Icon,{...e,stroke:!0},o.default.createElement(l.default,null));t.IconRemove=e=>o.default.createElement(t.Icon,{...e,stroke:!0},o.default.createElement(P.default,null));t.IconEmail=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(M.default,null))},78870:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});n(70655).__exportStar(n(55061),t)},40466:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Modal=void 0;const r=n(70655),a=r.__importDefault(n(86010)),o=r.__importDefault(n(67294)),i=n(89164),l=n(96507),s=n(38954);n(22473);t.Modal=e=>{let{open:t=!1,onClose:n,keepMounted:r=!1,className:u,children:c,...d}=e;const f=(0,l.useHydrated)(),p=()=>{n&&n()};return(0,i.useKeyPressEvent)((e=>"Escape"===e.code),(e=>{p()})),f&&(t||r)?o.default.createElement(s.Portal,{containerId:"lsd-presentation",id:d.id},o.default.createElement("div",{className:(0,a.default)(u,"l-modal",t&&"l-modal--open"),...d},o.default.createElement("div",{className:"l-modal__container"},o.default.createElement("div",{className:"l-modal__content"},c),o.default.createElement("div",{className:"l-modal__backdrop",onClick:p})))):o.default.createElement(o.default.Fragment,null)}},38954:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Portal=void 0;const r=n(70655).__importDefault(n(67294)),a=n(73935),o=n(40653);t.Portal=e=>{let{children:t,containerId:n,id:i}=e;if("undefined"==typeof window)return r.default.createElement(r.default.Fragment,null);const l=(0,o.usePortal)({parentId:n});return(0,a.createPortal)(t,l,i)}},40653:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.usePortal=void 0;const r=n(67294),a=n(89321);t.usePortal=e=>{let{parentId:t}=e;const n=(0,r.useRef)();return n.current||(n.current=document.createElement("div")),(0,r.useEffect)((()=>{if(n.current)return document.getElementById(t)?.appendChild(n.current),()=>{const e=n.current;e&&(0,a.settleSync)((()=>document.getElementById(t)?.removeChild(e)))}}),[t,n.current]),n.current}},19843:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LightBoxWrapper=t.useLightBox=t.LightBoxContext=t.LightBoxProvider=void 0;const r=n(70655),a=n(31665),o=r.__importDefault(n(29785)),i=r.__importDefault(n(86010)),l=r.__importStar(n(67294)),s=r.__importStar(n(33199)),u=n(89164),c=n(55061),d=n(38954),f=n(96507),p=n(53708),h=r.__importDefault(n(10153));t.LightBoxProvider=e=>{let{children:n}=e;const r=(0,f.useHydrated)(),s=(0,u.useWindowScroll)(),[m,g]=(0,l.useState)(null),[v,b]=(0,l.useState)({opacity:"0.5"}),y=(0,p.useIsMobile)(),w=(0,l.useMemo)((()=>({opacity:1,transform:"scale(1) translate(0px, 0px)",transition:"0.3s"})),[m]),x=e=>{g(e);const t=document.body.clientWidth,n=window.innerHeight,r=window.innerWidth>768?.9375*t:t-32,a=n-128,o=e.getBoundingClientRect(),i=Math.min(a/o.height,r/o.width),l=[o.left+o.width/2,o.top+o.height/2],s=[t/2,n/2].map(((e,t)=>(e-l[t])/i));b({zIndex:202,transform:`scale(${i}) translate(${s[0]}px, ${s[1]}px)`,position:"relative"})},k=()=>{g(null)};return(0,l.useEffect)((()=>{m&&window.innerWidth>768&&k()}),[s]),(0,l.useEffect)((()=>{if(y&&m){document.querySelector("html").style.overflow="hidden"}else{document.querySelector("html").style.overflow="initial"}}),[y,m]),l.default.createElement(t.LightBoxContext.Provider,{value:{active:m,style:w,activeStyle:v,display:x,close:k,toggle:e=>{const t=m;k(),t!==e&&x(e)}}},n,r&&l.default.createElement(d.Portal,{containerId:"lsd-presentation"},l.default.createElement(l.default.Fragment,null,l.default.createElement("div",{className:(0,i.default)(h.default.backdrop,m&&h.default.visible)}),l.default.createElement("div",{className:(0,i.default)(h.default.navWrapper,m&&h.default.visible)},l.default.createElement("nav",{className:(0,i.default)(h.default.nav,"navbar",m&&h.default.visible)},l.default.createElement(o.default,null),l.default.createElement(a.IconButton,{size:"medium",onClick:k},l.default.createElement(c.IconFullscreenExit,null)))))))},t.LightBoxContext=l.default.createContext({style:{},activeStyle:{},active:null,close:null,toggle:null,display:null});t.useLightBox=()=>{const e=(0,l.useContext)(t.LightBoxContext);return{getStyle:t=>({...e.style,...t===e.active?e.activeStyle:{}}),style:e.style,activeStyle:e.activeStyle,active:e.active,isActive:!!e.active,close:e.close,toggle:e.toggle,display:e.display,isActiveElement:t=>e.active===t}};t.LightBoxWrapper=e=>{let{children:n}=e;const r=(0,l.useRef)(null),o=(0,l.useRef)(null),{getStyle:u,display:d,isActiveElement:f}=(0,t.useLightBox)(),m=(0,p.useIsMobile)(),g=(0,l.useCallback)((e=>{let{x:t,y:n,scale:r}=e;const{current:a}=o;if(a){const e=(0,s.make3dTransformValue)({x:t,y:n,scale:r});a.style.setProperty("transform",e)}}),[]),v=m&&r.current&&f(r.current)?l.default.createElement(s.default,{onUpdate:g,doubleTapZoomOutOnMaxScale:!0,maxZoom:3},l.default.createElement("div",{ref:o},n)):l.default.createElement(l.default.Fragment,null,n,l.default.createElement(a.IconButton,{className:h.default.fullscreenButton,size:"medium",onClick:()=>r.current&&d(r.current)},l.default.createElement(c.IconFullscreen,null)));return l.default.createElement(l.default.Fragment,null,l.default.createElement("div",{className:(0,i.default)(h.default.wrapper,f(r.current)&&h.default.active),ref:r,style:r.current?u(r.current):{}},v))}},78991:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ThemeProvider=void 0;const r=n(70655),a=n(31665),o=n(70917),i=r.__importDefault(n(67294)),l=n(92198);t.ThemeProvider=e=>{let{children:t}=e;const n=(0,l.useTheme)();return i.default.createElement(a.ThemeProvider,{theme:n.current,injectCssVars:!1},i.default.createElement(o.Global,{styles:n.cssVars}),t)}},27967:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});n(70655).__exportStar(n(78991),t)},89321:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.settleSync=t.settle=void 0;t.settle=async e=>{try{return["function"==typeof e?await e():await e,void 0]}catch(t){return[void 0,t]}};t.settleSync=e=>{try{return[e(),void 0]}catch(t){return[void 0,t]}}},28097:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ensureTrailingSlash=t.ensureTrailingString=void 0;t.ensureTrailingString=(e,t)=>e.endsWith(t)?e:e+t;t.ensureTrailingSlash=e=>(0,t.ensureTrailingString)(e,"/")},92198:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useTheme=void 0;const r=n(31665),a=n(82818),o=n(70917),i=n(67294),l=n(54400);t.useTheme=()=>{const e=(0,a.useColorMode)(),{typography:t}=(0,l.useThemeOptions)(),n=t?.genericFontFamily??"sans-serif",s=r.defaultThemes,u=(0,i.useMemo)((()=>{const e={breakpoints:{},palette:{},typography:{},typographyGlobal:{genericFontFamily:n},spacing:[]};return{light:(0,r.createTheme)(e,s.light),dark:(0,r.createTheme)(e,s.dark)}}),[s,n]);return{dark:u.dark,light:u.light,current:u[e.colorMode],colorMode:e.colorMode,cssVars:(c=u.light,d=u.dark,f=u.light,(0,i.useMemo)((()=>o.css` - html:not([data-theme]) { - ${f.cssVars} - } - - html[data-theme='light'] { - ${c.cssVars} - } - - html[data-theme='dark'] { - ${d.cssVars} - } - `),[d,c]))};var c,d,f}},55873:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useEventListener=void 0;const r=n(67294);t.useEventListener=(e,t,n,a,o)=>{const i=(0,r.useMemo)((()=>"string"==typeof e?e:e()),[]),l=(0,r.useMemo)((()=>"function"==typeof t?t():t),[t]);(0,r.useEffect)((()=>{if(l?.addEventListener&&l?.removeEventListener)return l.addEventListener(i,n,a),()=>{l.removeEventListener(i,n,a)}}),[i,l])}},96507:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useHydrated=void 0;const r=n(67294);t.useHydrated=()=>{const[e,t]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{t(!0)}),[]),e}},53708:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useIsMobile=void 0;const r=n(89164);t.useIsMobile=()=>(0,r.useMedia)("(max-width: 1199px)")},81803:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.usePersistedHistory=void 0;const r=n(89164);t.usePersistedHistory=(e,t)=>{const n=t?.unique??!1,a=t?.equals??((e,t)=>e===t),o=t?.maxItems??null,[i,l]=(0,r.useLocalStorage)("logos-docusaurus-theme-"+e,[]),s=e=>{l((i??[]).filter(((t,n)=>!e(t,n))))};return{add:e=>{const t=i??[],r=[e,...n?t.filter((t=>!a(t,e))):t];l(o?r.slice(0,o):r)},clear:()=>{l([])},remove:s,removeByIndex:e=>{s(((t,n)=>n===e))},list:i}}},54400:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useDocThemeOptions=t.useThemeOptions=void 0;const r=n(70655),a=n(80143),o=r.__importDefault(n(52263));t.useThemeOptions=()=>{const{siteConfig:{customFields:e={}}}=(0,o.default)();return e["logos-docusaurus-theme"]??{}};t.useDocThemeOptions=()=>{const e=(0,a.useActivePlugin)(),n=(0,t.useThemeOptions)();return e?n?.docs?.[e?.pluginId]??{}:{}}},521:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useWindowEventListener=void 0;const r=n(55873);t.useWindowEventListener=function(e,t,n,a){void 0===a&&(a=[]),(0,r.useEventListener)(e,(()=>"undefined"!=typeof window&&window),t,n,a)}},66354:(e,t,n)=>{"use strict";const r=n(70655),a=n(31665),o=n(95999),i=r.__importDefault(n(72389)),l=r.__importDefault(n(55211)),s=r.__importDefault(n(67080)),u=r.__importDefault(n(86010)),c=r.__importDefault(n(67294)),d=r.__importDefault(n(8633));t.Z=c.default.memo((function(e){let{className:t,buttonClassName:n,value:r,onChange:f}=e;const p=(0,i.default)(),h=(0,o.translate)({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,o.translate)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,o.translate)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return c.default.createElement(a.IconButton,{className:(0,u.default)("clean-btn",d.default.toggle,t,!p&&d.default.toggleButtonDisabled,n),type:"button",onClick:()=>f("dark"===r?"light":"dark"),disabled:!p,title:h,"aria-label":h,"aria-live":"polite"},c.default.createElement(s.default,{className:(0,u.default)(d.default.toggleIcon,d.default.lightToggleIcon)}),c.default.createElement(l.default,{className:(0,u.default)(d.default.toggleIcon,d.default.darkToggleIcon)}))}))},52601:(e,t,n)=>{"use strict";const r=n(70655),a=n(31665),o=r.__importDefault(n(86010)),i=r.__importDefault(n(67294)),l=r.__importDefault(n(79762));t.Z=function(e){let{style:t,links:n,logo:r,copyright:s}=e;const[u,c]=(e=>{const t=[],n=[];for(const r of e)"title"in r&&"string"==typeof r.title&&r.title.startsWith("shared:")?n.push({...r,title:r.title.slice(7)}):t.push(r);return[t,n]})(n.props.links);return i.default.createElement("footer",{className:(0,o.default)("footer",{"footer--dark":"dark"===t})},i.default.createElement("div",{className:(0,o.default)("container","container-fluid",l.default.firstRow)},(r||s)&&i.default.createElement(i.default.Fragment,null,i.default.createElement("div",{className:"footer__bottom text--center"},r&&i.default.createElement("div",{className:"margin-bottom--sm"},r),s)),i.default.cloneElement(n,{links:u})),i.default.createElement("div",{className:(0,o.default)(l.default.secondRow)},i.default.createElement("span",{className:(0,o.default)("footer__bottom text--center")},"Built by"," ",i.default.createElement("a",{href:"https://free.technology/",target:"_blank",className:(0,o.default)(l.default.footerLink)},"IFT")),i.default.cloneElement(n,{links:c})),i.default.createElement(a.Button,{className:l.default.backToTop,size:"small",onClick:()=>{window.scrollTo({top:0,behavior:"smooth"})}},"Back to top \u2191"))}},90988:(e,t,n)=>{"use strict";const r=n(70655).__importDefault(n(67294)),a=n(82818),o=n(91338),i=(0,a.composeProviders)([o.AnnouncementBarProvider,o.ScrollControllerProvider,o.DocsPreferredVersionContextProvider,o.PluginHtmlClassNameProvider,o.NavbarProvider]);t.Z=function(e){let{children:t}=e;return r.default.createElement(i,null,t)}},16853:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(70655),a=r.__importDefault(n(67294)),o=r.__importDefault(n(39960)),i=r.__importDefault(n(44996)),l=r.__importDefault(n(52263)),s=n(82818),u=r.__importDefault(n(16019));function c(e){let{logo:t,alt:n,imageClassName:r}=e;const o={light:(0,i.default)(t.src),dark:(0,i.default)(t.srcDark||t.src)},l=a.default.createElement(u.default,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?a.default.createElement("div",{className:r},l):l}t.default=function(e){const{siteConfig:{title:t}}=(0,l.default)(),{navbar:{title:n,logo:r}}=(0,s.useThemeConfig)(),{imageClassName:u,titleClassName:d,...f}=e,p=(0,i.default)(r?.href||"/"),h=n?"":t,m=r?.alt??h;return a.default.createElement(o.default,{to:p,...f,...r?.target&&{target:r.target}},r&&a.default.createElement(c,{logo:r,alt:m,imageClassName:u}),null!=n&&a.default.createElement("b",{className:d},n))}},10428:(e,t,n)=>{"use strict";const r=n(70655),a=n(31665),o=n(82818),i=n(91338),l=r.__importDefault(n(2101)),s=r.__importDefault(n(29785)),u=r.__importDefault(n(29865)),c=r.__importDefault(n(4710)),d=r.__importDefault(n(33760)),f=r.__importDefault(n(86010)),p=r.__importDefault(n(67294)),h=n(96507),m=r.__importDefault(n(90826));function g(e){let{items:t}=e;return p.default.createElement(p.default.Fragment,null,t.map(((e,t)=>p.default.createElement(o.ErrorCauseBoundary,{key:t,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})},p.default.createElement(c.default,{...e})))))}t.Z=function(){const e=(0,h.useHydrated)(),t=(0,i.useNavbarMobileSidebar)(),n=(0,o.useThemeConfig)().navbar.items,[r,c]=(0,i.splitNavbarItems)(n.filter((e=>!["search"].includes(e.type??"")))),v=n.find((e=>"search"===e.type));return p.default.createElement("div",{className:"navbar__inner"},p.default.createElement("div",{className:"navbar__left"},p.default.createElement(s.default,null)),p.default.createElement("div",{className:"navbar__left-items"},p.default.createElement(g,{items:r})),p.default.createElement("div",{className:"navbar__right-items"},p.default.createElement(g,{items:c}),p.default.createElement(a.IconButtonGroup,{className:m.default.iconButtonGroup,size:"medium"},p.default.createElement(l.default,{key:"color-toggle",className:(0,f.default)(m.default.colorModeToggle,"navbar__color-mode-toggle")}),e&&p.default.createElement(p.default.Fragment,{key:"search"},v&&p.default.createElement(d.default,null)),p.default.createElement(p.default.Fragment,{key:"mobile-sidebar-toggle"},!t.disabled&&p.default.createElement(u.default,null)))))}},4818:(e,t,n)=>{"use strict";const r=n(70655),a=r.__importDefault(n(67294)),o=r.__importDefault(n(86010)),i=n(82818),l=n(91338),s=n(95999),u=r.__importDefault(n(2203)),c=r.__importDefault(n(97087));function d(e){return a.default.createElement("div",{role:"presentation",...e,className:(0,o.default)("navbar-sidebar__backdrop",e.className)})}t.Z=function(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:r}}=(0,i.useThemeConfig)(),f=(0,l.useNavbarMobileSidebar)(),{navbarRef:p,isNavbarVisible:h}=(0,l.useHideableNavbar)(n);return a.default.createElement("nav",{ref:p,"aria-label":(0,s.translate)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,o.default)("navbar","navbar--fixed-top",n&&[c.default.navbarHideable,!h&&c.default.navbarHidden],{"navbar--dark":"dark"===r,"navbar--primary":"primary"===r,"navbar-sidebar--show":f.shown})},t,a.default.createElement(d,{onClick:f.toggle}),a.default.createElement(u.default,null))}},29785:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(70655),a=r.__importDefault(n(67294)),o=r.__importDefault(n(16853));t.default=function(){return a.default.createElement(o.default,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}},42977:(e,t,n)=>{"use strict";const r=n(70655),a=r.__importDefault(n(67294)),o=n(91338),i=n(95999),l=r.__importDefault(n(2101)),s=r.__importDefault(n(29785)),u=n(31665),c=r.__importDefault(n(33760));function d(){const e=(0,o.useNavbarMobileSidebar)();return a.default.createElement("button",{type:"button","aria-label":(0,i.translate)({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()},a.default.createElement(u.CloseIcon,null))}t.Z=function(){return a.default.createElement("div",{className:"navbar-sidebar__brand"},a.default.createElement(s.default,null),a.default.createElement(l.default,{className:"margin-right--md"}),a.default.createElement(c.default,null),a.default.createElement(d,null))}},82892:(e,t,n)=>{"use strict";const r=n(70655),a=r.__importDefault(n(67294)),o=r.__importDefault(n(86010)),i=n(91338),l=r.__importDefault(n(88507));t.Z=function(e){let{header:t,primaryMenu:n,secondaryMenu:r}=e;const{shown:s}=(0,i.useNavbarSecondaryMenu)();return a.default.createElement("div",{className:(0,o.default)("navbar-sidebar",s&&"navbar-sidebar--show-secondary")},t,a.default.createElement("div",{className:(0,o.default)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":s})},a.default.createElement("div",{className:"navbar-sidebar__item menu"},n,!s&&a.default.createElement(l.default,null)),a.default.createElement("div",{className:"navbar-sidebar__item menu"},r)))}},38732:(e,t,n)=>{"use strict";const r=n(70655),a=n(31665),o=n(82818),i=n(91338),l=r.__importDefault(n(95999)),s=n(78870),u=r.__importDefault(n(67294));function c(e){return u.default.createElement("button",{...e,type:"button",className:"clean-btn navbar-sidebar__back"},u.default.createElement(s.IconArrowLeft,null),u.default.createElement(a.Typography,null,u.default.createElement(l.default,{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)"},"Back to main menu")))}t.Z=function(){const e=0===(0,o.useThemeConfig)().navbar.items.length,t=(0,i.useNavbarSecondaryMenu)();return u.default.createElement(u.default.Fragment,null,!e&&u.default.createElement(c,{onClick:()=>t.hide()}),t.content)}},27654:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(70655),a=n(31665),o=n(82818),i=n(91338),l=r.__importDefault(n(4710)),s=r.__importDefault(n(51125)),u=r.__importDefault(n(86010)),c=r.__importStar(n(67294)),d=r.__importDefault(n(83244));function f(e,t){return e.some((e=>function(e,t){return!!(0,i.isSamePath)(e.to,t)||!!(0,o.isRegexpStringMatch)(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function p(e){let{items:t,position:n,className:r,onClick:o,...i}=e;const f=(0,c.useRef)(null),[p,h]=(0,c.useState)(!1);return(0,c.useEffect)((()=>{const e=e=>{f.current&&!f.current.contains(e.target)&&h(!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)}}),[f]),c.default.createElement("div",{ref:f,className:(0,u.default)("navbar__item",d.default.dropdownNavbarItem,"dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":p})},c.default.createElement(s.default,{"aria-haspopup":"true","aria-expanded":p,role:"button",href:i.to?void 0:"#",className:(0,u.default)("navbar__link",r),...i,onClick:i.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),h(!p))}},i.children??i.label),c.default.createElement(a.ChevronDownIcon,{className:(0,u.default)("margin-left-8","cursor-pointer")}),c.default.createElement("ul",{className:"dropdown__menu"},t.map(((e,t)=>c.default.createElement(l.default,{isDropdownItem:!0,activeClassName:"dropdown__link--active",...e,key:t})))))}function h(e){let{items:t,className:n,position:r,onClick:d,...p}=e;const h=(0,i.useLocalPathname)(),m=f(t,h),{collapsed:g,toggleCollapsed:v,setCollapsed:b}=(0,o.useCollapsible)({initialState:()=>!m});return(0,c.useEffect)((()=>{m&&b(!m)}),[h,m,b]),c.default.createElement("li",{className:(0,u.default)("menu__list-item",{"menu__list-item--collapsed":g})},c.default.createElement(s.default,{role:"button",className:(0,u.default)("menu__link menu__link--sublist menu__link--sublist-caret",n),...p,onClick:e=>{e.preventDefault(),v()}},c.default.createElement(a.Typography,{variant:"body1"},p.children??p.label)),c.default.createElement(o.Collapsible,{lazy:!0,as:"ul",className:"menu__list",collapsed:g},t.map(((e,t)=>c.default.createElement(l.default,{mobile:!0,isDropdownItem:!0,onClick:d,activeClassName:"menu__link--active",...e,key:t})))))}t.default=function(e){let{mobile:t=!1,...n}=e;const r=t?h:p;return c.default.createElement(r,{...n})}},12197:(e,t,n)=>{"use strict";const r=n(70655),a=r.__importDefault(n(67294)),o=r.__importDefault(n(52263)),i=n(91338),l=n(95999),s=n(28143),u=r.__importDefault(n(27654));t.Z=function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:r,...c}=e;const{i18n:{currentLocale:d,locales:f,localeConfigs:p}}=(0,o.default)(),h=(0,i.useAlternatePageUtils)(),{search:m,hash:g}=(0,s.useLocation)(),v=[...n,...f.map((e=>{const n=`${`pathname://${h.createUrl({locale:e,fullyQualified:!1})}`}${m}${g}`;return{label:p[e]?.label,lang:p[e]?.htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===d?t?"menu__link--active":"dropdown__link--active":""}})),...r],b=t?(0,l.translate)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):p[d]?.label.substring(0,2).toUpperCase();return a.default.createElement(u.default,{...c,mobile:t,label:a.default.createElement(a.default.Fragment,null,b),items:v})}},51125:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(70655),a=n(31665),o=r.__importDefault(n(13919)),i=r.__importDefault(n(39960)),l=n(82818),s=r.__importDefault(n(44996)),u=r.__importDefault(n(67294)),c=n(55061),d=r.__importDefault(n(88822));t.default=function(e){let{activeBasePath:t,activeBaseRegex:n,to:r,href:f,label:p,html:h,isDropdownLink:m,prependBaseUrlToHref:g,...v}=e;const b=(0,s.default)(r),y=(0,s.default)(t),w=(0,s.default)(f,{forcePrependBaseUrl:!0}),x=p&&f&&!(0,o.default)(f),k=h?{dangerouslySetInnerHTML:{__html:h}}:{children:u.default.createElement(a.Typography,{component:"div",variant:"body2",className:d.default.linkContent},p,x&&u.default.createElement(c.IconExternalLink,{className:d.default.externalLinkIcon}))};return f?u.default.createElement(i.default,{href:g?w:f,...v,...k}):u.default.createElement(i.default,{to:b,isNavLink:!0,...(t||n)&&{isActive:(e,t)=>n?(0,l.isRegexpStringMatch)(n,t.pathname):t.pathname.startsWith(y)},...v,...k})}},85140:(e,t,n)=>{"use strict";const r=n(70655),a=n(91338),o=r.__importDefault(n(67294)),i=n(19843),l=n(27967),s=n(54400),u=r.__importDefault(n(36459));t.Z=function(e){let{children:t}=e;const n=(0,s.useDocThemeOptions)(),r=n?.sidebar?.hide;return o.default.createElement(a.ColorModeProvider,null,o.default.createElement(l.ThemeProvider,null,o.default.createElement(i.LightBoxProvider,null,o.default.createElement("div",{className:u.default.root,"data-hidden-doc-sidebar":r},t))))}},7020:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SearchBar=void 0;const r=n(70655),a=n(31665),o=r.__importStar(n(67294)),i=n(40466),l=n(81803),s=n(521),u=n(71044),c=r.__importDefault(n(31259)),d=n(19323),f=n(72997),p=n(43110);t.SearchBar=e=>{let{}=e;const t=(0,l.usePersistedHistory)("search",{unique:!0,equals:(e,t)=>e.title===t.title&&e.href===t.href,maxItems:10}),n=(0,u.useSearch)(),r=(0,o.useRef)(null),[h,m]=(0,o.useState)(""),[g,v]=(0,o.useState)([]),[b,y]=(0,o.useState)(!1);(0,o.useEffect)((()=>{h.length>0?(async e=>{const{results:t}=await n.query(e);v(t)})(h):v([])}),[h]),(0,o.useEffect)((()=>{b?(()=>{const e=r.current;if(!e)return;const t=e.querySelector("input");t&&setTimeout((()=>{t.focus()}),50)})():m("")}),[b]);return(0,s.useWindowEventListener)("keydown",(e=>{(e.ctrlKey||e.metaKey)&&"KeyK"===e.code&&(e.preventDefault(),y(!0))}),{},[]),o.default.createElement(o.default.Fragment,null,o.default.createElement(a.IconButton,{onClick:()=>y(!0),size:"medium"},o.default.createElement(a.SearchIcon,null)),o.default.createElement(i.Modal,{keepMounted:!0,id:"search-modal",open:b,onClose:()=>y(!1),className:c.default.modal},o.default.createElement("div",{className:c.default.header},o.default.createElement(f.SearchInput,{containerRef:r,onClear:()=>{m("")},value:h,onChange:e=>{m(e.target.value)}}),o.default.createElement(a.IconButton,{className:c.default.closeButton,size:"medium",onClick:()=>y(!1)},o.default.createElement(a.CloseIcon,{color:"primary"}))),h.length>0&&o.default.createElement(p.SearchResults,{results:g,onNavigate:(e,n)=>{e.preventDefault(),y(!1),t.add(n),window.location.href=n.href}}),0===h.length&&o.default.createElement(d.SearchHistory,{history:t.list??[],onRemove:t.removeByIndex,onClose:()=>y(!1)})))}},19323:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SearchHistory=void 0;const r=n(70655),a=n(31665),o=r.__importDefault(n(86010)),i=r.__importDefault(n(67294)),l=n(55061),s=n(33493),u=r.__importDefault(n(61699));t.SearchHistory=e=>{let{history:t=[],onRemove:n,onClose:r,className:c,children:d,...f}=e;return i.default.createElement("div",{className:(0,o.default)(c,u.default.root,0===t.length&&u.default.empty),...f},0===t.length?i.default.createElement(s.SearchResultMessage,null,"No recent searches"):i.default.createElement(i.default.Fragment,null,i.default.createElement(a.Typography,{className:u.default.title,variant:"subtitle2",component:"div"},"Recent"),t.map(((e,t)=>i.default.createElement("div",{key:t,className:u.default.item},i.default.createElement(l.IconHistory,null),i.default.createElement(a.Typography,{variant:"subtitle2",component:"a",href:e.href,className:u.default.itemTitle,dangerouslySetInnerHTML:{__html:e.title},onClick:()=>r&&r()}),i.default.createElement("button",{className:"clean-btn",onClick:()=>n(t)},i.default.createElement(l.IconClose,null)))))))}},72997:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SearchInput=void 0;const r=n(70655),a=n(31665),o=r.__importDefault(n(86010)),i=r.__importDefault(n(67294)),l=n(89164),s=r.__importDefault(n(9592));t.SearchInput=e=>{let{value:t="",active:n,onChange:r,onClear:u,onFocus:c,onCancel:d,className:f,inputProps:{ref:p,...h}={placeholder:""},containerRef:m,...g}=e;const v=(0,l.useMedia)("(max-width: 996px)"),b=n||t?.length>0;return i.default.createElement("div",{ref:m,className:(0,o.default)(s.default.root,b&&s.default.expanded,f),onKeyDown:e=>{"Escape"===e.code&&t.length>0&&(e.stopPropagation(),u&&u())},...g},i.default.createElement(a.TextField,{className:s.default.textField,value:t,placeholder:b||v?h.placeholder:"",onChange:r,onFocus:e=>{c&&c()},clearButton:!0,icon:i.default.createElement(a.SearchIcon,{color:"primary"}),...h}))}},49067:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SearchResultGroup=void 0;const r=n(70655),a=n(31665),o=r.__importDefault(n(86010)),i=r.__importDefault(n(67294)),l=r.__importDefault(n(1443));t.SearchResultGroup=e=>{let{className:t,title:n="",children:r,...s}=e;return i.default.createElement("div",{className:(0,o.default)(l.default.root,t),...s},i.default.createElement("div",null,i.default.createElement(a.Typography,{variant:"subtitle2"},n)),i.default.createElement("ul",null,r))}},38594:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});n(70655).__exportStar(n(49067),t)},51105:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SearchResultItem=void 0;const r=n(70655),a=r.__importDefault(n(39960)),o=r.__importDefault(n(86010)),i=r.__importDefault(n(67294)),l=r.__importDefault(n(7744)),s=r.__importDefault(n(42924)),u=n(95571),c=n(36301),d=r.__importDefault(n(18589)),f={[c.SearchDocumentType.Title]:i.default.createElement(l.default,{className:(0,o.default)(d.default.icon,d.default.fill)}),[c.SearchDocumentType.Heading]:i.default.createElement(s.default,{className:(0,o.default)(d.default.icon,d.default.fill)}),[c.SearchDocumentType.Paragraph]:i.default.createElement(s.default,{className:(0,o.default)(d.default.icon,d.default.fill)})};t.SearchResultItem=e=>{let{type:t,level:n=0,href:r,title:l,content:s,className:c,linkProps:{className:p,...h}={},...m}=e;const g=f[t];return i.default.createElement(a.default,{href:r,className:(0,o.default)(d.default.root,d.default[`level${n}`],p),...h},i.default.createElement(u.SearchResultItemBase,{title:l,content:s,icon:g,...m}))}},13383:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});n(70655).__exportStar(n(51105),t)},86704:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SearchResultItemBase=void 0;const r=n(70655),a=n(31665),o=r.__importDefault(n(86010)),i=r.__importDefault(n(67294)),l=r.__importDefault(n(86620));t.SearchResultItemBase=e=>{let{icon:t,title:n,content:r,className:s,...u}=e;return i.default.createElement("li",{className:(0,o.default)(l.default.root,s),...u},i.default.createElement("span",null,t),i.default.createElement("div",null,n&&i.default.createElement(a.Typography,{variant:"subtitle2",component:"span",dangerouslySetInnerHTML:{__html:n}})))}},95571:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});n(70655).__exportStar(n(86704),t)},33493:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SearchResultMessage=void 0;const r=n(70655),a=n(31665),o=r.__importDefault(n(86010)),i=r.__importDefault(n(67294)),l=r.__importDefault(n(38076));t.SearchResultMessage=e=>{let{className:t,children:n,...r}=e;return i.default.createElement(a.Typography,{className:(0,o.default)(t,l.default.root),variant:"subtitle2",component:"div",...r},i.default.createElement("span",null,n))}},43110:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SearchResults=void 0;const r=n(70655),a=r.__importDefault(n(86010)),o=r.__importStar(n(67294)),i=n(38594),l=n(13383),s=n(33493),u=n(81104),c=r.__importDefault(n(20550));t.SearchResults=e=>{let{results:t,className:n,onNavigate:r,...d}=e;const f=t.length,p=(0,o.useMemo)((()=>(0,u.groupSearchResult)(t)),[t]);return o.default.createElement("div",{className:(0,a.default)(c.default.root,0===f&&c.default.noResults)},0===f&&o.default.createElement(s.SearchResultMessage,null,"No result."),o.default.createElement("div",{className:(0,a.default)(c.default.groups)},p.map(((e,t)=>{let[n,a]=e;return o.default.createElement(o.default.Fragment,{key:t},o.default.createElement(i.SearchResultGroup,{className:c.default.group,title:n},a.map(((e,t)=>o.default.createElement(l.SearchResultItem,{key:t,type:e.type,level:e.level,href:e.href,title:e.title,content:e.content,linkProps:r?{onClick:t=>r(t,e)}:{}})))))}))))}},71044:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useSearch=void 0;const r=n(67294),a=n(36043);t.useSearch=()=>{const{createSearchInstance:e}=window,t=(0,a.useSearchContextPath)(),[n,o]=(0,r.useState)(!1),i=(0,r.useRef)(null);return(0,r.useEffect)((()=>{o(!1),(async()=>{i.current=await e({resultsLimit:50,preferredVersionPath:t[0],searchContextByPaths:t[1]}),await i.current.init(),o(!0)})()}),[t[0],t[1]]),{loaded:n,query:async e=>await i.current.query(e)}}},36043:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useSearchContextPath=void 0;const r=n(80143),a=n(28097),o=()=>window.getProxiedGeneratedData().searchContextByPaths;t.useSearchContextPath=()=>{const e=o(),t=(0,r.useActivePluginAndVersion)();if(!t)return["/",""];const{activePlugin:{pluginData:{path:n}},activeVersion:i}=t;return i?[n!==i.path?(0,a.ensureTrailingSlash)(i.path):"/",e]:["/",""]}},33760:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(70655),a=r.__importDefault(n(44763)),o=r.__importDefault(n(67294)),i=n(7020);t.default=()=>"undefined"==typeof window?o.default.createElement(o.default.Fragment,null):o.default.createElement(a.default,{fallback:()=>o.default.createElement(o.default.Fragment,null)},o.default.createElement(i.SearchBar,null))},36301:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SearchDocumentType=void 0,function(e){e.Title="title",e.Heading="heading",e.Paragraph="paragraph"}(t.SearchDocumentType||(t.SearchDocumentType={}))},81104:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.groupSearchResult=void 0;const r=n(70655),a=r.__importDefault(n(7739)),o=r.__importDefault(n(57557)),i=n(36301);t.groupSearchResult=e=>Object.entries((0,a.default)(e.map((e=>(e=>{const{type:t,document:n,page:r,highlighted:a,score:o}=e,{url:l,hash:s=""}=n,u=l+s;switch(t){case i.SearchDocumentType.Title:return{type:t,level:0,url:l,hash:s,href:u,score:o,title:a,content:"",category:n.breadcrumb?.[1]??n.title};case i.SearchDocumentType.Heading:{const e=r;return{type:t,level:1,url:l,hash:s,href:u,score:o,title:a,content:"",category:e?.breadcrumb?.[1]??e?.title??""}}case i.SearchDocumentType.Paragraph:{const e=r;return{type:t,level:2,url:l,hash:s,href:u,score:o,title:n.sectionTitle||n.title||"",content:a,category:e?.breadcrumb?.[1]??e?.title??""}}}})(e))),"category")).map((e=>{let[t,n]=e;return[t,n.map((e=>(0,o.default)(e,"category"))).sort(((e,t)=>e.score>t.score?-1:1))]})).sort(((e,t)=>(e[1][0]?.score??0)>(t[1][0]?.score??0)?-1:1)).map((e=>{let[t,n]=e;return[t,Object.entries((0,a.default)(n,"url")).map((e=>{let[t,n]=e,r=[...n].sort(((e,t)=>e.type===i.SearchDocumentType.Title||e.score>t.score?-1:1));const a=r[0]?.type===i.SearchDocumentType.Title;return r=a?r.filter((e=>!(e.type===i.SearchDocumentType.Heading&&""===e.hash))):r,r=r.map(((e,t)=>({...e,level:a?0===t?0:1:0}))),[t,r]})).sort(((e,t)=>(e[1][0]?.score??0)>(t[1][0]?.score??0)?-1:1)).flatMap((e=>{let[t,n]=e;return n}))]}))},16019:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(70655),a=r.__importDefault(n(67294)),o=r.__importDefault(n(86010)),i=r.__importDefault(n(72389)),l=n(82818),s=r.__importDefault(n(65787));t.default=function(e){const t=(0,i.default)(),{colorMode:n}=(0,l.useColorMode)(),{sources:r,className:u,alt:c,...d}=e,f=t?"dark"===n?["dark"]:["light"]:["light","dark"];return a.default.createElement(a.default.Fragment,null,f.map((e=>a.default.createElement("img",{key:e,src:r[e],alt:c,className:(0,o.default)(s.default.themedImage,s.default[`themedImage--${e}`],u),...d}))))}},98934:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,t:()=>o});var r=n(67294);const a=r.createContext(!1);function o(e){let{children:t}=e;const[n,o]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{o(!0)}),[]),r.createElement(a.Provider,{value:n},t)}},91091:(e,t,n)=>{"use strict";var r=n(67294),a=n(73935),o=n(73727),i=n(70405),l=n(10412);const s=[n(85711),n(32497),n(3310),n(18320),n(11057),n(93878),n(26724)];var u=n(723),c=n(16550),d=n(18790),f=n(85140),p=n(87462),h=n(35742),m=n(52263),g=n(44996),v=n(86668),b=n(10833),y=n(94711),w=n(19727),x=n(43320),k=n(90197);function _(){const{i18n:{defaultLocale:e,localeConfigs:t}}=(0,m.default)(),n=(0,y.l)();return r.createElement(h.Z,null,Object.entries(t).map((e=>{let[t,{htmlLang:a}]=e;return r.createElement("link",{key:t,rel:"alternate",href:n.createUrl({locale:t,fullyQualified:!0}),hrefLang:a})})),r.createElement("link",{rel:"alternate",href:n.createUrl({locale:e,fullyQualified:!0}),hrefLang:"x-default"}))}function E(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,m.default)(),a=function(){const{siteConfig:{url:e}}=(0,m.default)(),{pathname:t}=(0,c.TH)();return e+(0,g.default)(t)}(),o=t?`${n}${t}`:a;return r.createElement(h.Z,null,r.createElement("meta",{property:"og:url",content:o}),r.createElement("link",{rel:"canonical",href:o}))}function S(){const{i18n:{currentLocale:e}}=(0,m.default)(),{metadata:t,image:n}=(0,v.L)();return r.createElement(r.Fragment,null,r.createElement(h.Z,null,r.createElement("meta",{name:"twitter:card",content:"summary_large_image"}),r.createElement("body",{className:w.h})),n&&r.createElement(b.d,{image:n}),r.createElement(E,null),r.createElement(_,null),r.createElement(k.Z,{tag:x.HX,locale:e}),r.createElement(h.Z,null,t.map(((e,t)=>r.createElement("meta",(0,p.Z)({key:t},e))))))}const C=new Map;function T(e){if(C.has(e.pathname))return{...e,pathname:C.get(e.pathname)};if((0,d.f)(u.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return C.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return C.set(e.pathname,t),{...e,pathname:t}}var O=n(98934),D=n(58940);function P(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];const a=s.map((t=>{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>a.forEach((e=>e?.()))}const N=function(e){let{children:t,location:n,previousLocation:a}=e;return(0,r.useLayoutEffect)((()=>{a!==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:a}),P("onRouteDidUpdate",{previousLocation:a,location:n}))}),[a,n]),t};function I(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.f)(u.Z,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class A extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=l.default.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}),I(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 r.createElement(N,{previousLocation:this.previousLocation,location:t},r.createElement(c.AW,{location:t,render:()=>e}))}}const L=A,R="__docusaurus-base-url-issue-banner-container",j="__docusaurus-base-url-issue-banner",M="__docusaurus-base-url-issue-banner-suggestion-container",F="__DOCUSAURUS_INSERT_BASEURL_BANNER";function B(e){return`\nwindow['${F}'] = true;\n\ndocument.addEventListener('DOMContentLoaded', maybeInsertBanner);\n\nfunction maybeInsertBanner() {\n var shouldInsert = window['${F}'];\n shouldInsert && insertBanner();\n}\n\nfunction insertBanner() {\n var bannerContainer = document.getElementById('${R}');\n if (!bannerContainer) {\n return;\n }\n var bannerHtml = ${JSON.stringify(function(e){return`\n<div id="${j}" style="border: thick solid red; background-color: rgb(255, 230, 179); margin: 20px; padding: 20px; font-size: 20px;">\n <p style="font-weight: bold; font-size: 30px;">Your Docusaurus site did not load properly.</p>\n <p>A very common reason is a wrong site <a href="https://docusaurus.io/docs/docusaurus.config.js/#baseUrl" style="font-weight: bold;">baseUrl configuration</a>.</p>\n <p>Current configured baseUrl = <span style="font-weight: bold; color: red;">${e}</span> ${"/"===e?" (default value)":""}</p>\n <p>We suggest trying baseUrl = <span id="${M}" style="font-weight: bold; color: green;"></span></p>\n</div>\n`}(e)).replace(/</g,"\\<")};\n bannerContainer.innerHTML = bannerHtml;\n var suggestionContainer = document.getElementById('${M}');\n var actualHomePagePath = window.location.pathname;\n var suggestedBaseUrl = actualHomePagePath.substr(-1) === '/'\n ? actualHomePagePath\n : actualHomePagePath + '/';\n suggestionContainer.innerHTML = suggestedBaseUrl;\n}\n`}function z(){const{siteConfig:{baseUrl:e}}=(0,m.default)();return(0,r.useLayoutEffect)((()=>{window[F]=!1}),[]),r.createElement(r.Fragment,null,!l.default.canUseDOM&&r.createElement(h.Z,null,r.createElement("script",null,B(e))),r.createElement("div",{id:R}))}function $(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,m.default)(),{pathname:n}=(0,c.TH)();return t&&n===e?r.createElement(z,null):null}function U(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:a,localeConfigs:o}}=(0,m.default)(),i=(0,g.default)(e),{htmlLang:l,direction:s}=o[a];return r.createElement(h.Z,null,r.createElement("html",{lang:l,dir:s}),r.createElement("title",null,t),r.createElement("meta",{property:"og:title",content:t}),r.createElement("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&r.createElement("meta",{name:"robots",content:"noindex, nofollow"}),e&&r.createElement("link",{rel:"icon",href:i}))}var H=n(44763);function V(){const e=(0,d.H)(u.Z),t=(0,c.TH)();return r.createElement(H.default,null,r.createElement(D.M,null,r.createElement(O.t,null,r.createElement(f.Z,null,r.createElement(U,null),r.createElement(S,null),r.createElement($,null),r.createElement(L,{location:T(t)},e)))))}var q=n(16887);const W=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const 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 G=n(99670);const Z=new Set,Q=new Set,Y=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,X={prefetch(e){if(!(e=>!Y()&&!Q.has(e)&&!Z.has(e))(e))return!1;Z.add(e);const t=(0,d.f)(u.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(q).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,G.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?W(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!Y()&&!Q.has(e))(e)&&(Q.add(e),I(e))},K=Object.freeze(X);if(l.default.canUseDOM){window.docusaurus=K;const e=a.hydrate;I(window.location.pathname).then((()=>{e(r.createElement(i.B6,null,r.createElement(o.VK,null,r.createElement(V,null))),document.getElementById("__docusaurus"))}))}},58940:(e,t,n)=>{"use strict";n.d(t,{_:()=>c,M:()=>d});var r=n(67294),a=n(36809);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/","versions":[{"name":"current","label":"Next","isLast":true,"path":"/","mainDocId":"guides/getting-started","docs":[{"id":"guides/getting-started","path":"/","sidebar":"guides"},{"id":"guides/js-waku/configure-discovery","path":"/guides/js-waku/configure-discovery","sidebar":"guides"},{"id":"guides/js-waku/debug-waku-dapp","path":"/guides/js-waku/debug-waku-dapp","sidebar":"guides"},{"id":"guides/js-waku/faq","path":"/guides/js-waku/faq","sidebar":"guides"},{"id":"guides/js-waku/index","path":"/guides/js-waku/","sidebar":"guides"},{"id":"guides/js-waku/light-send-receive","path":"/guides/js-waku/light-send-receive","sidebar":"guides"},{"id":"guides/js-waku/manage-filter","path":"/guides/js-waku/manage-filter","sidebar":"guides"},{"id":"guides/js-waku/message-encryption","path":"/guides/js-waku/message-encryption","sidebar":"guides"},{"id":"guides/js-waku/run-waku-nodejs","path":"/guides/js-waku/run-waku-nodejs","sidebar":"guides"},{"id":"guides/js-waku/store-retrieve-messages","path":"/guides/js-waku/store-retrieve-messages","sidebar":"guides"},{"id":"guides/js-waku/use-waku-create-app","path":"/guides/js-waku/use-waku-create-app","sidebar":"guides"},{"id":"guides/js-waku/use-waku-react","path":"/guides/js-waku/use-waku-react","sidebar":"guides"},{"id":"guides/nwaku/build-source","path":"/guides/nwaku/build-source","sidebar":"guides"},{"id":"guides/nwaku/config-methods","path":"/guides/nwaku/config-methods","sidebar":"guides"},{"id":"guides/nwaku/config-options","path":"/guides/nwaku/config-options","sidebar":"guides"},{"id":"guides/nwaku/configure-discovery","path":"/guides/nwaku/configure-discovery","sidebar":"guides"},{"id":"guides/nwaku/configure-nwaku","path":"/guides/nwaku/configure-nwaku","sidebar":"guides"},{"id":"guides/nwaku/faq","path":"/guides/nwaku/faq","sidebar":"guides"},{"id":"guides/nwaku/run-docker","path":"/guides/nwaku/run-docker","sidebar":"guides"},{"id":"guides/nwaku/run-docker-compose","path":"/guides/nwaku/run-docker-compose","sidebar":"guides"},{"id":"guides/nwaku/run-node","path":"/guides/nwaku/run-node","sidebar":"guides"},{"id":"learn/concepts/content-topics","path":"/learn/concepts/content-topics","sidebar":"learn"},{"id":"learn/concepts/discv5","path":"/learn/concepts/discv5","sidebar":"learn"},{"id":"learn/concepts/dns-discovery","path":"/learn/concepts/dns-discovery","sidebar":"learn"},{"id":"learn/concepts/network-domains","path":"/learn/concepts/network-domains","sidebar":"learn"},{"id":"learn/concepts/peer-discovery","path":"/learn/concepts/peer-discovery","sidebar":"learn"},{"id":"learn/concepts/peer-exchange","path":"/learn/concepts/peer-exchange","sidebar":"learn"},{"id":"learn/concepts/protocols","path":"/learn/concepts/protocols","sidebar":"learn"},{"id":"learn/concepts/static-peers","path":"/learn/concepts/static-peers","sidebar":"learn"},{"id":"learn/concepts/transports","path":"/learn/concepts/transports","sidebar":"learn"},{"id":"learn/faq","path":"/learn/faq","sidebar":"learn"},{"id":"learn/glossary","path":"/learn/glossary","sidebar":"learn"},{"id":"learn/research","path":"/learn/research","sidebar":"learn"},{"id":"learn/security-features","path":"/learn/security-features","sidebar":"learn"},{"id":"learn/waku-network","path":"/learn/waku-network","sidebar":"learn"},{"id":"learn/waku-vs-libp2p","path":"/learn/waku-vs-libp2p","sidebar":"learn"},{"id":"privacy-policy","path":"/privacy-policy"},{"id":"research/benchmarks/postgres-adoption","path":"/research/benchmarks/postgres-adoption","sidebar":"research"},{"id":"research/index","path":"/research/","sidebar":"research"},{"id":"research/research-and-studies/capped-bandwidth","path":"/research/research-and-studies/capped-bandwidth","sidebar":"research"},{"id":"research/research-and-studies/incentivisation","path":"/research/research-and-studies/incentivisation","sidebar":"research"},{"id":"research/research-and-studies/maximum-bandwidth","path":"/research/research-and-studies/maximum-bandwidth","sidebar":"research"},{"id":"research/research-and-studies/message-propagation","path":"/research/research-and-studies/message-propagation","sidebar":"research"},{"id":"research/research-and-studies/rln-key-benchmarks","path":"/research/research-and-studies/rln-key-benchmarks","sidebar":"research"},{"id":"rules-of-engagement","path":"/rules-of-engagement"},{"id":"terms","path":"/terms"}],"draftIds":[],"sidebars":{"guides":{"link":{"path":"/","label":"guides/getting-started"}},"learn":{"link":{"path":"/learn/waku-network","label":"learn/waku-network"}},"research":{"link":{"path":"/research/","label":"research/index"}}}}],"breadcrumbs":false}}}'),i=JSON.parse('{"defaultLocale":"en-GB","locales":["en-GB"],"path":"i18n","currentLocale":"en-GB","localeConfigs":{"en-GB":{"label":"British English","direction":"ltr","htmlLang":"en-GB","calendar":"gregory","path":"en-GB"}}}');var l=n(57529);const s=JSON.parse('{"docusaurusVersion":"2.4.1","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"2.4.1"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"2.4.1"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"2.4.1"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"2.4.1"},"docusaurus-plugin-sass":{"type":"package","name":"docusaurus-plugin-sass","version":"0.2.3"},"logos-docusaurus-search-local":{"type":"package","name":"@acid-info/logos-docusaurus-search-local","version":"1.0.0-alpha.111"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"2.4.1"},"docusaurus-theme-mermaid":{"type":"package","name":"@docusaurus/theme-mermaid","version":"2.4.1"},"logos-docusaurus-theme":{"type":"package","name":"@acid-info/logos-docusaurus-theme","version":"1.0.0-alpha.143"},"docusaurus-fathom":{"type":"package","name":"@acid-info/docusaurus-fathom","version":"1.0.0-alpha.111"}}}'),u={siteConfig:a.default,siteMetadata:s,globalData:o,i18n:i,codeTranslations:l},c=r.createContext(u);function d(e){let{children:t}=e;return r.createElement(c.Provider,{value:u},t)}},44763:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>f});var r=n(67294),a=n(10412),o=n(35742),i=n(18780),l=n(59351);function s(e){let{error:t,tryAgain:n}=e;return r.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"}},r.createElement("h1",{style:{fontSize:"3rem"}},"This page crashed"),r.createElement("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"}},"Try again"),r.createElement(u,{error:t}))}function u(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{style:{whiteSpace:"pre-wrap"}},n)}function c(e){let{error:t,tryAgain:n}=e;return r.createElement(f,{fallback:()=>r.createElement(s,{error:t,tryAgain:n})},r.createElement(o.Z,null,r.createElement("title",null,"Page Error")),r.createElement(l.default,null,r.createElement(s,{error:t,tryAgain:n})))}const d=e=>r.createElement(c,e);class f extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.default.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??d)(e)}return e??null}}},10412:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>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}},35742:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(67294),a=n(70405);function o(e){return r.createElement(a.ql,e)}},39960:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>p});var r=n(87462),a=n(67294),o=n(73727),i=n(18780),l=n(52263),s=n(13919),u=n(10412);const c=a.createContext({collectLink:()=>{}});var d=n(44996);function f(e,t){let{isNavLink:n,to:f,href:p,activeClassName:h,isActive:m,"data-noBrokenLinkCheck":g,autoAddBaseUrl:v=!0,...b}=e;const{siteConfig:{trailingSlash:y,baseUrl:w}}=(0,l.default)(),{withBaseUrl:x}=(0,d.useBaseUrlUtils)(),k=(0,a.useContext)(c),_=(0,a.useRef)(null);(0,a.useImperativeHandle)(t,(()=>_.current));const E=f||p;const S=(0,s.default)(E),C=E?.replace("pathname://","");let T=void 0!==C?(O=C,v&&(e=>e.startsWith("/"))(O)?x(O):O):void 0;var O;T&&S&&(T=(0,i.applyTrailingSlash)(T,{trailingSlash:y,baseUrl:w}));const D=(0,a.useRef)(!1),P=n?o.OL:o.rU,N=u.default.canUseIntersectionObserver,I=(0,a.useRef)(),A=()=>{D.current||null==T||(window.docusaurus.preload(T),D.current=!0)};(0,a.useEffect)((()=>(!N&&S&&null!=T&&window.docusaurus.prefetch(T),()=>{N&&I.current&&I.current.disconnect()})),[I,T,N,S]);const L=T?.startsWith("#")??!1,R=!T||!S||L;return R||g||k.collectLink(T),R?a.createElement("a",(0,r.Z)({ref:_,href:T},E&&!S&&{target:"_blank",rel:"noopener noreferrer"},b)):a.createElement(P,(0,r.Z)({},b,{onMouseEnter:A,onTouchStart:A,innerRef:e=>{_.current=e,N&&e&&S&&(I.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(I.current.unobserve(e),I.current.disconnect(),null!=T&&window.docusaurus.prefetch(T))}))})),I.current.observe(e))},to:T},n&&{isActive:m,activeClassName:h}))}const p=a.forwardRef(f)},95999:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s,translate:()=>l});var r=n(67294);function a(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var o=n(57529);function i(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 o[t??n]??n??t}function l(e,t){let{message:n,id:r}=e;return a(i({message:n,id:r}),t)}function s(e){let{children:t,id:n,values:o}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal <Translate> children",t),new Error("The Docusaurus <Translate> component only accept simple string values");const l=i({message:t,id:n});return r.createElement(r.Fragment,null,a(l,o))}},29935:(e,t,n)=>{"use strict";n.d(t,{m:()=>r});const r="default"},13919:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.r(t),n.d(t,{default:()=>a,hasProtocol:()=>r})},28143:(e,t,n)=>{"use strict";n.r(t),n.d(t,{Redirect:()=>r.l_,matchPath:()=>r.LX,useHistory:()=>r.k6,useLocation:()=>r.TH});var r=n(16550)},44996:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>l,useBaseUrlUtils:()=>i});var r=n(67294),a=n(52263),o=n(13919);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,a.default)(),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.hasProtocol)(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)}},52263:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(67294),a=n(58940);function o(){return(0,r.useContext)(a._)}},72389:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(67294),a=n(98934);function o(){return(0,r.useContext)(a._)}},99670:(e,t,n)=>{"use strict";n.d(t,{Z:()=>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}},30226:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,z:()=>o});var r=n(67294);const a=r.createContext(null);function o(e){let{children:t,value:n}=e;const o=r.useContext(a),i=(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:o,value:n})),[o,n]);return r.createElement(a.Provider,{value:i},t)}},80143:(e,t,n)=>{"use strict";n.r(t),n.d(t,{useActiveDocContext:()=>b,useActivePlugin:()=>p,useActivePluginAndVersion:()=>h,useActiveVersion:()=>v,useAllDocsData:()=>d,useDocVersionSuggestions:()=>y,useDocsData:()=>f,useLatestVersion:()=>g,useVersions:()=>m});var r=n(16550),a=n(52263),o=n(29935);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,a.default)();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=l(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}function u(e,t){const n=s(e,t),a=n?.docs.find((e=>!!(0,r.LX)(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={},d=()=>i("docusaurus-plugin-content-docs")??c,f=e=>function(e,t,n){void 0===t&&(t=o.m),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});function p(e){void 0===e&&(e={});const t=d(),{pathname:n}=(0,r.TH)();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.LX)(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 h(e){void 0===e&&(e={});const t=p(e),{pathname:n}=(0,r.TH)();if(!t)return;return{activePlugin:t,activeVersion:s(t.pluginData,n)}}function m(e){return f(e).versions}function g(e){const t=f(e);return l(t)}function v(e){const t=f(e),{pathname:n}=(0,r.TH)();return s(t,n)}function b(e){const t=f(e),{pathname:n}=(0,r.TH)();return u(t,n)}function y(e){const t=f(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=l(e);return{latestDocSuggestion:u(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},18320:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(74865),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()}}},3310:(e,t,n)=>{"use strict";n.r(t);var r=n(87410),a=n(36809);!function(e){const{themeConfig:{prism:t}}=a.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{n(6726)(`./prism-${e}`)})),delete globalThis.Prism}(r.Z)},88507:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>T});var r=n(67294),a=n(86668),o=n(42489),i=n(87462),l=n(39960),s=n(44996),u=n(13919),c=n(39471);function d(e){let{item:t}=e;const{to:n,href:a,label:o,prependBaseUrlToHref:d,...f}=t,p=(0,s.default)(n),h=(0,s.default)(a,{forcePrependBaseUrl:!0});return r.createElement(l.default,(0,i.Z)({className:"footer__link-item"},a?{href:d?h:a}:{to:p},f),o,a&&!(0,u.default)(a)&&r.createElement(c.Z,null))}function f(e){let{item:t}=e;return t.html?r.createElement("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement("li",{key:t.href??t.to,className:"footer__item"},r.createElement(d,{item:t}))}function p(e){let{column:t}=e;return r.createElement("div",{className:"col footer__col"},r.createElement("div",{className:"footer__title"},t.title),r.createElement("ul",{className:"footer__items clean-list"},t.items.map(((e,t)=>r.createElement(f,{key:t,item:e})))))}function h(e){let{columns:t}=e;return r.createElement("div",{className:"row footer__links"},t.map(((e,t)=>r.createElement(p,{key:t,column:e}))))}function m(){return r.createElement("span",{className:"footer__link-separator"},"\xb7")}function g(e){let{item:t}=e;return t.html?r.createElement("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement(d,{item:t})}function v(e){let{links:t}=e;return r.createElement("div",{className:"footer__links text--center"},r.createElement("div",{className:"footer__links"},t.map(((e,n)=>r.createElement(r.Fragment,{key:n},r.createElement(g,{item:e}),t.length!==n+1&&r.createElement(m,null))))))}function b(e){let{links:t}=e;return(0,o.a)(t)?r.createElement(h,{columns:t}):r.createElement(v,{links:t})}var y=n(86010),w=n(16019);const x={footerLogoLink:"footerLogoLink_BH7S"};function k(e){let{logo:t}=e;const{withBaseUrl:n}=(0,s.useBaseUrlUtils)(),a={light:n(t.src),dark:n(t.srcDark??t.src)};return r.createElement(w.default,{className:(0,y.default)("footer__logo",t.className),alt:t.alt,sources:a,width:t.width,height:t.height,style:t.style})}function _(e){let{logo:t}=e;return t.href?r.createElement(l.default,{href:t.href,className:x.footerLogoLink,target:t.target},r.createElement(k,{logo:t})):r.createElement(k,{logo:t})}function E(e){let{copyright:t}=e;return r.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}var S=n(52601);function C(){const{footer:e}=(0,a.L)();if(!e)return null;const{copyright:t,links:n,logo:o,style:i}=e;return r.createElement(S.Z,{style:i,links:n&&n.length>0&&r.createElement(b,{links:n}),logo:o&&r.createElement(_,{logo:o}),copyright:t&&r.createElement(E,{copyright:t})})}const T=r.memo(C)},55211:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(87462),a=n(67294);function o(e){return a.createElement("svg",(0,r.Z)({viewBox:"0 0 24 24",width:24,height:24},e),a.createElement("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"}))}},39471:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(67294);const a={iconExternalLink:"iconExternalLink_nPIU"};function o(e){let{width:t=13.5,height:n=13.5}=e;return r.createElement("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:a.iconExternalLink},r.createElement("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"}))}},67080:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(87462),a=n(67294);function o(e){return a.createElement("svg",(0,r.Z)({viewBox:"0 0 24 24",width:24,height:24},e),a.createElement("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"}))}},59351:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>N});var r=n(67294),a=n(86010),o=n(44763),i=n(10833),l=n(55225),s=n(35281),u=n(19727);const c={skipToContent:"skipToContent_fXgn"};function d(){return r.createElement(l.l,{className:c.skipToContent})}var f=n(86668),p=n(59689),h=n(87462),m=n(95999);function g(e){let{width:t=21,height:n=21,color:a="currentColor",strokeWidth:o=1.2,className:i,...l}=e;return r.createElement("svg",(0,h.Z)({viewBox:"0 0 15 15",width:t,height:n},l),r.createElement("g",{stroke:a,strokeWidth:o},r.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}const v={closeButton:"closeButton_CVFx"};function b(e){return r.createElement("button",(0,h.Z)({type:"button","aria-label":(0,m.translate)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},e,{className:(0,a.default)("clean-btn close",v.closeButton,e.className)}),r.createElement(g,{width:14,height:14,strokeWidth:3.1}))}const y={content:"content_knG7"};function w(e){const{announcementBar:t}=(0,f.L)(),{content:n}=t;return r.createElement("div",(0,h.Z)({},e,{className:(0,a.default)(y.content,e.className),dangerouslySetInnerHTML:{__html:n}}))}const x={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function k(){const{announcementBar:e}=(0,f.L)(),{isActive:t,close:n}=(0,p.nT)();if(!t)return null;const{backgroundColor:a,textColor:o,isCloseable:i}=e;return r.createElement("div",{className:x.announcementBar,style:{backgroundColor:a,color:o},role:"banner"},i&&r.createElement("div",{className:x.announcementBarPlaceholder}),r.createElement(w,{className:x.announcementBarContent}),i&&r.createElement(b,{onClick:n,className:x.announcementBarClose}))}var _=n(4818),E=n(10428);function S(){return r.createElement(_.Z,null,r.createElement(E.Z,null))}var C=n(88507),T=n(90988),O=n(69690);function D(e){let{error:t,tryAgain:n}=e;return r.createElement("main",{className:"container margin-vert--xl"},r.createElement("div",{className:"row"},r.createElement("div",{className:"col col--6 col--offset-3"},r.createElement("h1",{className:"hero__title"},r.createElement(m.default,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed"},"This page crashed.")),r.createElement("div",{className:"margin-vert--lg"},r.createElement(O.Cw,{onClick:n,className:"button button--primary shadow--lw"})),r.createElement("hr",null),r.createElement("div",{className:"margin-vert--md"},r.createElement(O.aG,{error:t})))))}const P={mainWrapper:"mainWrapper_z2l0"};function N(e){const{children:t,noFooter:n,wrapperClassName:c,title:f,description:p}=e;return(0,u.t)(),r.createElement(T.Z,null,r.createElement(i.d,{title:f,description:p}),r.createElement(d,null),r.createElement(k,null),r.createElement(S,null),r.createElement("div",{id:l.u,className:(0,a.default)(s.k.wrapper.main,P.mainWrapper,c)},r.createElement(o.default,{fallback:e=>r.createElement(D,e)},t)),!n&&r.createElement(C.default,null))}},2101:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});var r=n(67294),a=n(86668),o=n(92949),i=n(66354);const l={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function s(e){let{className:t}=e;const n=(0,a.L)().navbar.style,s=(0,a.L)().colorMode.disableSwitch,{colorMode:u,setColorMode:c}=(0,o.I)();return s?null:r.createElement(i.Z,{className:t,buttonClassName:"dark"===n?l.darkNavbarColorModeToggle:void 0,value:u,onChange:c})}},29865:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});var r=n(67294),a=n(93163),o=n(95999),i=n(87462);function l(e){let{width:t=30,height:n=30,className:a,...o}=e;return r.createElement("svg",(0,i.Z)({className:a,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true"},o),r.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))}function s(){const{toggle:e,shown:t}=(0,a.e)();return r.createElement("button",{onClick:e,"aria-label":(0,o.translate)({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"},r.createElement(l,null))}},2203:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>p});var r=n(67294),a=n(93163),o=n(69800),i=n(82892),l=n(42977),s=n(87462),u=n(86668),c=n(4710);function d(){const e=(0,a.e)(),t=(0,u.L)().navbar.items;return r.createElement("ul",{className:"menu__list"},t.map(((t,n)=>r.createElement(c.default,(0,s.Z)({mobile:!0},t,{onClick:()=>e.toggle(),key:n})))))}var f=n(38732);function p(){const e=(0,a.e)();return(0,o.N)(e.shown),e.shouldRender?r.createElement(i.Z,{header:r.createElement(l.Z,null),primaryMenu:r.createElement(d,null),secondaryMenu:r.createElement(f.Z,null)}):null}},4710:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>k});var r=n(67294),a=n(87462),o=n(86010),i=n(51125);function l(e){let{className:t,isDropdownItem:n=!1,...l}=e;const s=r.createElement(i.default,(0,a.Z)({className:(0,o.default)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n},l));return n?r.createElement("li",null,s):s}function s(e){let{className:t,isDropdownItem:n,...l}=e;return r.createElement("li",{className:"menu__list-item"},r.createElement(i.default,(0,a.Z)({className:(0,o.default)("menu__link",t)},l)))}function u(e){let{mobile:t=!1,position:n,...o}=e;const i=t?s:l;return r.createElement(i,(0,a.Z)({},o,{activeClassName:o.activeClassName??(t?"menu__link--active":"navbar__link--active")}))}var c=n(27654),d=n(12197),f=n(33760);const p={searchBox:"searchBox_ZlJk"};function h(e){let{children:t,className:n}=e;return r.createElement("div",{className:(0,o.default)(n,p.searchBox)},t)}var m=n(80143),g=n(53438);var v=n(60373),b=n(95999),y=n(16550);const w=e=>e.docs.find((t=>t.id===e.mainDocId));const x={default:u,localeDropdown:d.Z,search:function(e){let{mobile:t,className:n}=e;return t?null:r.createElement(h,{className:n},r.createElement(f.default,null))},dropdown:c.default,html:function(e){let{value:t,className:n,mobile:a=!1,isDropdownItem:i=!1}=e;const l=i?"li":"div";return r.createElement(l,{className:(0,o.default)({navbar__item:!a&&!i,"menu__list-item":a},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:o,...i}=e;const{activeDoc:l}=(0,m.useActiveDocContext)(o),s=(0,g.vY)(t,o);return null===s?null:r.createElement(u,(0,a.Z)({exact:!0},i,{isActive:()=>l?.path===s.path||!!l?.sidebar&&l.sidebar===s.sidebar,label:n??s.id,to:s.path}))},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:o,...i}=e;const{activeDoc:l}=(0,m.useActiveDocContext)(o),s=(0,g.oz)(t,o).link;if(!s)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return r.createElement(u,(0,a.Z)({exact:!0},i,{isActive:()=>l?.sidebar===t,label:n??s.label,to:s.path}))},docsVersion:function(e){let{label:t,to:n,docsPluginId:o,...i}=e;const l=(0,g.lO)(o)[0],s=t??l.label,c=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(l).path;return r.createElement(u,(0,a.Z)({},i,{label:s,to:c}))},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:o,dropdownItemsBefore:i,dropdownItemsAfter:l,...s}=e;const{search:d,hash:f}=(0,y.TH)(),p=(0,m.useActiveDocContext)(n),h=(0,m.useVersions)(n),{savePreferredVersionName:x}=(0,v.J)(n),k=[...i,...h.map((e=>{const t=p.alternateDocVersions[e.name]??w(e);return{label:e.label,to:`${t.path}${d}${f}`,isActive:()=>e===p.activeVersion,onClick:()=>x(e.name)}})),...l],_=(0,g.lO)(n)[0],E=t&&k.length>1?(0,b.translate)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):_.label,S=t&&k.length>1?void 0:w(_).path;return k.length<=1?r.createElement(u,(0,a.Z)({},s,{mobile:t,label:E,to:S,isActive:o?()=>!1:void 0})):r.createElement(c.default,(0,a.Z)({},s,{mobile:t,label:E,to:S,items:k,isActive:o?()=>!1:void 0}))}};function k(e){let{type:t,...n}=e;const a=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),o=x[a];if(!o)throw new Error(`No NavbarItem component found for type "${t}".`);return r.createElement(o,n)}},90197:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(67294),a=n(35742);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return r.createElement(a.Z,null,t&&r.createElement("meta",{name:"docusaurus_locale",content:t}),n&&r.createElement("meta",{name:"docusaurus_version",content:n}),o&&r.createElement("meta",{name:"docusaurus_tag",content:o}),i&&r.createElement("meta",{name:"docsearch:language",content:i}),n&&r.createElement("meta",{name:"docsearch:version",content:n}),o&&r.createElement("meta",{name:"docsearch:docusaurus_tag",content:o}))}},59689:(e,t,n)=>{"use strict";n.d(t,{nT:()=>h,pl:()=>p});var r=n(67294),a=n(72389),o=n(50012),i=n(902),l=n(86668);const s=(0,o.WA)("docusaurus.announcement.dismiss"),u=(0,o.WA)("docusaurus.announcement.id"),c=()=>"true"===s.get(),d=e=>s.set(String(e)),f=r.createContext(null);function p(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,l.L)(),t=(0,a.default)(),[n,o]=(0,r.useState)((()=>!!t&&c()));(0,r.useEffect)((()=>{o(c())}),[]);const i=(0,r.useCallback)((()=>{d(!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&&d(!1),!r&&c()||o(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return r.createElement(f.Provider,{value:n},t)}function h(){const e=(0,r.useContext)(f);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},92949:(e,t,n)=>{"use strict";n.d(t,{I:()=>g,S:()=>m});var r=n(67294),a=n(10412),o=n(902),i=n(50012),l=n(86668);const s=r.createContext(void 0),u="theme",c=(0,i.WA)(u),d={light:"light",dark:"dark"},f=e=>e===d.dark?d.dark:d.light,p=e=>a.default.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e),h=e=>{c.set(f(e))};function m(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.L)(),[a,o]=(0,r.useState)(p(e));(0,r.useEffect)((()=>{t&&c.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:a=!0}=r;t?(o(t),a&&h(t)):(o(n?window.matchMedia("(prefers-color-scheme: dark)").matches?d.dark:d.light:e),c.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",f(a))}),[a]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==u)return;const t=c.get();null!==t&&i(f(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const s=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||s.current?s.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:a,setColorMode:i,get isDarkTheme(){return a===d.dark},setLightTheme(){i(d.light)},setDarkTheme(){i(d.dark)}})),[a,i])}();return r.createElement(s.Provider,{value:n},t)}function g(){const e=(0,r.useContext)(s);if(null==e)throw new o.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},65130:(e,t,n)=>{"use strict";n.d(t,{b:()=>i,k:()=>l});var r=n(67294),a=n(902);const o=r.createContext(null);function i(e){let{children:t,content:n}=e;const a=function(e){return(0,r.useMemo)((()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc})),[e])}(n);return r.createElement(o.Provider,{value:a},t)}function l(){const e=(0,r.useContext)(o);if(null===e)throw new a.i6("DocProvider");return e}},14353:(e,t,n)=>{"use strict";n.d(t,{D:()=>l,f:()=>s});var r=n(67294),a=n(902);const o=Symbol("EmptyContext"),i=r.createContext(o);function l(e){let{children:t}=e;const[n,a]=(0,r.useState)(null),o=(0,r.useMemo)((()=>({expandedItem:n,setExpandedItem:a})),[n]);return r.createElement(i.Provider,{value:o},t)}function s(){const e=(0,r.useContext)(i);if(e===o)throw new a.i6("DocSidebarItemsExpandedStateProvider");return e}},60373:(e,t,n)=>{"use strict";n.d(t,{J:()=>b,L5:()=>g,Oh:()=>y});var r=n(67294),a=n(80143),o=n(29935),i=n(86668),l=n(53438),s=n(902),u=n(50012);const c=e=>`docs-preferred-version-${e}`,d={save:(e,t,n)=>{(0,u.WA)(c(e),{persistence:t}).set(n)},read:(e,t)=>(0,u.WA)(c(e),{persistence:t}).get(),clear:(e,t)=>{(0,u.WA)(c(e),{persistence:t}).del()}},f=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const p=r.createContext(null);function h(){const e=(0,a.useAllDocsData)(),t=(0,i.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[o,l]=(0,r.useState)((()=>f(n)));(0,r.useEffect)((()=>{l(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function a(e){const t=d.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(d.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){d.save(e,t,n),l((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function m(e){let{children:t}=e;const n=h();return r.createElement(p.Provider,{value:n},t)}function g(e){let{children:t}=e;return l.cE?r.createElement(m,null,t):r.createElement(r.Fragment,null,t)}function v(){const e=(0,r.useContext)(p);if(!e)throw new s.i6("DocsPreferredVersionContextProvider");return e}function b(e){void 0===e&&(e=o.m);const t=(0,a.useDocsData)(e),[n,i]=v(),{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])}}function y(){const e=(0,a.useAllDocsData)(),[t]=v();function n(n){const r=e[n],{preferredVersionName:a}=t[n];return r.versions.find((e=>e.name===a))??null}const r=Object.keys(e);return Object.fromEntries(r.map((e=>[e,n(e)])))}},1116:(e,t,n)=>{"use strict";n.d(t,{V:()=>s,b:()=>l});var r=n(67294),a=n(902);const o=Symbol("EmptyContext"),i=r.createContext(o);function l(e){let{children:t,name:n,items:a}=e;const o=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return r.createElement(i.Provider,{value:o},t)}function s(){const e=(0,r.useContext)(i);if(e===o)throw new a.i6("DocsSidebarProvider");return e}},74477:(e,t,n)=>{"use strict";n.d(t,{E:()=>l,q:()=>i});var r=n(67294),a=n(902);const o=r.createContext(null);function i(e){let{children:t,version:n}=e;return r.createElement(o.Provider,{value:n},t)}function l(){const e=(0,r.useContext)(o);if(null===e)throw new a.i6("DocsVersionProvider");return e}},93163:(e,t,n)=>{"use strict";n.d(t,{M:()=>d,e:()=>f});var r=n(67294),a=n(13102),o=n(87524),i=n(91980),l=n(86668),s=n(902);const u=r.createContext(void 0);function c(){const e=function(){const e=(0,a.HY)(),{items:t}=(0,l.L)().navbar;return 0===t.length&&!e.component}(),t=(0,o.i)(),n=!e&&"mobile"===t,[s,u]=(0,r.useState)(!1);(0,i.Rb)((()=>{if(s)return u(!1),!1}));const c=(0,r.useCallback)((()=>{u((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&u(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:c,shown:s})),[e,n,c,s])}function d(e){let{children:t}=e;const n=c();return r.createElement(u.Provider,{value:n},t)}function f(){const e=r.useContext(u);if(void 0===e)throw new s.i6("NavbarMobileSidebarProvider");return e}},13102:(e,t,n)=>{"use strict";n.d(t,{HY:()=>l,Zo:()=>s,n2:()=>i});var r=n(67294),a=n(902);const o=r.createContext(null);function i(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return r.createElement(o.Provider,{value:n},t)}function l(){const e=(0,r.useContext)(o);if(!e)throw new a.i6("NavbarSecondaryMenuContentProvider");return e[0]}function s(e){let{component:t,props:n}=e;const i=(0,r.useContext)(o);if(!i)throw new a.i6("NavbarSecondaryMenuContentProvider");const[,l]=i,s=(0,a.Ql)(n);return(0,r.useEffect)((()=>{l({component:t,props:s})}),[l,t,s]),(0,r.useEffect)((()=>()=>l({component:null,props:null})),[l]),null}},2730:(e,t,n)=>{"use strict";n.d(t,{a:()=>i});var r=n(67294),a=n(12466),o=n(85936);function i(e){let{threshold:t}=e;const[n,i]=(0,r.useState)(!1),l=(0,r.useRef)(!1),{startScroll:s,cancelScroll:u}=(0,a.Ct)();return(0,a.RF)(((e,n)=>{let{scrollY:r}=e;const a=n?.scrollY;a&&(l.current?l.current=!1:r>=a?(u(),i(!1)):r<t?i(!1):r+window.innerHeight<document.documentElement.scrollHeight&&i(!0))})),(0,o.S)((e=>{e.location.hash&&(l.current=!0,i(!1))})),{shown:n,scrollToTop:()=>s(0)}}},19727:(e,t,n)=>{"use strict";n.d(t,{h:()=>a,t:()=>o});var r=n(67294);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)}}),[])}},69800:(e,t,n)=>{"use strict";n.d(t,{N:()=>a});var r=n(67294);function a(e){void 0===e&&(e=!0),(0,r.useEffect)((()=>(document.body.style.overflow=e?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[e])}},66412:(e,t,n)=>{"use strict";n.d(t,{p:()=>o});var r=n(92949),a=n(86668);function o(){const{prism:e}=(0,a.L)(),{colorMode:t}=(0,r.I)(),n=e.theme,o=e.darkTheme||n;return"dark"===t?o:n}},96841:(e,t,n)=>{"use strict";n.d(t,{S:()=>s});var r=n(67294),a=n(86668);function o(e){const t=e.getBoundingClientRect();return t.top===t.bottom?o(e.parentNode):t}function i(e,t){let{anchorTopOffset:n}=t;const r=e.find((e=>o(e).top>=n));if(r){return function(e){return e.top>0&&e.bottom<window.innerHeight/2}(o(r))?r:e[e.indexOf(r)-1]??null}return e[e.length-1]??null}function l(){const e=(0,r.useRef)(0),{navbar:{hideOnScroll:t}}=(0,a.L)();return(0,r.useEffect)((()=>{e.current=t?0:document.querySelector(".navbar").clientHeight}),[t]),e}function s(e){const t=(0,r.useRef)(void 0),n=l();(0,r.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:r,linkActiveClassName:a,minHeadingLevel:o,maxHeadingLevel:l}=e;function s(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(r),s=function(e){let{minHeadingLevel:t,maxHeadingLevel:n}=e;const r=[];for(let a=t;a<=n;a+=1)r.push(`h${a}.anchor`);return Array.from(document.querySelectorAll(r.join()))}({minHeadingLevel:o,maxHeadingLevel:l}),u=i(s,{anchorTopOffset:n.current}),c=e.find((e=>u&&u.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,n){n?(t.current&&t.current!==e&&t.current.classList.remove(a),e.classList.add(a),t.current=e):e.classList.remove(a)}(e,e===c)}))}return document.addEventListener("scroll",s),document.addEventListener("resize",s),s(),()=>{document.removeEventListener("scroll",s),document.removeEventListener("resize",s)}}),[e,n])}},87524:(e,t,n)=>{"use strict";n.d(t,{i:()=>u});var r=n(67294),a=n(10412);const o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function l(){return a.default.canUseDOM?window.innerWidth>i?o.desktop:o.mobile:o.ssr}const s=!1;function u(){const[e,t]=(0,r.useState)((()=>s?"ssr":l()));return(0,r.useEffect)((()=>{function e(){t(l())}const n=s?window.setTimeout(e,1e3):void 0;return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e),clearTimeout(n)}}),[]),e}},82818:(e,t,n)=>{"use strict";n.r(t),n.d(t,{Collapsible:()=>C,ErrorBoundaryError:()=>G.aG,ErrorBoundaryTryAgainButton:()=>G.Cw,ErrorCauseBoundary:()=>G.QW,HtmlClassNameProvider:()=>D.FG,NavbarSecondaryMenuFiller:()=>N.Zo,PageMetadata:()=>D.d,ReactContextError:()=>O.i6,SkipToContentFallbackId:()=>W.u,SkipToContentLink:()=>W.l,ThemeClassNames:()=>T.k,composeProviders:()=>O.Qc,createStorageSlot:()=>a.WA,duplicates:()=>U.l,filterDocCardListItems:()=>i.MN,isMultiColumnFooterLinks:()=>z.a,isRegexpStringMatch:()=>$,listStorageKeys:()=>a._f,listTagsByLetters:()=>R,prefersReducedMotion:()=>g.n,processAdmonitionProps:()=>q,translateTagsPageTitle:()=>L,uniq:()=>U.j,useCollapsible:()=>b,useColorMode:()=>P.I,useContextualSearchFilters:()=>o._q,useCurrentSidebarCategory:()=>i.jA,useDocsPreferredVersion:()=>V.J,useEvent:()=>O.zX,useIsomorphicLayoutEffect:()=>O.LI,usePluralForm:()=>p,usePrevious:()=>O.D9,usePrismTheme:()=>H.p,useSearchLinkCreator:()=>B,useSearchQueryString:()=>F,useStorageSlot:()=>a.Nk,useThemeConfig:()=>r.L,useWindowSize:()=>I.i});var r=n(86668),a=n(50012),o=n(43320),i=n(53438),l=n(67294),s=n(52263);const u=["zero","one","two","few","many","other"];function c(e){return u.filter((t=>e.includes(t)))}const d={locale:"en",pluralForms:c(["one","other"]),select:e=>1===e?"one":"other"};function f(){const{i18n:{currentLocale:e}}=(0,s.default)();return(0,l.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:c(t.resolvedOptions().pluralCategories),select:e=>t.select(e)}}(e)}catch(t){return console.error(`Failed to use Intl.PluralRules for locale "${e}".\nDocusaurus will fallback to the default (English) implementation.\nError: ${t.message}\n`),d}}),[e])}function p(){const e=f();return{selectMessage:(t,n)=>function(e,t,n){const r=e.split("|");if(1===r.length)return r[0];r.length>n.pluralForms.length&&console.error(`For locale=${n.locale}, a maximum of ${n.pluralForms.length} plural forms are expected (${n.pluralForms.join(",")}), but the message contains ${r.length}: ${e}`);const a=n.select(t),o=n.pluralForms.indexOf(a);return r[Math.min(o,r.length-1)]}(n,t,e)}}var h=n(87462),m=n(10412),g=n(91442);const v="ease-in-out";function b(e){let{initialState:t}=e;const[n,r]=(0,l.useState)(t??!1),a=(0,l.useCallback)((()=>{r((e=>!e))}),[]);return{collapsed:n,setCollapsed:r,toggleCollapsed:a}}const y={display:"none",overflow:"hidden",height:"0px"},w={display:"block",overflow:"visible",height:"auto"};function x(e,t){const n=t?y:w;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function k(e){let{collapsibleRef:t,collapsed:n,animation:r}=e;const a=(0,l.useRef)(!1);(0,l.useEffect)((()=>{const e=t.current;function o(){const t=e.scrollHeight,n=r?.duration??function(e){if((0,g.n)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${r?.easing??v}`,height:`${t}px`}}function i(){const t=o();e.style.transition=t.transition,e.style.height=t.height}if(!a.current)return x(e,n),void(a.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(i(),requestAnimationFrame((()=>{e.style.height=y.height,e.style.overflow=y.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{i()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,r])}function _(e){if(!m.default.canUseDOM)return e?y:w}function E(e){let{as:t="div",collapsed:n,children:r,animation:a,onCollapseTransitionEnd:o,className:i,disableSSRStyle:s}=e;const u=(0,l.useRef)(null);return k({collapsibleRef:u,collapsed:n,animation:a}),l.createElement(t,{ref:u,style:s?void 0:_(n),onTransitionEnd:e=>{"height"===e.propertyName&&(x(u.current,n),o?.(n))},className:i},r)}function S(e){let{collapsed:t,...n}=e;const[r,a]=(0,l.useState)(!t),[o,i]=(0,l.useState)(t);return(0,l.useLayoutEffect)((()=>{t||a(!0)}),[t]),(0,l.useLayoutEffect)((()=>{r&&i(t)}),[r,t]),r?l.createElement(E,(0,h.Z)({},n,{collapsed:o})):null}function C(e){let{lazy:t,...n}=e;const r=t?S:E;return l.createElement(r,n)}var T=n(35281),O=n(902),D=n(10833),P=n(92949),N=n(13102),I=n(87524),A=n(95999);const L=()=>(0,A.translate)({id:"theme.tags.tagsPageTitle",message:"Tags",description:"The title of the tag list page"});function R(e){const t={};return Object.values(e).forEach((e=>{const n=function(e){return e[0].toUpperCase()}(e.label);t[n]??=[],t[n].push(e)})),Object.entries(t).sort(((e,t)=>{let[n]=e,[r]=t;return n.localeCompare(r)})).map((e=>{let[t,n]=e;return{letter:t,tags:n.sort(((e,t)=>e.label.localeCompare(t.label)))}}))}var j=n(91980);const M="q";function F(){return(0,j.Nc)(M)}function B(){const{siteConfig:{baseUrl:e,themeConfig:t}}=(0,s.default)(),{algolia:{searchPagePath:n}}=t;return(0,l.useCallback)((t=>`${e}${n}?${M}=${encodeURIComponent(t)}`),[e,n])}var z=n(42489);function $(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var U=n(67392),H=n(66412),V=n(60373);function q(e){const{mdxAdmonitionTitle:t,rest:n}=function(e){const t=l.Children.toArray(e),n=t.find((e=>l.isValidElement(e)&&"mdxAdmonitionTitle"===e.props?.mdxType)),r=l.createElement(l.Fragment,null,t.filter((e=>e!==n)));return{mdxAdmonitionTitle:n?.props.children,rest:r}}(e.children),r=e.title??t;return{...e,...r&&{title:r},children:n}}var W=n(55225),G=n(69690)},91338:(e,t,n)=>{"use strict";n.r(t),n.d(t,{AnnouncementBarProvider:()=>h.pl,BlogPostProvider:()=>d,Collapsible:()=>r.Collapsible,ColorModeProvider:()=>k.S,DEFAULT_SEARCH_TAG:()=>S.HX,DocProvider:()=>l.b,DocSidebarItemsExpandedStateProvider:()=>a.D,DocsPreferredVersionContextProvider:()=>p.L5,DocsSidebarProvider:()=>i.b,DocsVersionProvider:()=>o.q,ErrorBoundaryError:()=>r.ErrorBoundaryError,ErrorBoundaryTryAgainButton:()=>r.ErrorBoundaryTryAgainButton,ErrorCauseBoundary:()=>r.ErrorCauseBoundary,HtmlClassNameProvider:()=>r.HtmlClassNameProvider,NavbarProvider:()=>B,NavbarSecondaryMenuFiller:()=>r.NavbarSecondaryMenuFiller,PageMetadata:()=>r.PageMetadata,PluginHtmlClassNameProvider:()=>j.VC,ReactContextError:()=>r.ReactContextError,ScrollControllerProvider:()=>L.OC,SkipToContentFallbackId:()=>r.SkipToContentFallbackId,SkipToContentLink:()=>r.SkipToContentLink,ThemeClassNames:()=>r.ThemeClassNames,composeProviders:()=>r.composeProviders,containsLineNumbers:()=>E.nt,createStorageSlot:()=>r.createStorageSlot,docVersionSearchTag:()=>S.os,duplicates:()=>r.duplicates,filterDocCardListItems:()=>r.filterDocCardListItems,findFirstCategoryLink:()=>C.Wl,findSidebarCategory:()=>C.em,getPrismCssVariables:()=>E.QC,isActiveSidebarItem:()=>C._F,isDocsPluginEnabled:()=>C.cE,isMultiColumnFooterLinks:()=>r.isMultiColumnFooterLinks,isRegexpStringMatch:()=>r.isRegexpStringMatch,isSamePath:()=>R.Mg,keyboardFocusedClassName:()=>U.h,listStorageKeys:()=>r.listStorageKeys,listTagsByLetters:()=>r.listTagsByLetters,parseCodeBlockTitle:()=>E.bc,parseLanguage:()=>E.Vo,parseLines:()=>E.nZ,prefersReducedMotion:()=>r.prefersReducedMotion,processAdmonitionProps:()=>r.processAdmonitionProps,splitNavbarItems:()=>F,translateTagsPageTitle:()=>r.translateTagsPageTitle,uniq:()=>r.uniq,useAlternatePageUtils:()=>_.l,useAnnouncementBar:()=>h.nT,useBackToTopButton:()=>G.a,useBlogPost:()=>f,useCodeWordWrap:()=>W,useCollapsible:()=>r.useCollapsible,useColorMode:()=>r.useColorMode,useContextualSearchFilters:()=>r.useContextualSearchFilters,useCurrentSidebarCategory:()=>r.useCurrentSidebarCategory,useDoc:()=>l.k,useDocById:()=>C.xz,useDocRouteMetadata:()=>C.hI,useDocSidebarItemsExpandedState:()=>a.f,useDocsPreferredVersion:()=>r.useDocsPreferredVersion,useDocsPreferredVersionByPluginId:()=>p.Oh,useDocsSidebar:()=>i.V,useDocsVersion:()=>o.E,useDocsVersionCandidates:()=>C.lO,useEvent:()=>r.useEvent,useFilteredAndTreeifiedTOC:()=>A.b,useHideableNavbar:()=>$,useHistoryPopHandler:()=>I.Rb,useHistorySelector:()=>I.xL,useHomePageRoute:()=>R.Ns,useIsomorphicLayoutEffect:()=>r.useIsomorphicLayoutEffect,useKeyboardNavigation:()=>U.t,useLayoutDoc:()=>C.vY,useLayoutDocsSidebar:()=>C.oz,useLocalPathname:()=>N,useLocationChange:()=>O.S,useLockBodyScroll:()=>H.N,useNavbarMobileSidebar:()=>g.e,useNavbarSecondaryMenu:()=>x,usePluralForm:()=>r.usePluralForm,usePrevious:()=>r.usePrevious,usePrismTheme:()=>r.usePrismTheme,useQueryStringValue:()=>I._X,useScrollController:()=>L.sG,useScrollPosition:()=>L.RF,useScrollPositionBlocker:()=>L.o5,useSearchLinkCreator:()=>r.useSearchLinkCreator,useSearchQueryString:()=>r.useSearchQueryString,useSidebarBreadcrumbs:()=>C.s1,useSmoothScrollTo:()=>L.Ct,useStorageSlot:()=>r.useStorageSlot,useTOCHighlight:()=>z.S,useTabs:()=>m.Y,useThemeConfig:()=>r.useThemeConfig,useTitleFormatter:()=>T.p,useTreeifiedTOC:()=>A.a,useWindowSize:()=>r.useWindowSize});var r=n(82818),a=n(14353),o=n(74477),i=n(1116),l=n(65130),s=n(67294),u=n(902);const c=s.createContext(null);function d(e){let{children:t,content:n,isBlogPostPage:r=!1}=e;const a=function(e){let{content:t,isBlogPostPage:n}=e;return(0,s.useMemo)((()=>({metadata:t.metadata,frontMatter:t.frontMatter,assets:t.assets,toc:t.toc,isBlogPostPage:n})),[t,n])}({content:n,isBlogPostPage:r});return s.createElement(c.Provider,{value:a},t)}function f(){const e=(0,s.useContext)(c);if(null===e)throw new u.i6("BlogPostProvider");return e}var p=n(60373),h=n(59689),m=n(70989),g=n(93163),v=n(13102);const b=s.createContext(null);function y(e){let{children:t}=e;const n=function(){const e=(0,g.e)(),t=(0,v.HY)(),[n,r]=(0,s.useState)(!1),a=null!==t.component,o=(0,u.D9)(a);return(0,s.useEffect)((()=>{a&&!o&&r(!0)}),[a,o]),(0,s.useEffect)((()=>{a?e.shown||r(!0):r(!1)}),[e.shown,a]),(0,s.useMemo)((()=>[n,r]),[n])}();return s.createElement(b.Provider,{value:n},t)}function w(e){if(e.component){const t=e.component;return s.createElement(t,e.props)}}function x(){const e=(0,s.useContext)(b);if(!e)throw new u.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,r=(0,s.useCallback)((()=>n(!1)),[n]),a=(0,v.HY)();return(0,s.useMemo)((()=>({shown:t,hide:r,content:w(a)})),[r,a,t])}var k=n(92949),_=n(94711),E=n(37016),S=n(43320),C=n(53438),T=n(82128),O=n(85936),D=n(16550),P=n(52263);function N(){const{siteConfig:{baseUrl:e}}=(0,P.default)(),{pathname:t}=(0,D.TH)();return t.replace(e,"/")}var I=n(91980),A=n(39665),L=n(12466),R=n(48596),j=n(10833);const M="right";function F(e){function t(e){return"left"===(e.position??M)}return[e.filter(t),e.filter((e=>!t(e)))]}function B(e){let{children:t}=e;return s.createElement(v.n2,null,s.createElement(g.M,null,s.createElement(y,null,t)))}var z=n(96841);function $(e){const[t,n]=(0,s.useState)(e),r=(0,s.useRef)(!1),a=(0,s.useRef)(0),o=(0,s.useCallback)((e=>{null!==e&&(a.current=e.getBoundingClientRect().height)}),[]);return(0,L.RF)(((t,o)=>{let{scrollY:i}=t;if(!e)return;if(i<a.current)return void n(!0);if(r.current)return void(r.current=!1);const l=o?.scrollY,s=document.documentElement.scrollHeight-a.current,u=window.innerHeight;l&&i>=l?n(!1):i+u<s&&n(!0)})),(0,O.S)((t=>{if(!e)return;const a=t.location.hash;if(a?document.getElementById(a.substring(1)):void 0)return r.current=!0,void n(!1);n(!0)})),{navbarRef:o,isNavbarVisible:t}}var U=n(19727),H=n(69800);const V={attributes:!0,characterData:!0,childList:!0,subtree:!0};function q(e,t){const[n,r]=(0,s.useState)(),a=(0,s.useCallback)((()=>{r(e.current?.closest("[role=tabpanel][hidden]"))}),[e,r]);(0,s.useEffect)((()=>{a()}),[a]),function(e,t,n){void 0===n&&(n=V);const r=(0,u.zX)(t),a=(0,u.Ql)(n);(0,s.useEffect)((()=>{const t=new MutationObserver(r);return e&&t.observe(e,a),()=>t.disconnect()}),[e,r,a])}(n,(e=>{e.forEach((e=>{"attributes"===e.type&&"hidden"===e.attributeName&&(t(),a())}))}),{attributes:!0,characterData:!1,childList:!1,subtree:!1})}function W(){const[e,t]=(0,s.useState)(!1),[n,r]=(0,s.useState)(!1),a=(0,s.useRef)(null),o=(0,s.useCallback)((()=>{const n=a.current.querySelector("code");e?n.removeAttribute("style"):(n.style.whiteSpace="pre-wrap",n.style.overflowWrap="anywhere"),t((e=>!e))}),[a,e]),i=(0,s.useCallback)((()=>{const{scrollWidth:e,clientWidth:t}=a.current,n=e>t||a.current.querySelector("code").hasAttribute("style");r(n)}),[a]);return q(a,i),(0,s.useEffect)((()=>{i()}),[e,i]),(0,s.useEffect)((()=>(window.addEventListener("resize",i,{passive:!0}),()=>{window.removeEventListener("resize",i)})),[i]),{codeBlockRef:a,isEnabled:e,isCodeScrollable:n,toggle:o}}var G=n(2730)},35281:(e,t,n)=>{"use strict";n.d(t,{k:()=>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",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:{}}},91442:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{n:()=>r})},37016:(e,t,n)=>{"use strict";n.d(t,{QC:()=>p,Vo:()=>d,bc:()=>u,nZ:()=>f,nt:()=>c});var r=n(87594),a=n.n(r);const o=/title=(?<quote>["'])(?<title>.*?)\1/,i=/\{(?<range>[\d,-]+)\}/,l={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},bash:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}};function s(e,t){const n=e.map((e=>{const{start:n,end:r}=l[e];return`(?:${n}\\s*(${t.flatMap((e=>[e.line,e.block?.start,e.block?.end].filter(Boolean))).join("|")})\\s*${r})`})).join("|");return new RegExp(`^\\s*(?:${n})\\s*$`)}function u(e){return e?.match(o)?.groups.title??""}function c(e){return Boolean(e?.includes("showLineNumbers"))}function d(e){const t=e.split(" ").find((e=>e.startsWith("language-")));return t?.replace(/language-/,"")}function f(e,t){let n=e.replace(/\n$/,"");const{language:r,magicComments:o,metastring:u}=t;if(u&&i.test(u)){const e=u.match(i).groups.range;if(0===o.length)throw new Error(`A highlight range has been given in code block's metastring (\`\`\` ${u}), but no magic comment config is available. Docusaurus applies the first magic comment entry's className for metastring ranges.`);const t=o[0].className,r=a()(e).filter((e=>e>0)).map((e=>[e-1,[t]]));return{lineClassNames:Object.fromEntries(r),code:n}}if(void 0===r)return{lineClassNames:{},code:n};const c=function(e,t){switch(e){case"js":case"javascript":case"ts":case"typescript":return s(["js","jsBlock"],t);case"jsx":case"tsx":return s(["js","jsBlock","jsx"],t);case"html":return s(["js","jsBlock","html"],t);case"python":case"py":case"bash":return s(["bash"],t);case"markdown":case"md":return s(["html","jsx","bash"],t);default:return s(Object.keys(l),t)}}(r,o),d=n.split("\n"),f=Object.fromEntries(o.map((e=>[e.className,{start:0,range:""}]))),p=Object.fromEntries(o.filter((e=>e.line)).map((e=>{let{className:t,line:n}=e;return[n,t]}))),h=Object.fromEntries(o.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.start,t]}))),m=Object.fromEntries(o.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.end,t]})));for(let a=0;a<d.length;){const e=d[a].match(c);if(!e){a+=1;continue}const t=e.slice(1).find((e=>void 0!==e));p[t]?f[p[t]].range+=`${a},`:h[t]?f[h[t]].start=a:m[t]&&(f[m[t]].range+=`${f[m[t]].start}-${a-1},`),d.splice(a,1)}n=d.join("\n");const g={};return Object.entries(f).forEach((e=>{let[t,{range:n}]=e;a()(n).forEach((e=>{g[e]??=[],g[e].push(t)}))})),{lineClassNames:g,code:n}}function p(e){const t={color:"--prism-color",backgroundColor:"--prism-background-color"},n={};return Object.entries(e.plain).forEach((e=>{let[r,a]=e;const o=t[r];o&&"string"==typeof a&&(n[o]=a)})),n}},53438:(e,t,n)=>{"use strict";n.d(t,{MN:()=>C,Wl:()=>m,_F:()=>y,cE:()=>f,em:()=>h,hI:()=>S,jA:()=>g,lO:()=>k,oz:()=>_,s1:()=>x,vY:()=>E,xz:()=>p});var r=n(67294),a=n(16550),o=n(18790),i=n(80143),l=n(60373),s=n(74477),u=n(1116),c=n(67392),d=n(48596);const f=!!i.useAllDocsData;function p(e){const t=(0,s.E)();if(!e)return;const n=t.docs[e];if(!n)throw new Error(`no version doc found by id=${e}`);return n}function h(e,t){for(const n of e)if("category"===n.type){if(t(n))return n;const e=h(n.items,t);if(e)return e}}function m(e){if(e.href)return e.href;for(const t of e.items){if("link"===t.type)return t.href;if("category"===t.type){const e=m(t);if(e)return e}}}function g(){const{pathname:e}=(0,a.TH)(),t=(0,u.V)();if(!t)throw new Error("Unexpected: cant find current sidebar in context");const n=w({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 v=(e,t)=>void 0!==e&&(0,d.Mg)(e,t),b=(e,t)=>e.some((e=>y(e,t)));function y(e,t){return"link"===e.type?v(e.href,t):"category"===e.type&&(v(e.href,t)||b(e.items,t))}function w(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.Mg)(o.href,n)||e(o.items))||"link"===o.type&&(0,d.Mg)(o.href,n)){return r&&"category"!==o.type||a.unshift(o),!0}return!1}(t),a}function x(){const e=(0,u.V)(),{pathname:t}=(0,a.TH)(),n=(0,i.useActivePlugin)()?.pluginData.breadcrumbs;return!1!==n&&e?w({sidebarItems:e.items,pathname:t}):null}function k(e){const{activeVersion:t}=(0,i.useActiveDocContext)(e),{preferredVersion:n}=(0,l.J)(e),a=(0,i.useLatestVersion)(e);return(0,r.useMemo)((()=>(0,c.j)([t,n,a].filter(Boolean))),[t,n,a])}function _(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return r[1]}),[e,n])}function E(e,t){const n=k(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- ${(0,c.j)(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function S(e){let{route:t,versionMetadata:n}=e;const r=(0,a.TH)(),i=t.routes,l=i.find((e=>(0,a.LX)(r.pathname,e)));if(!l)return null;const s=l.sidebar,u=s?n.docsSidebars[s]:void 0;return{docElement:(0,o.H)(i),sidebarName:s,sidebarItems:u}}function C(e){return e.filter((e=>"category"!==e.type||!!m(e)))}},69690:(e,t,n)=>{"use strict";n.d(t,{aG:()=>u,Cw:()=>s,QW:()=>c});var r=n(87462),a=n(67294),o=n(95999),i=n(18780);const l={errorBoundaryError:"errorBoundaryError_a6uf"};function s(e){return a.createElement("button",(0,r.Z)({type:"button"},e),a.createElement(o.default,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error"},"Try again"))}function u(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return a.createElement("p",{className:l.errorBoundaryError},n)}class c extends a.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}},42489:(e,t,n)=>{"use strict";function r(e){return"title"in e[0]}n.d(t,{a:()=>r})},82128:(e,t,n)=>{"use strict";n.d(t,{p:()=>a});var r=n(52263);function a(e){const{siteConfig:t}=(0,r.default)(),{title:n,titleDelimiter:a}=t;return e?.trim().length?`${e.trim()} ${a} ${n}`:n}},91980:(e,t,n)=>{"use strict";n.d(t,{Nc:()=>c,Rb:()=>l,_X:()=>u,xL:()=>s});var r=n(67294),a=n(16550),o=n(61688),i=n(902);function l(e){!function(e){const t=(0,a.k6)(),n=(0,i.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}function s(e){const t=(0,a.k6)();return(0,o.useSyncExternalStore)(t.listen,(()=>e(t)),(()=>e(t)))}function u(e){return s((t=>null===e?null:new URLSearchParams(t.location.search).get(e)))}function c(e){const t=u(e)??"",n=function(){const e=(0,a.k6)();return(0,r.useCallback)(((t,n,r)=>{const a=new URLSearchParams(e.location.search);n?a.set(t,n):a.delete(t),(r?.push?e.push:e.replace)({search:a.toString()})}),[e])}();return[t,(0,r.useCallback)(((t,r)=>{n(e,t,r)}),[n,e])]}},67392:(e,t,n)=>{"use strict";function r(e,t){return void 0===t&&(t=(e,t)=>e===t),e.filter(((n,r)=>e.findIndex((e=>t(e,n)))!==r))}function a(e){return Array.from(new Set(e))}n.d(t,{j:()=>a,l:()=>r})},10833:(e,t,n)=>{"use strict";n.d(t,{FG:()=>f,d:()=>c,VC:()=>p});var r=n(67294),a=n(86010),o=n(35742),i=n(30226);function l(){const e=r.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var s=n(44996),u=n(82128);function c(e){let{title:t,description:n,keywords:a,image:i,children:l}=e;const c=(0,u.p)(t),{withBaseUrl:d}=(0,s.useBaseUrlUtils)(),f=i?d(i,{absolute:!0}):void 0;return r.createElement(o.Z,null,t&&r.createElement("title",null,c),t&&r.createElement("meta",{property:"og:title",content:c}),n&&r.createElement("meta",{name:"description",content:n}),n&&r.createElement("meta",{property:"og:description",content:n}),a&&r.createElement("meta",{name:"keywords",content:Array.isArray(a)?a.join(","):a}),f&&r.createElement("meta",{property:"og:image",content:f}),f&&r.createElement("meta",{name:"twitter:image",content:f}),l)}const d=r.createContext(void 0);function f(e){let{className:t,children:n}=e;const i=r.useContext(d),l=(0,a.default)(i,t);return r.createElement(d.Provider,{value:l},r.createElement(o.Z,null,r.createElement("html",{className:l})),n)}function p(e){let{children:t}=e;const n=l(),o=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const i=`plugin-id-${n.plugin.id}`;return r.createElement(f,{className:(0,a.default)(o,i)},t)}},902:(e,t,n)=>{"use strict";n.d(t,{D9:()=>i,LI:()=>a,Qc:()=>u,Ql:()=>s,i6:()=>l,zX:()=>o});var r=n(67294);const a=n(10412).default.canUseDOM?r.useLayoutEffect:r.useEffect;function o(e){const t=(0,r.useRef)(e);return a((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function i(e){const t=(0,r.useRef)();return a((()=>{t.current=e})),t.current}class l extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?<name>\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function s(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 r.createElement(r.Fragment,null,e.reduceRight(((e,t)=>r.createElement(t,null,e)),n))}}},48596:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>i,Ns:()=>l});var r=n(67294),a=n(723),o=n(52263);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.default)().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.Z,baseUrl:e})),[e])}},12466:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>p,OC:()=>s,RF:()=>d,o5:()=>f,sG:()=>u});var r=n(67294),a=n(10412),o=n(72389),i=n(902);const l=r.createContext(void 0);function s(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 r.createElement(l.Provider,{value:n},t)}function u(){const e=(0,r.useContext)(l);if(null==e)throw new i.i6("ScrollControllerProvider");return e}const c=()=>a.default.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function d(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=u(),a=(0,r.useRef)(c()),o=(0,i.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=c();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 f(){const e=u(),t=function(){const e=(0,r.useRef)({elem:null,top:0}),t=(0,r.useCallback)((t=>{e.current={elem:t,top:t.getBoundingClientRect().top}}),[]),n=(0,r.useCallback)((()=>{const{current:{elem:t,top:n}}=e;if(!t)return{restored:!1};const r=t.getBoundingClientRect().top-n;return r&&window.scrollBy({left:0,top:r}),e.current={elem:null,top:0},{restored:0!==r}}),[]);return(0,r.useMemo)((()=>({save:t,restore:n})),[n,t])}(),n=(0,r.useRef)(void 0),a=(0,r.useCallback)((r=>{t.save(r),e.disableScrollEvents(),n.current=()=>{const{restored:r}=t.restore();if(n.current=void 0,r){const t=()=>{e.enableScrollEvents(),window.removeEventListener("scroll",t)};window.addEventListener("scroll",t)}else e.enableScrollEvents()}}),[e,t]);return(0,r.useLayoutEffect)((()=>{queueMicrotask((()=>n.current?.()))})),{blockElementScrollPositionUntilNextRender:a}}function p(){const e=(0,r.useRef)(null),t=(0,o.default)()&&"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&&a<e)&&(t=requestAnimationFrame(r),window.scrollTo(0,Math.floor(.85*(a-e))+e))}(),()=>t&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},43320:(e,t,n)=>{"use strict";n.d(t,{HX:()=>i,_q:()=>s,os:()=>l});var r=n(80143),a=n(52263),o=n(60373);const i="default";function l(e,t){return`docs-${e}-${t}`}function s(){const{i18n:e}=(0,a.default)(),t=(0,r.useAllDocsData)(),n=(0,r.useActivePluginAndVersion)(),s=(0,o.Oh)();const u=[i,...Object.keys(t).map((function(e){const r=n?.activePlugin.pluginId===e?n.activeVersion:void 0,a=s[e],o=t[e].versions.find((e=>e.isLast));return l(e,(r??a??o).name)}))];return{locale:e.currentLocale,tags:u}}},55225:(e,t,n)=>{"use strict";n.d(t,{l:()=>f,u:()=>s});var r=n(87462),a=n(67294),o=n(16550),i=n(95999),l=n(85936);const s="__docusaurus_skipToContent_fallback";function u(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function c(){const e=(0,a.useRef)(null),{action:t}=(0,o.k6)(),n=(0,a.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(s);t&&u(t)}),[]);return(0,l.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&u(e.current)})),{containerRef:e,onClick:n}}const d=(0,i.translate)({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 f(e){const t=e.children??d,{containerRef:n,onClick:o}=c();return a.createElement("div",{ref:n,role:"region","aria-label":d},a.createElement("a",(0,r.Z)({},e,{href:`#${s}`,onClick:o}),t))}},50012:(e,t,n)=>{"use strict";n.d(t,{Nk:()=>d,WA:()=>c,_f:()=>f});var r=n(67294),a=n(61688);const o="localStorage";function i(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 l(e){if(void 0===e&&(e=o),"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,s||(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),s=!0),null}var t}let s=!1;const u={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function c(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=l(t?.persistence);return null===n?u:{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),i({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),i({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),()=>{}}}}}function d(e,t){const n=(0,r.useRef)((()=>null===e?u:c(e,t))).current(),o=(0,r.useCallback)((e=>"undefined"==typeof window?()=>{}:n.listen(e)),[n]);return[(0,a.useSyncExternalStore)(o,(()=>"undefined"==typeof window?null:n.get()),(()=>null)),n]}function f(e){void 0===e&&(e=o);const t=l(e);if(!t)return[];const n=[];for(let r=0;r<t.length;r+=1){const e=t.key(r);null!==e&&n.push(e)}return n}},70989:(e,t,n)=>{"use strict";n.d(t,{Y:()=>f});var r=n(67294),a=n(16550),o=n(91980),i=n(67392),l=n(50012);function s(e){return function(e){return r.Children.map(e,(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:a}}=e;return{value:t,label:n,attributes:r,default:a}}))}function u(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??s(n);return function(e){const t=(0,i.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[t,n])}function c(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function d(e){let{queryString:t=!1,groupId:n}=e;const i=(0,a.k6)(),l=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,o._X)(l),(0,r.useCallback)((e=>{if(!l)return;const t=new URLSearchParams(i.location.search);t.set(l,e),i.replace({...i.location,search:t.toString()})}),[l,i])]}function f(e){const{defaultValue:t,queryString:n=!1,groupId:a}=e,o=u(e),[i,s]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(t){if(!c({value:t,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:o}))),[f,p]=d({queryString:n,groupId:a}),[h,m]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[a,o]=(0,l.Nk)(n);return[a,(0,r.useCallback)((e=>{n&&o.set(e)}),[n,o])]}({groupId:a}),g=(()=>{const e=f??h;return c({value:e,tabValues:o})?e:null})();(0,r.useLayoutEffect)((()=>{g&&s(g)}),[g]);return{selectedValue:i,selectValue:(0,r.useCallback)((e=>{if(!c({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);s(e),p(e),m(e)}),[p,m,o]),tabValues:o}}},39665:(e,t,n)=>{"use strict";n.d(t,{a:()=>o,b:()=>l});var r=n(67294);function a(e){const t=e.map((e=>({...e,parentIndex:-1,children:[]}))),n=Array(7).fill(-1);t.forEach(((e,t)=>{const r=n.slice(2,e.level);e.parentIndex=Math.max(...r),n[e.level]=t}));const r=[];return t.forEach((e=>{const{parentIndex:n,...a}=e;n>=0?t[n].children.push(a):r.push(a)})),r}function o(e){return(0,r.useMemo)((()=>a(e)),[e])}function i(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:r}=e;return t.flatMap((e=>{const t=i({toc:e.children,minHeadingLevel:n,maxHeadingLevel:r});return function(e){return e.level>=n&&e.level<=r}(e)?[{...e,children:t}]:t}))}function l(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:o}=e;return(0,r.useMemo)((()=>i({toc:a(t),minHeadingLevel:n,maxHeadingLevel:o})),[t,n,o])}},94711:(e,t,n)=>{"use strict";n.d(t,{l:()=>o});var r=n(52263),a=n(16550);function o(){const{siteConfig:{baseUrl:e,url:t},i18n:{defaultLocale:n,currentLocale:o}}=(0,r.default)(),{pathname:i}=(0,a.TH)(),l=o===n?e:e.replace(`/${o}/`,"/"),s=i.replace(e,"");return{createUrl:function(e){let{locale:r,fullyQualified:a}=e;return`${a?t:""}${function(e){return e===n?`${l}`:`${l}${e}/`}(r)}${s}`}}}},85936:(e,t,n)=>{"use strict";n.d(t,{S:()=>i});var r=n(67294),a=n(16550),o=n(902);function i(e){const t=(0,a.TH)(),n=(0,o.D9)(t),i=(0,o.zX)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},86668:(e,t,n)=>{"use strict";n.d(t,{L:()=>a});var r=n(52263);function a(){return(0,r.default)().siteConfig.themeConfig}},8802:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[a]=e.split(/[#?]/),o="/"===a||a===r?a:(i=a,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(a,o)}},54143:(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]}},18780: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.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var a=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}});var o=n(54143);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return o.getErrorCausalChain}})},90022:(e,t,n)=>{"use strict";n.r(t),n.d(t,{fetchIndexes:()=>l,legacyFetchIndexes:()=>s});var r=n(31336),a=n.n(r),o=n(61029);const i=new Map;function l(e,t){const n=`${e}${t}`;let r=i.get(n);return r||(r=s(e,t),i.set(n,r)),r}async function s(e,t){{const n=`${e}${o.searchIndexUrl.replace("{dir}",t?`-${t.replace(/\//g,"-")}`:"")}`;if(new URL(n,location.origin).origin!==location.origin)throw new Error("Unexpected version url");const r=await(await fetch(n)).json(),i=r.map(((e,t)=>{let{documents:n,index:r}=e;return{type:t,documents:n,index:a().Index.load(r)}})),l=r.reduce(((e,t)=>{for(const n of t.index.invertedIndex)/\p{Unified_Ideograph}/u.test(n[0][0])&&e.add(n[0]);return e}),new Set);return{wrappedIndexes:i,zhDictionary:Array.from(l)}}}},98202:(e,t,n)=>{"use strict";n.r(t),n.d(t,{SearchSourceFactory:()=>s});var r=n(31336),a=n.n(r);var o=n(61029);function i(e){return l(e).concat(l(e.filter((e=>{const t=e[e.length-1];return!t.trailing&&t.maybeTyping})),!0))}function l(e,t){return e.map((e=>({tokens:e.map((e=>e.value)),term:e.map((e=>({value:e.value,presence:a().Query.presence.REQUIRED,wildcard:(t?e.trailing||e.maybeTyping:e.trailing)?a().Query.wildcard.TRAILING:a().Query.wildcard.NONE})))})))}function s(e,t,n){return function(r,l){const s=function(e,t){if(1===t.length&&["ja","jp","th"].includes(t[0]))return a()[t[0]].tokenizer(e).map((e=>e.toString()));let n=/[^-\s]+/g;return t.includes("zh")&&(n=/\w+|\p{Unified_Ideograph}+/gu),e.toLowerCase().match(n)||[]}(r,o.language);if(0===s.length)return void l([]);const u=function(e,t){const n=function(e,t){const n=[];return function e(r,a){if(0===r.length)return void n.push(a);const o=r[0];if(/\p{Unified_Ideograph}/u.test(o)){const n=function(e,t){const n=[];return function e(r,a){let o=0,i=!1;for(const l of t)if(r.substr(0,l.length)===l){const t={missed:a.missed,term:a.term.concat({value:l})};r.length>l.length?e(r.substr(l.length),t):n.push(t),i=!0}else for(let t=l.length-1;t>o;t-=1){const s=l.substr(0,t);if(r.substr(0,t)===s){o=t;const l={missed:a.missed,term:a.term.concat({value:s,trailing:!0})};r.length>t?e(r.substr(t),l):n.push(l),i=!0;break}}i||(r.length>0?e(r.substr(1),{missed:a.missed+1,term:a.term}):a.term.length>0&&n.push(a))}(e,{missed:0,term:[]}),n.sort(((e,t)=>{const n=e.missed>0?1:0,r=t.missed>0?1:0;return n!==r?n-r:e.term.length-t.term.length})).map((e=>e.term))}(o,t);for(const t of n){const n=a.concat(...t);e(r.slice(1),n)}}else{const t=a.concat({value:o});e(r.slice(1),t)}}(e,[]),n}(e,t);if(0===n.length)return[{tokens:e,term:e.map((e=>({value:e,presence:a().Query.presence.REQUIRED,wildcard:a().Query.wildcard.LEADING|a().Query.wildcard.TRAILING})))}];for(const a of n)a[a.length-1].maybeTyping=!0;const r=[];for(const i of o.language)if("en"===i)o.removeDefaultStopWordFilter||r.unshift(a().stopWordFilter);else{const e=a()[i];e.stopWordFilter&&r.unshift(e.stopWordFilter)}let l;if(r.length>0){const e=e=>r.reduce(((e,t)=>e.filter((e=>t(e.value)))),e);l=[];const t=[];for(const r of n){const n=e(r);l.push(n),n.length<r.length&&n.length>0&&t.push(n)}n.push(...t)}else l=n.slice();const s=[];for(const a of l)if(a.length>2)for(let e=a.length-1;e>=0;e-=1)s.push(a.slice(0,e).concat(a.slice(e+1)));return i(n).concat(i(s))}(s,t),c=[];e:for(const{term:t,tokens:a}of u)for(const{documents:r,index:o,type:i}of e)if(c.push(...o.query((e=>{for(const n of t)e.term(n.value,{wildcard:n.wildcard,presence:n.presence})})).slice(0,n).filter((e=>!c.some((t=>t.document.i.toString()===e.ref)))).slice(0,n-c.length).map((t=>{const n=r.find((e=>e.i.toString()===t.ref));return{document:n,type:i,page:0!==i&&e[0].documents.find((e=>e.i===n.p)),metadata:t.matchData.metadata,tokens:a,score:t.score}}))),c.length>=n)break e;!function(e){e.forEach(((e,t)=>{e.index=t})),e.sort(((t,n)=>{let r=t.type>0&&t.page?e.findIndex((e=>e.document===t.page)):t.index,a=n.type>0&&n.page?e.findIndex((e=>e.document===n.page)):n.index;return-1===r&&(r=t.index),-1===a&&(a=n.index),r===a?0===t.type?-1:0===n.type?1:t.index-n.index:r-a}))}(c),function(e){e.forEach(((t,n)=>{n>0&&t.page&&e.some((e=>e.document===t.page))&&(n<e.length-1&&e[n+1].page===t.page?t.isInterOfTree=!0:t.isLastOfTree=!0)}))}(c),l(c)}}},91073:(e,t,n)=>{"use strict";function r(e,t){const n=[];for(const r of Object.values(e))r[t]&&n.push(...r[t].position);return n.sort(((e,t)=>e[0]-t[0]||t[1]-e[1]))}n.r(t),n.d(t,{getStemmedPositions:()=>r})},67133:(e,t,n)=>{"use strict";function r(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function a(e,t,n){const o=[];for(const i of t){const n=e.toLowerCase().indexOf(i);if(n>=0){n>0&&o.push(a(e.substr(0,n),t)),o.push(`<mark>${r(e.substr(n,i.length))}</mark>`);const l=n+i.length;l<e.length&&o.push(a(e.substr(l),t));break}}return 0===o.length?n?`<mark>${r(e)}</mark>`:r(e):o.join("")}n.r(t),n.d(t,{highlightStemmed:()=>s,splitIntoChunks:()=>u});const o=/\w+|\p{Unified_Ideograph}/u;function i(e){const t=[];let n=0,r=e;for(;r.length>0;){const a=r.match(o);if(!a){t.push(r);break}a.index>0&&t.push(r.substring(0,a.index)),t.push(a[0]),n+=a.index+a[0].length,r=e.substring(n)}return t}var l=n(61029);function s(e,t,n,r){void 0===r&&(r=l.searchResultContextMaxLength);const{chunkIndex:a,chunks:o}=u(e,t,n),i=o.slice(0,a),s=o[a],c=[s.html],d=o.slice(a+1);let f=s.textLength,p=0,h=0,m=!1,g=!1;for(;f<r;)if((p<=h||0===d.length)&&i.length>0){const e=i.pop();f+e.textLength<=r?(c.unshift(e.html),p+=e.textLength,f+=e.textLength):(m=!0,i.length=0)}else{if(!(d.length>0))break;{const e=d.shift();f+e.textLength<=r?(c.push(e.html),h+=e.textLength,f+=e.textLength):(g=!0,d.length=0)}}return(m||i.length>0)&&c.unshift("\u2026"),(g||d.length>0)&&c.push("\u2026"),c.join("")}function u(e,t,n){const o=[];let l=0,s=0,u=-1;for(;l<t.length;){const[c,d]=t[l];if(l+=1,!(c<s)){if(c>s){const t=i(e.substring(s,c)).map((e=>({html:r(e),textLength:e.length})));for(const e of t)o.push(e)}-1===u&&(u=o.length),s=c+d,o.push({html:a(e.substring(c,s),n,!0),textLength:d})}}if(s<e.length){const t=i(e.substring(s)).map((e=>({html:r(e),textLength:e.length})));for(const e of t)o.push(e)}return{chunkIndex:u,chunks:o}}},61029:(e,t,n)=>{"use strict";n.r(t),n.d(t,{Mark:()=>i,docsPluginIdForPreferredVersion:()=>h,explicitSearchResultPath:()=>c,hideSearchBarWithNoSearchContext:()=>v,indexDocs:()=>m,language:()=>r,removeDefaultStemmer:()=>o,removeDefaultStopWordFilter:()=>a,searchBarPosition:()=>p,searchBarShortcut:()=>d,searchBarShortcutHint:()=>f,searchContextByPaths:()=>g,searchIndexUrl:()=>l,searchResultContextMaxLength:()=>u,searchResultLimits:()=>s});n(31336);const r=["en"],a=!1,o=!1,i=null,l="search-index{dir}.json?_=1c7ebf02",s=8,u=50,c=!1,d=!0,f=!0,p="right",h=void 0,m=!0,g=null,v=!1},86010:(e,t,n)=>{"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(n=r(e[t]))&&(a&&(a+=" "),a+=n);else for(t in e)e[t]&&(a&&(a+=" "),a+=t);return a}function a(){for(var e,t,n=0,a="";n<arguments.length;)(e=arguments[n++])&&(t=r(e))&&(a&&(a+=" "),a+=t);return a}n.r(t),n.d(t,{clsx:()=>a,default:()=>o});const o=a},20640:(e,t,n)=>{"use strict";var r=n(11742),a={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var n,o,i,l,s,u,c=!1;t||(t={}),n=t.debug||!1;try{if(i=r(),l=document.createRange(),s=document.getSelection(),(u=document.createElement("span")).textContent=e,u.ariaHidden="true",u.style.all="unset",u.style.position="fixed",u.style.top=0,u.style.clip="rect(0, 0, 0, 0)",u.style.whiteSpace="pre",u.style.webkitUserSelect="text",u.style.MozUserSelect="text",u.style.msUserSelect="text",u.style.userSelect="text",u.addEventListener("copy",(function(r){if(r.stopPropagation(),t.format)if(r.preventDefault(),void 0===r.clipboardData){n&&console.warn("unable to use e.clipboardData"),n&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var o=a[t.format]||a.default;window.clipboardData.setData(o,e)}else r.clipboardData.clearData(),r.clipboardData.setData(t.format,e);t.onCopy&&(r.preventDefault(),t.onCopy(r.clipboardData))})),document.body.appendChild(u),l.selectNodeContents(u),s.addRange(l),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");c=!0}catch(d){n&&console.error("unable to copy using execCommand: ",d),n&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),c=!0}catch(d){n&&console.error("unable to copy using clipboardData: ",d),n&&console.error("falling back to prompt"),o=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"\u2318":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:"Copy to clipboard: #{key}, Enter"),window.prompt(o,e)}}finally{s&&("function"==typeof s.removeRange?s.removeRange(l):s.removeAllRanges()),u&&document.body.removeChild(u),i()}return c}},38252:e=>{"use strict";e.exports=function e(t,n){if(t===n)return!0;if(t&&n&&"object"==typeof t&&"object"==typeof n){if(t.constructor!==n.constructor)return!1;var r,a,o;if(Array.isArray(t)){if((r=t.length)!=n.length)return!1;for(a=r;0!=a--;)if(!e(t[a],n[a]))return!1;return!0}if(t.constructor===RegExp)return t.source===n.source&&t.flags===n.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===n.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===n.toString();if((r=(o=Object.keys(t)).length)!==Object.keys(n).length)return!1;for(a=r;0!=a--;)if(!Object.prototype.hasOwnProperty.call(n,o[a]))return!1;for(a=r;0!=a--;){var i=o[a];if(("_owner"!==i||!t.$$typeof)&&!e(t[i],n[i]))return!1}return!0}return t!=t&&n!=n}},99376:(e,t)=>{var n=Object.keys;t.D=function(e,t){if(e===t)return!0;if(!(e instanceof Object&&t instanceof Object))return!1;for(var r=n(e),a=r.length,o=0;o<a;o++)if(!(r[o]in t))return!1;for(o=0;o<a;o++)if(e[r[o]]!==t[r[o]])return!1;return a===n(t).length}},42358:(e,t,n)=>{"use strict";n.d(t,{lX:()=>_,q_:()=>D,ob:()=>m,PP:()=>N,Ep:()=>h,Hp:()=>g});var r=n(87462);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r<a;n+=1,r+=1)e[n]=e[r];e.pop()}const i=function(e,t){void 0===t&&(t="");var n,r=e&&e.split("/")||[],i=t&&t.split("/")||[],l=e&&a(e),s=t&&a(t),u=l||s;if(e&&a(e)?i=r:r.length&&(i.pop(),i=i.concat(r)),!i.length)return"/";if(i.length){var c=i[i.length-1];n="."===c||".."===c||""===c}else n=!1;for(var d=0,f=i.length;f>=0;f--){var p=i[f];"."===p?o(i,f):".."===p?(o(i,f),d++):d&&(o(i,f),d--)}if(!u)for(;d--;d)i.unshift("..");!u||""===i[0]||i[0]&&a(i[0])||i.unshift("");var h=i.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h};function l(e){return e.valueOf?e.valueOf():Object.prototype.valueOf.call(e)}const s=function e(t,n){if(t===n)return!0;if(null==t||null==n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every((function(t,r){return e(t,n[r])}));if("object"==typeof t||"object"==typeof n){var r=l(t),a=l(n);return r!==t||a!==n?e(r,a):Object.keys(Object.assign({},t,n)).every((function(r){return e(t[r],n[r])}))}return!1};var u=n(38776);function c(e){return"/"===e.charAt(0)?e:"/"+e}function d(e){return"/"===e.charAt(0)?e.substr(1):e}function f(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 p(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function h(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 m(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.Z)({},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 g(e,t){return e.pathname===t.pathname&&e.search===t.search&&e.hash===t.hash&&e.key===t.key&&s(e.state,t.state)}function v(){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;r<e;r++)n[r]=arguments[r];t.forEach((function(e){return e.apply(void 0,n)}))}}}var b=!("undefined"==typeof window||!window.document||!window.document.createElement);function y(e,t){t(window.confirm(e))}var w="popstate",x="hashchange";function k(){try{return window.history.state||{}}catch(e){return{}}}function _(e){void 0===e&&(e={}),b||(0,u.Z)(!1);var t,n=window.history,a=(-1===(t=window.navigator.userAgent).indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history,o=!(-1===window.navigator.userAgent.indexOf("Trident")),i=e,l=i.forceRefresh,s=void 0!==l&&l,d=i.getUserConfirmation,g=void 0===d?y:d,_=i.keyLength,E=void 0===_?6:_,S=e.basename?p(c(e.basename)):"";function C(e){var t=e||{},n=t.key,r=t.state,a=window.location,o=a.pathname+a.search+a.hash;return S&&(o=f(o,S)),m(o,r,n)}function T(){return Math.random().toString(36).substr(2,E)}var O=v();function D(e){(0,r.Z)($,e),$.length=n.length,O.notifyListeners($.location,$.action)}function P(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||A(C(e.state))}function N(){A(C(k()))}var I=!1;function A(e){if(I)I=!1,D();else{O.confirmTransitionTo(e,"POP",g,(function(t){t?D({action:"POP",location:e}):function(e){var t=$.location,n=R.indexOf(t.key);-1===n&&(n=0);var r=R.indexOf(e.key);-1===r&&(r=0);var a=n-r;a&&(I=!0,M(a))}(e)}))}}var L=C(k()),R=[L.key];function j(e){return S+h(e)}function M(e){n.go(e)}var F=0;function B(e){1===(F+=e)&&1===e?(window.addEventListener(w,P),o&&window.addEventListener(x,N)):0===F&&(window.removeEventListener(w,P),o&&window.removeEventListener(x,N))}var z=!1;var $={length:n.length,action:"POP",location:L,createHref:j,push:function(e,t){var r="PUSH",o=m(e,t,T(),$.location);O.confirmTransitionTo(o,r,g,(function(e){if(e){var t=j(o),i=o.key,l=o.state;if(a)if(n.pushState({key:i,state:l},null,t),s)window.location.href=t;else{var u=R.indexOf($.location.key),c=R.slice(0,u+1);c.push(o.key),R=c,D({action:r,location:o})}else window.location.href=t}}))},replace:function(e,t){var r="REPLACE",o=m(e,t,T(),$.location);O.confirmTransitionTo(o,r,g,(function(e){if(e){var t=j(o),i=o.key,l=o.state;if(a)if(n.replaceState({key:i,state:l},null,t),s)window.location.replace(t);else{var u=R.indexOf($.location.key);-1!==u&&(R[u]=o.key),D({action:r,location:o})}else window.location.replace(t)}}))},go:M,goBack:function(){M(-1)},goForward:function(){M(1)},block:function(e){void 0===e&&(e=!1);var t=O.setPrompt(e);return z||(B(1),z=!0),function(){return z&&(z=!1,B(-1)),t()}},listen:function(e){var t=O.appendListener(e);return B(1),function(){B(-1),t()}}};return $}var E="hashchange",S={hashbang:{encodePath:function(e){return"!"===e.charAt(0)?e:"!/"+d(e)},decodePath:function(e){return"!"===e.charAt(0)?e.substr(1):e}},noslash:{encodePath:d,decodePath:c},slash:{encodePath:c,decodePath:c}};function C(e){var t=e.indexOf("#");return-1===t?e:e.slice(0,t)}function T(){var e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)}function O(e){window.location.replace(C(window.location.href)+"#"+e)}function D(e){void 0===e&&(e={}),b||(0,u.Z)(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),a=n.getUserConfirmation,o=void 0===a?y:a,i=n.hashType,l=void 0===i?"slash":i,s=e.basename?p(c(e.basename)):"",d=S[l],g=d.encodePath,w=d.decodePath;function x(){var e=w(T());return s&&(e=f(e,s)),m(e)}var k=v();function _(e){(0,r.Z)(z,e),z.length=t.length,k.notifyListeners(z.location,z.action)}var D=!1,P=null;function N(){var e,t,n=T(),r=g(n);if(n!==r)O(r);else{var a=x(),i=z.location;if(!D&&(t=a,(e=i).pathname===t.pathname&&e.search===t.search&&e.hash===t.hash))return;if(P===h(a))return;P=null,function(e){if(D)D=!1,_();else{var t="POP";k.confirmTransitionTo(e,t,o,(function(n){n?_({action:t,location:e}):function(e){var t=z.location,n=R.lastIndexOf(h(t));-1===n&&(n=0);var r=R.lastIndexOf(h(e));-1===r&&(r=0);var a=n-r;a&&(D=!0,j(a))}(e)}))}}(a)}}var I=T(),A=g(I);I!==A&&O(A);var L=x(),R=[h(L)];function j(e){t.go(e)}var M=0;function F(e){1===(M+=e)&&1===e?window.addEventListener(E,N):0===M&&window.removeEventListener(E,N)}var B=!1;var z={length:t.length,action:"POP",location:L,createHref:function(e){var t=document.querySelector("base"),n="";return t&&t.getAttribute("href")&&(n=C(window.location.href)),n+"#"+g(s+h(e))},push:function(e,t){var n="PUSH",r=m(e,void 0,void 0,z.location);k.confirmTransitionTo(r,n,o,(function(e){if(e){var t=h(r),a=g(s+t);if(T()!==a){P=t,function(e){window.location.hash=e}(a);var o=R.lastIndexOf(h(z.location)),i=R.slice(0,o+1);i.push(t),R=i,_({action:n,location:r})}else _()}}))},replace:function(e,t){var n="REPLACE",r=m(e,void 0,void 0,z.location);k.confirmTransitionTo(r,n,o,(function(e){if(e){var t=h(r),a=g(s+t);T()!==a&&(P=t,O(a));var o=R.indexOf(h(z.location));-1!==o&&(R[o]=t),_({action:n,location:r})}}))},go:j,goBack:function(){j(-1)},goForward:function(){j(1)},block:function(e){void 0===e&&(e=!1);var t=k.setPrompt(e);return B||(F(1),B=!0),function(){return B&&(B=!1,F(-1)),t()}},listen:function(e){var t=k.appendListener(e);return F(1),function(){F(-1),t()}}};return z}function P(e,t,n){return Math.min(Math.max(e,t),n)}function N(e){void 0===e&&(e={});var t=e,n=t.getUserConfirmation,a=t.initialEntries,o=void 0===a?["/"]:a,i=t.initialIndex,l=void 0===i?0:i,s=t.keyLength,u=void 0===s?6:s,c=v();function d(e){(0,r.Z)(w,e),w.length=w.entries.length,c.notifyListeners(w.location,w.action)}function f(){return Math.random().toString(36).substr(2,u)}var p=P(l,0,o.length-1),g=o.map((function(e){return m(e,void 0,"string"==typeof e?f():e.key||f())})),b=h;function y(e){var t=P(w.index+e,0,w.entries.length-1),r=w.entries[t];c.confirmTransitionTo(r,"POP",n,(function(e){e?d({action:"POP",location:r,index:t}):d()}))}var w={length:g.length,action:"POP",location:g[p],index:p,entries:g,createHref:b,push:function(e,t){var r="PUSH",a=m(e,t,f(),w.location);c.confirmTransitionTo(a,r,n,(function(e){if(e){var t=w.index+1,n=w.entries.slice(0);n.length>t?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=m(e,t,f(),w.location);c.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},go:y,goBack:function(){y(-1)},goForward:function(){y(1)},canGo:function(e){var t=w.index+e;return t>=0&&t<w.entries.length},block:function(e){return void 0===e&&(e=!1),c.setPrompt(e)},listen:function(e){return c.appendListener(e)}};return w}},8679:(e,t,n)=>{"use strict";var r=n(59864),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 u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,h=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(h){var a=p(n);a&&a!==h&&e(t,a,r)}var i=c(n);d&&(i=i.concat(d(n)));for(var l=s(t),m=s(n),g=0;g<i.length;++g){var v=i[g];if(!(o[v]||r&&r[v]||m&&m[v]||l&&l[v])){var b=f(n,v);try{u(t,v,b)}catch(y){}}}}return t}},41143:e=>{"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 u=[n,r,a,o,i,l],c=0;(s=new Error(t.replace(/%s/g,(function(){return u[c++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},5826:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},36808:(e,t,n)=>{var r,a;!function(o){if(void 0===(a="function"==typeof(r=o)?r.call(t,n,t,e):r)||(e.exports=a),!0,e.exports=o(),!!0){var i=window.Cookies,l=window.Cookies=o();l.noConflict=function(){return window.Cookies=i,l}}}((function(){function e(){for(var e=0,t={};e<arguments.length;e++){var n=arguments[e];for(var r in n)t[r]=n[r]}return t}function t(e){return e.replace(/(%[0-9A-Z]{2})+/g,decodeURIComponent)}return function n(r){function a(){}function o(t,n,o){if("undefined"!=typeof document){"number"==typeof(o=e({path:"/"},a.defaults,o)).expires&&(o.expires=new Date(1*new Date+864e5*o.expires)),o.expires=o.expires?o.expires.toUTCString():"";try{var i=JSON.stringify(n);/^[\{\[]/.test(i)&&(n=i)}catch(u){}n=r.write?r.write(n,t):encodeURIComponent(String(n)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,decodeURIComponent),t=encodeURIComponent(String(t)).replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent).replace(/[\(\)]/g,escape);var l="";for(var s in o)o[s]&&(l+="; "+s,!0!==o[s]&&(l+="="+o[s].split(";")[0]));return document.cookie=t+"="+n+l}}function i(e,n){if("undefined"!=typeof document){for(var a={},o=document.cookie?document.cookie.split("; "):[],i=0;i<o.length;i++){var l=o[i].split("="),s=l.slice(1).join("=");n||'"'!==s.charAt(0)||(s=s.slice(1,-1));try{var u=t(l[0]);if(s=(r.read||r)(s,u)||t(s),n)try{s=JSON.parse(s)}catch(c){}if(a[u]=s,e===u)break}catch(c){}}return e?a[e]:a}}return a.set=o,a.get=function(e){return i(e,!1)},a.getJSON=function(e){return i(e,!0)},a.remove=function(t,n){o(t,"",e(n,{expires:-1}))},a.defaults={},a.withConverter=n,a}((function(){}))}))},18552:(e,t,n)=>{var r=n(10852)(n(55639),"DataView");e.exports=r},1989:(e,t,n)=>{var r=n(51789),a=n(80401),o=n(57667),i=n(21327),l=n(81866);function s(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}s.prototype.clear=r,s.prototype.delete=a,s.prototype.get=o,s.prototype.has=i,s.prototype.set=l,e.exports=s},38407:(e,t,n)=>{var r=n(27040),a=n(14125),o=n(82117),i=n(67518),l=n(54705);function s(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}s.prototype.clear=r,s.prototype.delete=a,s.prototype.get=o,s.prototype.has=i,s.prototype.set=l,e.exports=s},57071:(e,t,n)=>{var r=n(10852)(n(55639),"Map");e.exports=r},83369:(e,t,n)=>{var r=n(24785),a=n(11285),o=n(96e3),i=n(49916),l=n(95265);function s(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}s.prototype.clear=r,s.prototype.delete=a,s.prototype.get=o,s.prototype.has=i,s.prototype.set=l,e.exports=s},53818:(e,t,n)=>{var r=n(10852)(n(55639),"Promise");e.exports=r},58525:(e,t,n)=>{var r=n(10852)(n(55639),"Set");e.exports=r},88668:(e,t,n)=>{var r=n(83369),a=n(90619),o=n(72385);function i(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new r;++t<n;)this.add(e[t])}i.prototype.add=i.prototype.push=a,i.prototype.has=o,e.exports=i},46384:(e,t,n)=>{var r=n(38407),a=n(37465),o=n(63779),i=n(67599),l=n(44758),s=n(34309);function u(e){var t=this.__data__=new r(e);this.size=t.size}u.prototype.clear=a,u.prototype.delete=o,u.prototype.get=i,u.prototype.has=l,u.prototype.set=s,e.exports=u},62705:(e,t,n)=>{var r=n(55639).Symbol;e.exports=r},11149:(e,t,n)=>{var r=n(55639).Uint8Array;e.exports=r},70577:(e,t,n)=>{var r=n(10852)(n(55639),"WeakMap");e.exports=r},96874:e=>{e.exports=function(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}},44174:e=>{e.exports=function(e,t,n,r){for(var a=-1,o=null==e?0:e.length;++a<o;){var i=e[a];t(r,i,n(i),e)}return r}},77412:e=>{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length;++n<r&&!1!==t(e[n],n,e););return e}},34963:e=>{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,a=0,o=[];++n<r;){var i=e[n];t(i,n,e)&&(o[a++]=i)}return o}},14636:(e,t,n)=>{var r=n(22545),a=n(35694),o=n(1469),i=n(44144),l=n(65776),s=n(36719),u=Object.prototype.hasOwnProperty;e.exports=function(e,t){var n=o(e),c=!n&&a(e),d=!n&&!c&&i(e),f=!n&&!c&&!d&&s(e),p=n||c||d||f,h=p?r(e.length,String):[],m=h.length;for(var g in e)!t&&!u.call(e,g)||p&&("length"==g||d&&("offset"==g||"parent"==g)||f&&("buffer"==g||"byteLength"==g||"byteOffset"==g)||l(g,m))||h.push(g);return h}},29932:e=>{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,a=Array(r);++n<r;)a[n]=t(e[n],n,e);return a}},62488:e=>{e.exports=function(e,t){for(var n=-1,r=t.length,a=e.length;++n<r;)e[a+n]=t[n];return e}},82908:e=>{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length;++n<r;)if(t(e[n],n,e))return!0;return!1}},34865:(e,t,n)=>{var r=n(89465),a=n(77813),o=Object.prototype.hasOwnProperty;e.exports=function(e,t,n){var i=e[t];o.call(e,t)&&a(i,n)&&(void 0!==n||t in e)||r(e,t,n)}},18470:(e,t,n)=>{var r=n(77813);e.exports=function(e,t){for(var n=e.length;n--;)if(r(e[n][0],t))return n;return-1}},81119:(e,t,n)=>{var r=n(89881);e.exports=function(e,t,n,a){return r(e,(function(e,r,o){t(a,e,n(e),o)})),a}},44037:(e,t,n)=>{var r=n(98363),a=n(3674);e.exports=function(e,t){return e&&r(t,a(t),e)}},63886:(e,t,n)=>{var r=n(98363),a=n(81704);e.exports=function(e,t){return e&&r(t,a(t),e)}},89465:(e,t,n)=>{var r=n(38777);e.exports=function(e,t,n){"__proto__"==t&&r?r(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}},85990:(e,t,n)=>{var r=n(46384),a=n(77412),o=n(34865),i=n(44037),l=n(63886),s=n(64626),u=n(278),c=n(18805),d=n(1911),f=n(58234),p=n(46904),h=n(64160),m=n(43824),g=n(29148),v=n(38517),b=n(1469),y=n(44144),w=n(56688),x=n(13218),k=n(72928),_=n(3674),E=n(81704),S="[object Arguments]",C="[object Function]",T="[object Object]",O={};O[S]=O["[object Array]"]=O["[object ArrayBuffer]"]=O["[object DataView]"]=O["[object Boolean]"]=O["[object Date]"]=O["[object Float32Array]"]=O["[object Float64Array]"]=O["[object Int8Array]"]=O["[object Int16Array]"]=O["[object Int32Array]"]=O["[object Map]"]=O["[object Number]"]=O[T]=O["[object RegExp]"]=O["[object Set]"]=O["[object String]"]=O["[object Symbol]"]=O["[object Uint8Array]"]=O["[object Uint8ClampedArray]"]=O["[object Uint16Array]"]=O["[object Uint32Array]"]=!0,O["[object Error]"]=O[C]=O["[object WeakMap]"]=!1,e.exports=function e(t,n,D,P,N,I){var A,L=1&n,R=2&n,j=4&n;if(D&&(A=N?D(t,P,N,I):D(t)),void 0!==A)return A;if(!x(t))return t;var M=b(t);if(M){if(A=m(t),!L)return u(t,A)}else{var F=h(t),B=F==C||"[object GeneratorFunction]"==F;if(y(t))return s(t,L);if(F==T||F==S||B&&!N){if(A=R||B?{}:v(t),!L)return R?d(t,l(A,t)):c(t,i(A,t))}else{if(!O[F])return N?t:{};A=g(t,F,L)}}I||(I=new r);var z=I.get(t);if(z)return z;I.set(t,A),k(t)?t.forEach((function(r){A.add(e(r,n,D,r,t,I))})):w(t)&&t.forEach((function(r,a){A.set(a,e(r,n,D,a,t,I))}));var $=M?void 0:(j?R?p:f:R?E:_)(t);return a($||t,(function(r,a){$&&(r=t[a=r]),o(A,a,e(r,n,D,a,t,I))})),A}},3118:(e,t,n)=>{var r=n(13218),a=Object.create,o=function(){function e(){}return function(t){if(!r(t))return{};if(a)return a(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();e.exports=o},89881:(e,t,n)=>{var r=n(47816),a=n(99291)(r);e.exports=a},21078:(e,t,n)=>{var r=n(62488),a=n(37285);e.exports=function e(t,n,o,i,l){var s=-1,u=t.length;for(o||(o=a),l||(l=[]);++s<u;){var c=t[s];n>0&&o(c)?n>1?e(c,n-1,o,i,l):r(l,c):i||(l[l.length]=c)}return l}},28483:(e,t,n)=>{var r=n(25063)();e.exports=r},47816:(e,t,n)=>{var r=n(28483),a=n(3674);e.exports=function(e,t){return e&&r(e,t,a)}},97786:(e,t,n)=>{var r=n(71811),a=n(40327);e.exports=function(e,t){for(var n=0,o=(t=r(t,e)).length;null!=e&&n<o;)e=e[a(t[n++])];return n&&n==o?e:void 0}},68866:(e,t,n)=>{var r=n(62488),a=n(1469);e.exports=function(e,t,n){var o=t(e);return a(e)?o:r(o,n(e))}},44239:(e,t,n)=>{var r=n(62705),a=n(89607),o=n(2333),i=r?r.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":i&&i in Object(e)?a(e):o(e)}},13:e=>{e.exports=function(e,t){return null!=e&&t in Object(e)}},9454:(e,t,n)=>{var r=n(44239),a=n(37005);e.exports=function(e){return a(e)&&"[object Arguments]"==r(e)}},90939:(e,t,n)=>{var r=n(2492),a=n(37005);e.exports=function e(t,n,o,i,l){return t===n||(null==t||null==n||!a(t)&&!a(n)?t!=t&&n!=n:r(t,n,o,i,e,l))}},2492:(e,t,n)=>{var r=n(46384),a=n(67114),o=n(18351),i=n(16096),l=n(64160),s=n(1469),u=n(44144),c=n(36719),d="[object Arguments]",f="[object Array]",p="[object Object]",h=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,m,g,v){var b=s(e),y=s(t),w=b?f:l(e),x=y?f:l(t),k=(w=w==d?p:w)==p,_=(x=x==d?p:x)==p,E=w==x;if(E&&u(e)){if(!u(t))return!1;b=!0,k=!1}if(E&&!k)return v||(v=new r),b||c(e)?a(e,t,n,m,g,v):o(e,t,w,n,m,g,v);if(!(1&n)){var S=k&&h.call(e,"__wrapped__"),C=_&&h.call(t,"__wrapped__");if(S||C){var T=S?e.value():e,O=C?t.value():t;return v||(v=new r),g(T,O,n,m,v)}}return!!E&&(v||(v=new r),i(e,t,n,m,g,v))}},25588:(e,t,n)=>{var r=n(64160),a=n(37005);e.exports=function(e){return a(e)&&"[object Map]"==r(e)}},2958:(e,t,n)=>{var r=n(46384),a=n(90939);e.exports=function(e,t,n,o){var i=n.length,l=i,s=!o;if(null==e)return!l;for(e=Object(e);i--;){var u=n[i];if(s&&u[2]?u[1]!==e[u[0]]:!(u[0]in e))return!1}for(;++i<l;){var c=(u=n[i])[0],d=e[c],f=u[1];if(s&&u[2]){if(void 0===d&&!(c in e))return!1}else{var p=new r;if(o)var h=o(d,f,c,e,t,p);if(!(void 0===h?a(f,d,3,o,p):h))return!1}}return!0}},28458:(e,t,n)=>{var r=n(23560),a=n(15346),o=n(13218),i=n(80346),l=/^\[object .+?Constructor\]$/,s=Function.prototype,u=Object.prototype,c=s.toString,d=u.hasOwnProperty,f=RegExp("^"+c.call(d).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!o(e)||a(e))&&(r(e)?f:l).test(i(e))}},29221:(e,t,n)=>{var r=n(64160),a=n(37005);e.exports=function(e){return a(e)&&"[object Set]"==r(e)}},38749:(e,t,n)=>{var r=n(44239),a=n(41780),o=n(37005),i={};i["[object Float32Array]"]=i["[object Float64Array]"]=i["[object Int8Array]"]=i["[object Int16Array]"]=i["[object Int32Array]"]=i["[object Uint8Array]"]=i["[object Uint8ClampedArray]"]=i["[object Uint16Array]"]=i["[object Uint32Array]"]=!0,i["[object Arguments]"]=i["[object Array]"]=i["[object ArrayBuffer]"]=i["[object Boolean]"]=i["[object DataView]"]=i["[object Date]"]=i["[object Error]"]=i["[object Function]"]=i["[object Map]"]=i["[object Number]"]=i["[object Object]"]=i["[object RegExp]"]=i["[object Set]"]=i["[object String]"]=i["[object WeakMap]"]=!1,e.exports=function(e){return o(e)&&a(e.length)&&!!i[r(e)]}},67206:(e,t,n)=>{var r=n(91573),a=n(16432),o=n(6557),i=n(1469),l=n(39601);e.exports=function(e){return"function"==typeof e?e:null==e?o:"object"==typeof e?i(e)?a(e[0],e[1]):r(e):l(e)}},280:(e,t,n)=>{var r=n(25726),a=n(86916),o=Object.prototype.hasOwnProperty;e.exports=function(e){if(!r(e))return a(e);var t=[];for(var n in Object(e))o.call(e,n)&&"constructor"!=n&&t.push(n);return t}},10313:(e,t,n)=>{var r=n(13218),a=n(25726),o=n(33498),i=Object.prototype.hasOwnProperty;e.exports=function(e){if(!r(e))return o(e);var t=a(e),n=[];for(var l in e)("constructor"!=l||!t&&i.call(e,l))&&n.push(l);return n}},91573:(e,t,n)=>{var r=n(2958),a=n(1499),o=n(42634);e.exports=function(e){var t=a(e);return 1==t.length&&t[0][2]?o(t[0][0],t[0][1]):function(n){return n===e||r(n,e,t)}}},16432:(e,t,n)=>{var r=n(90939),a=n(27361),o=n(79095),i=n(15403),l=n(89162),s=n(42634),u=n(40327);e.exports=function(e,t){return i(e)&&l(t)?s(u(e),t):function(n){var i=a(n,e);return void 0===i&&i===t?o(n,e):r(t,i,3)}}},40371:e=>{e.exports=function(e){return function(t){return null==t?void 0:t[e]}}},79152:(e,t,n)=>{var r=n(97786);e.exports=function(e){return function(t){return r(t,e)}}},56560:(e,t,n)=>{var r=n(75703),a=n(38777),o=n(6557),i=a?function(e,t){return a(e,"toString",{configurable:!0,enumerable:!1,value:r(t),writable:!0})}:o;e.exports=i},14259:e=>{e.exports=function(e,t,n){var r=-1,a=e.length;t<0&&(t=-t>a?0:a+t),(n=n>a?a:n)<0&&(n+=a),a=t>n?0:n-t>>>0,t>>>=0;for(var o=Array(a);++r<a;)o[r]=e[r+t];return o}},22545:e=>{e.exports=function(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}},80531:(e,t,n)=>{var r=n(62705),a=n(29932),o=n(1469),i=n(33448),l=r?r.prototype:void 0,s=l?l.toString:void 0;e.exports=function e(t){if("string"==typeof t)return t;if(o(t))return a(t,e)+"";if(i(t))return s?s.call(t):"";var n=t+"";return"0"==n&&1/t==-Infinity?"-0":n}},7518:e=>{e.exports=function(e){return function(t){return e(t)}}},57406:(e,t,n)=>{var r=n(71811),a=n(10928),o=n(40292),i=n(40327);e.exports=function(e,t){return t=r(t,e),null==(e=o(e,t))||delete e[i(a(t))]}},74757:e=>{e.exports=function(e,t){return e.has(t)}},71811:(e,t,n)=>{var r=n(1469),a=n(15403),o=n(55514),i=n(79833);e.exports=function(e,t){return r(e)?e:a(e,t)?[e]:o(i(e))}},74318:(e,t,n)=>{var r=n(11149);e.exports=function(e){var t=new e.constructor(e.byteLength);return new r(t).set(new r(e)),t}},64626:(e,t,n)=>{e=n.nmd(e);var r=n(55639),a=t&&!t.nodeType&&t,o=a&&e&&!e.nodeType&&e,i=o&&o.exports===a?r.Buffer:void 0,l=i?i.allocUnsafe:void 0;e.exports=function(e,t){if(t)return e.slice();var n=e.length,r=l?l(n):new e.constructor(n);return e.copy(r),r}},57157:(e,t,n)=>{var r=n(74318);e.exports=function(e,t){var n=t?r(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}},93147:e=>{var t=/\w*$/;e.exports=function(e){var n=new e.constructor(e.source,t.exec(e));return n.lastIndex=e.lastIndex,n}},40419:(e,t,n)=>{var r=n(62705),a=r?r.prototype:void 0,o=a?a.valueOf:void 0;e.exports=function(e){return o?Object(o.call(e)):{}}},77133:(e,t,n)=>{var r=n(74318);e.exports=function(e,t){var n=t?r(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}},278:e=>{e.exports=function(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n<r;)t[n]=e[n];return t}},98363:(e,t,n)=>{var r=n(34865),a=n(89465);e.exports=function(e,t,n,o){var i=!n;n||(n={});for(var l=-1,s=t.length;++l<s;){var u=t[l],c=o?o(n[u],e[u],u,n,e):void 0;void 0===c&&(c=e[u]),i?a(n,u,c):r(n,u,c)}return n}},18805:(e,t,n)=>{var r=n(98363),a=n(99551);e.exports=function(e,t){return r(e,a(e),t)}},1911:(e,t,n)=>{var r=n(98363),a=n(51442);e.exports=function(e,t){return r(e,a(e),t)}},14429:(e,t,n)=>{var r=n(55639)["__core-js_shared__"];e.exports=r},55189:(e,t,n)=>{var r=n(44174),a=n(81119),o=n(67206),i=n(1469);e.exports=function(e,t){return function(n,l){var s=i(n)?r:a,u=t?t():{};return s(n,e,o(l,2),u)}}},99291:(e,t,n)=>{var r=n(98612);e.exports=function(e,t){return function(n,a){if(null==n)return n;if(!r(n))return e(n,a);for(var o=n.length,i=t?o:-1,l=Object(n);(t?i--:++i<o)&&!1!==a(l[i],i,l););return n}}},25063:e=>{e.exports=function(e){return function(t,n,r){for(var a=-1,o=Object(t),i=r(t),l=i.length;l--;){var s=i[e?l:++a];if(!1===n(o[s],s,o))break}return t}}},60696:(e,t,n)=>{var r=n(68630);e.exports=function(e){return r(e)?void 0:e}},38777:(e,t,n)=>{var r=n(10852),a=function(){try{var e=r(Object,"defineProperty");return e({},"",{}),e}catch(t){}}();e.exports=a},67114:(e,t,n)=>{var r=n(88668),a=n(82908),o=n(74757);e.exports=function(e,t,n,i,l,s){var u=1&n,c=e.length,d=t.length;if(c!=d&&!(u&&d>c))return!1;var f=s.get(e),p=s.get(t);if(f&&p)return f==t&&p==e;var h=-1,m=!0,g=2&n?new r:void 0;for(s.set(e,t),s.set(t,e);++h<c;){var v=e[h],b=t[h];if(i)var y=u?i(b,v,h,t,e,s):i(v,b,h,e,t,s);if(void 0!==y){if(y)continue;m=!1;break}if(g){if(!a(t,(function(e,t){if(!o(g,t)&&(v===e||l(v,e,n,i,s)))return g.push(t)}))){m=!1;break}}else if(v!==b&&!l(v,b,n,i,s)){m=!1;break}}return s.delete(e),s.delete(t),m}},18351:(e,t,n)=>{var r=n(62705),a=n(11149),o=n(77813),i=n(67114),l=n(68776),s=n(21814),u=r?r.prototype:void 0,c=u?u.valueOf:void 0;e.exports=function(e,t,n,r,u,d,f){switch(n){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!d(new a(e),new a(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return o(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var p=l;case"[object Set]":var h=1&r;if(p||(p=s),e.size!=t.size&&!h)return!1;var m=f.get(e);if(m)return m==t;r|=2,f.set(e,t);var g=i(p(e),p(t),r,u,d,f);return f.delete(e),g;case"[object Symbol]":if(c)return c.call(e)==c.call(t)}return!1}},16096:(e,t,n)=>{var r=n(58234),a=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,o,i,l){var s=1&n,u=r(e),c=u.length;if(c!=r(t).length&&!s)return!1;for(var d=c;d--;){var f=u[d];if(!(s?f in t:a.call(t,f)))return!1}var p=l.get(e),h=l.get(t);if(p&&h)return p==t&&h==e;var m=!0;l.set(e,t),l.set(t,e);for(var g=s;++d<c;){var v=e[f=u[d]],b=t[f];if(o)var y=s?o(b,v,f,t,e,l):o(v,b,f,e,t,l);if(!(void 0===y?v===b||i(v,b,n,o,l):y)){m=!1;break}g||(g="constructor"==f)}if(m&&!g){var w=e.constructor,x=t.constructor;w==x||!("constructor"in e)||!("constructor"in t)||"function"==typeof w&&w instanceof w&&"function"==typeof x&&x instanceof x||(m=!1)}return l.delete(e),l.delete(t),m}},99021:(e,t,n)=>{var r=n(85564),a=n(45357),o=n(30061);e.exports=function(e){return o(a(e,void 0,r),e+"")}},31957:(e,t,n)=>{var r="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g;e.exports=r},58234:(e,t,n)=>{var r=n(68866),a=n(99551),o=n(3674);e.exports=function(e){return r(e,o,a)}},46904:(e,t,n)=>{var r=n(68866),a=n(51442),o=n(81704);e.exports=function(e){return r(e,o,a)}},45050:(e,t,n)=>{var r=n(37019);e.exports=function(e,t){var n=e.__data__;return r(t)?n["string"==typeof t?"string":"hash"]:n.map}},1499:(e,t,n)=>{var r=n(89162),a=n(3674);e.exports=function(e){for(var t=a(e),n=t.length;n--;){var o=t[n],i=e[o];t[n]=[o,i,r(i)]}return t}},10852:(e,t,n)=>{var r=n(28458),a=n(47801);e.exports=function(e,t){var n=a(e,t);return r(n)?n:void 0}},85924:(e,t,n)=>{var r=n(5569)(Object.getPrototypeOf,Object);e.exports=r},89607:(e,t,n)=>{var r=n(62705),a=Object.prototype,o=a.hasOwnProperty,i=a.toString,l=r?r.toStringTag:void 0;e.exports=function(e){var t=o.call(e,l),n=e[l];try{e[l]=void 0;var r=!0}catch(s){}var a=i.call(e);return r&&(t?e[l]=n:delete e[l]),a}},99551:(e,t,n)=>{var r=n(34963),a=n(70479),o=Object.prototype.propertyIsEnumerable,i=Object.getOwnPropertySymbols,l=i?function(e){return null==e?[]:(e=Object(e),r(i(e),(function(t){return o.call(e,t)})))}:a;e.exports=l},51442:(e,t,n)=>{var r=n(62488),a=n(85924),o=n(99551),i=n(70479),l=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)r(t,o(e)),e=a(e);return t}:i;e.exports=l},64160:(e,t,n)=>{var r=n(18552),a=n(57071),o=n(53818),i=n(58525),l=n(70577),s=n(44239),u=n(80346),c="[object Map]",d="[object Promise]",f="[object Set]",p="[object WeakMap]",h="[object DataView]",m=u(r),g=u(a),v=u(o),b=u(i),y=u(l),w=s;(r&&w(new r(new ArrayBuffer(1)))!=h||a&&w(new a)!=c||o&&w(o.resolve())!=d||i&&w(new i)!=f||l&&w(new l)!=p)&&(w=function(e){var t=s(e),n="[object Object]"==t?e.constructor:void 0,r=n?u(n):"";if(r)switch(r){case m:return h;case g:return c;case v:return d;case b:return f;case y:return p}return t}),e.exports=w},47801:e=>{e.exports=function(e,t){return null==e?void 0:e[t]}},222:(e,t,n)=>{var r=n(71811),a=n(35694),o=n(1469),i=n(65776),l=n(41780),s=n(40327);e.exports=function(e,t,n){for(var u=-1,c=(t=r(t,e)).length,d=!1;++u<c;){var f=s(t[u]);if(!(d=null!=e&&n(e,f)))break;e=e[f]}return d||++u!=c?d:!!(c=null==e?0:e.length)&&l(c)&&i(f,c)&&(o(e)||a(e))}},51789:(e,t,n)=>{var r=n(94536);e.exports=function(){this.__data__=r?r(null):{},this.size=0}},80401:e=>{e.exports=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}},57667:(e,t,n)=>{var r=n(94536),a=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;if(r){var n=t[e];return"__lodash_hash_undefined__"===n?void 0:n}return a.call(t,e)?t[e]:void 0}},21327:(e,t,n)=>{var r=n(94536),a=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;return r?void 0!==t[e]:a.call(t,e)}},81866:(e,t,n)=>{var r=n(94536);e.exports=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=r&&void 0===t?"__lodash_hash_undefined__":t,this}},43824:e=>{var t=Object.prototype.hasOwnProperty;e.exports=function(e){var n=e.length,r=new e.constructor(n);return n&&"string"==typeof e[0]&&t.call(e,"index")&&(r.index=e.index,r.input=e.input),r}},29148:(e,t,n)=>{var r=n(74318),a=n(57157),o=n(93147),i=n(40419),l=n(77133);e.exports=function(e,t,n){var s=e.constructor;switch(t){case"[object ArrayBuffer]":return r(e);case"[object Boolean]":case"[object Date]":return new s(+e);case"[object DataView]":return a(e,n);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return l(e,n);case"[object Map]":case"[object Set]":return new s;case"[object Number]":case"[object String]":return new s(e);case"[object RegExp]":return o(e);case"[object Symbol]":return i(e)}}},38517:(e,t,n)=>{var r=n(3118),a=n(85924),o=n(25726);e.exports=function(e){return"function"!=typeof e.constructor||o(e)?{}:r(a(e))}},37285:(e,t,n)=>{var r=n(62705),a=n(35694),o=n(1469),i=r?r.isConcatSpreadable:void 0;e.exports=function(e){return o(e)||a(e)||!!(i&&e&&e[i])}},65776:e=>{var t=/^(?:0|[1-9]\d*)$/;e.exports=function(e,n){var r=typeof e;return!!(n=null==n?9007199254740991:n)&&("number"==r||"symbol"!=r&&t.test(e))&&e>-1&&e%1==0&&e<n}},15403:(e,t,n)=>{var r=n(1469),a=n(33448),o=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,i=/^\w*$/;e.exports=function(e,t){if(r(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!a(e))||(i.test(e)||!o.test(e)||null!=t&&e in Object(t))}},37019:e=>{e.exports=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}},15346:(e,t,n)=>{var r,a=n(14429),o=(r=/[^.]+$/.exec(a&&a.keys&&a.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";e.exports=function(e){return!!o&&o in e}},25726:e=>{var t=Object.prototype;e.exports=function(e){var n=e&&e.constructor;return e===("function"==typeof n&&n.prototype||t)}},89162:(e,t,n)=>{var r=n(13218);e.exports=function(e){return e==e&&!r(e)}},27040:e=>{e.exports=function(){this.__data__=[],this.size=0}},14125:(e,t,n)=>{var r=n(18470),a=Array.prototype.splice;e.exports=function(e){var t=this.__data__,n=r(t,e);return!(n<0)&&(n==t.length-1?t.pop():a.call(t,n,1),--this.size,!0)}},82117:(e,t,n)=>{var r=n(18470);e.exports=function(e){var t=this.__data__,n=r(t,e);return n<0?void 0:t[n][1]}},67518:(e,t,n)=>{var r=n(18470);e.exports=function(e){return r(this.__data__,e)>-1}},54705:(e,t,n)=>{var r=n(18470);e.exports=function(e,t){var n=this.__data__,a=r(n,e);return a<0?(++this.size,n.push([e,t])):n[a][1]=t,this}},24785:(e,t,n)=>{var r=n(1989),a=n(38407),o=n(57071);e.exports=function(){this.size=0,this.__data__={hash:new r,map:new(o||a),string:new r}}},11285:(e,t,n)=>{var r=n(45050);e.exports=function(e){var t=r(this,e).delete(e);return this.size-=t?1:0,t}},96e3:(e,t,n)=>{var r=n(45050);e.exports=function(e){return r(this,e).get(e)}},49916:(e,t,n)=>{var r=n(45050);e.exports=function(e){return r(this,e).has(e)}},95265:(e,t,n)=>{var r=n(45050);e.exports=function(e,t){var n=r(this,e),a=n.size;return n.set(e,t),this.size+=n.size==a?0:1,this}},68776:e=>{e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}},42634:e=>{e.exports=function(e,t){return function(n){return null!=n&&(n[e]===t&&(void 0!==t||e in Object(n)))}}},24523:(e,t,n)=>{var r=n(88306);e.exports=function(e){var t=r(e,(function(e){return 500===n.size&&n.clear(),e})),n=t.cache;return t}},94536:(e,t,n)=>{var r=n(10852)(Object,"create");e.exports=r},86916:(e,t,n)=>{var r=n(5569)(Object.keys,Object);e.exports=r},33498:e=>{e.exports=function(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t}},31167:(e,t,n)=>{e=n.nmd(e);var r=n(31957),a=t&&!t.nodeType&&t,o=a&&e&&!e.nodeType&&e,i=o&&o.exports===a&&r.process,l=function(){try{var e=o&&o.require&&o.require("util").types;return e||i&&i.binding&&i.binding("util")}catch(t){}}();e.exports=l},2333:e=>{var t=Object.prototype.toString;e.exports=function(e){return t.call(e)}},5569:e=>{e.exports=function(e,t){return function(n){return e(t(n))}}},45357:(e,t,n)=>{var r=n(96874),a=Math.max;e.exports=function(e,t,n){return t=a(void 0===t?e.length-1:t,0),function(){for(var o=arguments,i=-1,l=a(o.length-t,0),s=Array(l);++i<l;)s[i]=o[t+i];i=-1;for(var u=Array(t+1);++i<t;)u[i]=o[i];return u[t]=n(s),r(e,this,u)}}},40292:(e,t,n)=>{var r=n(97786),a=n(14259);e.exports=function(e,t){return t.length<2?e:r(e,a(t,0,-1))}},55639:(e,t,n)=>{var r=n(31957),a="object"==typeof self&&self&&self.Object===Object&&self,o=r||a||Function("return this")();e.exports=o},90619:e=>{e.exports=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this}},72385:e=>{e.exports=function(e){return this.__data__.has(e)}},21814:e=>{e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n}},30061:(e,t,n)=>{var r=n(56560),a=n(21275)(r);e.exports=a},21275:e=>{var t=Date.now;e.exports=function(e){var n=0,r=0;return function(){var a=t(),o=16-(a-r);if(r=a,o>0){if(++n>=800)return arguments[0]}else n=0;return e.apply(void 0,arguments)}}},37465:(e,t,n)=>{var r=n(38407);e.exports=function(){this.__data__=new r,this.size=0}},63779:e=>{e.exports=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}},67599:e=>{e.exports=function(e){return this.__data__.get(e)}},44758:e=>{e.exports=function(e){return this.__data__.has(e)}},34309:(e,t,n)=>{var r=n(38407),a=n(57071),o=n(83369);e.exports=function(e,t){var n=this.__data__;if(n instanceof r){var i=n.__data__;if(!a||i.length<199)return i.push([e,t]),this.size=++n.size,this;n=this.__data__=new o(i)}return n.set(e,t),this.size=n.size,this}},55514:(e,t,n)=>{var r=n(24523),a=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,o=/\\(\\)?/g,i=r((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(a,(function(e,n,r,a){t.push(r?a.replace(o,"$1"):n||e)})),t}));e.exports=i},40327:(e,t,n)=>{var r=n(33448);e.exports=function(e){if("string"==typeof e||r(e))return e;var t=e+"";return"0"==t&&1/e==-Infinity?"-0":t}},80346:e=>{var t=Function.prototype.toString;e.exports=function(e){if(null!=e){try{return t.call(e)}catch(n){}try{return e+""}catch(n){}}return""}},75703:e=>{e.exports=function(e){return function(){return e}}},77813:e=>{e.exports=function(e,t){return e===t||e!=e&&t!=t}},85564:(e,t,n)=>{var r=n(21078);e.exports=function(e){return(null==e?0:e.length)?r(e,1):[]}},27361:(e,t,n)=>{var r=n(97786);e.exports=function(e,t,n){var a=null==e?void 0:r(e,t);return void 0===a?n:a}},7739:(e,t,n)=>{var r=n(89465),a=n(55189),o=Object.prototype.hasOwnProperty,i=a((function(e,t,n){o.call(e,n)?e[n].push(t):r(e,n,[t])}));e.exports=i},79095:(e,t,n)=>{var r=n(13),a=n(222);e.exports=function(e,t){return null!=e&&a(e,t,r)}},6557:e=>{e.exports=function(e){return e}},35694:(e,t,n)=>{var r=n(9454),a=n(37005),o=Object.prototype,i=o.hasOwnProperty,l=o.propertyIsEnumerable,s=r(function(){return arguments}())?r:function(e){return a(e)&&i.call(e,"callee")&&!l.call(e,"callee")};e.exports=s},1469:e=>{var t=Array.isArray;e.exports=t},98612:(e,t,n)=>{var r=n(23560),a=n(41780);e.exports=function(e){return null!=e&&a(e.length)&&!r(e)}},44144:(e,t,n)=>{e=n.nmd(e);var r=n(55639),a=n(95062),o=t&&!t.nodeType&&t,i=o&&e&&!e.nodeType&&e,l=i&&i.exports===o?r.Buffer:void 0,s=(l?l.isBuffer:void 0)||a;e.exports=s},23560:(e,t,n)=>{var r=n(44239),a=n(13218);e.exports=function(e){if(!a(e))return!1;var t=r(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},41780:e=>{e.exports=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}},56688:(e,t,n)=>{var r=n(25588),a=n(7518),o=n(31167),i=o&&o.isMap,l=i?a(i):r;e.exports=l},13218:e=>{e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},37005:e=>{e.exports=function(e){return null!=e&&"object"==typeof e}},68630:(e,t,n)=>{var r=n(44239),a=n(85924),o=n(37005),i=Function.prototype,l=Object.prototype,s=i.toString,u=l.hasOwnProperty,c=s.call(Object);e.exports=function(e){if(!o(e)||"[object Object]"!=r(e))return!1;var t=a(e);if(null===t)return!0;var n=u.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&s.call(n)==c}},72928:(e,t,n)=>{var r=n(29221),a=n(7518),o=n(31167),i=o&&o.isSet,l=i?a(i):r;e.exports=l},33448:(e,t,n)=>{var r=n(44239),a=n(37005);e.exports=function(e){return"symbol"==typeof e||a(e)&&"[object Symbol]"==r(e)}},36719:(e,t,n)=>{var r=n(38749),a=n(7518),o=n(31167),i=o&&o.isTypedArray,l=i?a(i):r;e.exports=l},3674:(e,t,n)=>{var r=n(14636),a=n(280),o=n(98612);e.exports=function(e){return o(e)?r(e):a(e)}},81704:(e,t,n)=>{var r=n(14636),a=n(10313),o=n(98612);e.exports=function(e){return o(e)?r(e,!0):a(e)}},10928:e=>{e.exports=function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0}},88306:(e,t,n)=>{var r=n(83369);function a(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var r=arguments,a=t?t.apply(this,r):r[0],o=n.cache;if(o.has(a))return o.get(a);var i=e.apply(this,r);return n.cache=o.set(a,i)||o,i};return n.cache=new(a.Cache||r),n}a.Cache=r,e.exports=a},57557:(e,t,n)=>{var r=n(29932),a=n(85990),o=n(57406),i=n(71811),l=n(98363),s=n(60696),u=n(99021),c=n(46904),d=u((function(e,t){var n={};if(null==e)return n;var u=!1;t=r(t,(function(t){return t=i(t,e),u||(u=t.length>1),t})),l(e,c(e),n),u&&(n=a(n,7,s));for(var d=t.length;d--;)o(n,t[d]);return n}));e.exports=d},39601:(e,t,n)=>{var r=n(40371),a=n(79152),o=n(15403),i=n(40327);e.exports=function(e){return o(e)?r(i(e)):a(e)}},70479:e=>{e.exports=function(){return[]}},95062:e=>{e.exports=function(){return!1}},79833:(e,t,n)=>{var r=n(80531);e.exports=function(e){return null==e?"":r(e)}},31336:(e,t,n)=>{var r,a;!function(){var o,i,l,s,u,c,d,f,p,h,m,g,v,b,y,w,x,k,_,E,S,C,T,O,D,P,N,I,A,L,R=function(e){var t=new R.Builder;return t.pipeline.add(R.trimmer,R.stopWordFilter,R.stemmer),t.searchPipeline.add(R.stemmer),e.call(t,t),t.build()};R.version="2.3.9",R.utils={},R.utils.warn=(o=this,function(e){o.console&&console.warn&&console.warn(e)}),R.utils.asString=function(e){return null==e?"":e.toString()},R.utils.clone=function(e){if(null==e)return e;for(var t=Object.create(null),n=Object.keys(e),r=0;r<n.length;r++){var a=n[r],o=e[a];if(Array.isArray(o))t[a]=o.slice();else{if("string"!=typeof o&&"number"!=typeof o&&"boolean"!=typeof o)throw new TypeError("clone is not deep and does not support nested objects");t[a]=o}}return t},R.FieldRef=function(e,t,n){this.docRef=e,this.fieldName=t,this._stringValue=n},R.FieldRef.joiner="/",R.FieldRef.fromString=function(e){var t=e.indexOf(R.FieldRef.joiner);if(-1===t)throw"malformed field ref string";var n=e.slice(0,t),r=e.slice(t+1);return new R.FieldRef(r,n,e)},R.FieldRef.prototype.toString=function(){return null==this._stringValue&&(this._stringValue=this.fieldName+R.FieldRef.joiner+this.docRef),this._stringValue},R.Set=function(e){if(this.elements=Object.create(null),e){this.length=e.length;for(var t=0;t<this.length;t++)this.elements[e[t]]=!0}else this.length=0},R.Set.complete={intersect:function(e){return e},union:function(){return this},contains:function(){return!0}},R.Set.empty={intersect:function(){return this},union:function(e){return e},contains:function(){return!1}},R.Set.prototype.contains=function(e){return!!this.elements[e]},R.Set.prototype.intersect=function(e){var t,n,r,a=[];if(e===R.Set.complete)return this;if(e===R.Set.empty)return e;this.length<e.length?(t=this,n=e):(t=e,n=this),r=Object.keys(t.elements);for(var o=0;o<r.length;o++){var i=r[o];i in n.elements&&a.push(i)}return new R.Set(a)},R.Set.prototype.union=function(e){return e===R.Set.complete?R.Set.complete:e===R.Set.empty?this:new R.Set(Object.keys(this.elements).concat(Object.keys(e.elements)))},R.idf=function(e,t){var n=0;for(var r in e)"_index"!=r&&(n+=Object.keys(e[r]).length);var a=(t-n+.5)/(n+.5);return Math.log(1+Math.abs(a))},R.Token=function(e,t){this.str=e||"",this.metadata=t||{}},R.Token.prototype.toString=function(){return this.str},R.Token.prototype.update=function(e){return this.str=e(this.str,this.metadata),this},R.Token.prototype.clone=function(e){return e=e||function(e){return e},new R.Token(e(this.str,this.metadata),this.metadata)},R.tokenizer=function(e,t){if(null==e||null==e)return[];if(Array.isArray(e))return e.map((function(e){return new R.Token(R.utils.asString(e).toLowerCase(),R.utils.clone(t))}));for(var n=e.toString().toLowerCase(),r=n.length,a=[],o=0,i=0;o<=r;o++){var l=o-i;if(n.charAt(o).match(R.tokenizer.separator)||o==r){if(l>0){var s=R.utils.clone(t)||{};s.position=[i,l],s.index=a.length,a.push(new R.Token(n.slice(i,o),s))}i=o+1}}return a},R.tokenizer.separator=/[\s\-]+/,R.Pipeline=function(){this._stack=[]},R.Pipeline.registeredFunctions=Object.create(null),R.Pipeline.registerFunction=function(e,t){t in this.registeredFunctions&&R.utils.warn("Overwriting existing registered function: "+t),e.label=t,R.Pipeline.registeredFunctions[e.label]=e},R.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||R.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},R.Pipeline.load=function(e){var t=new R.Pipeline;return e.forEach((function(e){var n=R.Pipeline.registeredFunctions[e];if(!n)throw new Error("Cannot load unregistered function: "+e);t.add(n)})),t},R.Pipeline.prototype.add=function(){Array.prototype.slice.call(arguments).forEach((function(e){R.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)}),this)},R.Pipeline.prototype.after=function(e,t){R.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");n+=1,this._stack.splice(n,0,t)},R.Pipeline.prototype.before=function(e,t){R.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");this._stack.splice(n,0,t)},R.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},R.Pipeline.prototype.run=function(e){for(var t=this._stack.length,n=0;n<t;n++){for(var r=this._stack[n],a=[],o=0;o<e.length;o++){var i=r(e[o],o,e);if(null!=i&&""!==i)if(Array.isArray(i))for(var l=0;l<i.length;l++)a.push(i[l]);else a.push(i)}e=a}return e},R.Pipeline.prototype.runString=function(e,t){var n=new R.Token(e,t);return this.run([n]).map((function(e){return e.toString()}))},R.Pipeline.prototype.reset=function(){this._stack=[]},R.Pipeline.prototype.toJSON=function(){return this._stack.map((function(e){return R.Pipeline.warnIfFunctionNotRegistered(e),e.label}))},R.Vector=function(e){this._magnitude=0,this.elements=e||[]},R.Vector.prototype.positionForIndex=function(e){if(0==this.elements.length)return 0;for(var t=0,n=this.elements.length/2,r=n-t,a=Math.floor(r/2),o=this.elements[2*a];r>1&&(o<e&&(t=a),o>e&&(n=a),o!=e);)r=n-t,a=t+Math.floor(r/2),o=this.elements[2*a];return o==e||o>e?2*a:o<e?2*(a+1):void 0},R.Vector.prototype.insert=function(e,t){this.upsert(e,t,(function(){throw"duplicate index"}))},R.Vector.prototype.upsert=function(e,t,n){this._magnitude=0;var r=this.positionForIndex(e);this.elements[r]==e?this.elements[r+1]=n(this.elements[r+1],t):this.elements.splice(r,0,e,t)},R.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var e=0,t=this.elements.length,n=1;n<t;n+=2){var r=this.elements[n];e+=r*r}return this._magnitude=Math.sqrt(e)},R.Vector.prototype.dot=function(e){for(var t=0,n=this.elements,r=e.elements,a=n.length,o=r.length,i=0,l=0,s=0,u=0;s<a&&u<o;)(i=n[s])<(l=r[u])?s+=2:i>l?u+=2:i==l&&(t+=n[s+1]*r[u+1],s+=2,u+=2);return t},R.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},R.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,n=0;t<this.elements.length;t+=2,n++)e[n]=this.elements[t];return e},R.Vector.prototype.toJSON=function(){return this.elements},R.stemmer=(i={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},l={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},d="^("+(u="[^aeiou][^aeiouy]*")+")?"+(c=(s="[aeiouy]")+"[aeiou]*")+u+"("+c+")?$",f="^("+u+")?"+c+u+c+u,p="^("+u+")?"+s,h=new RegExp("^("+u+")?"+c+u),m=new RegExp(f),g=new RegExp(d),v=new RegExp(p),b=/^(.+?)(ss|i)es$/,y=/^(.+?)([^s])s$/,w=/^(.+?)eed$/,x=/^(.+?)(ed|ing)$/,k=/.$/,_=/(at|bl|iz)$/,E=new RegExp("([^aeiouylsz])\\1$"),S=new RegExp("^"+u+s+"[^aeiouwxy]$"),C=/^(.+?[^aeiou])y$/,T=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,O=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,D=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,P=/^(.+?)(s|t)(ion)$/,N=/^(.+?)e$/,I=/ll$/,A=new RegExp("^"+u+s+"[^aeiouwxy]$"),L=function(e){var t,n,r,a,o,s,u;if(e.length<3)return e;if("y"==(r=e.substr(0,1))&&(e=r.toUpperCase()+e.substr(1)),o=y,(a=b).test(e)?e=e.replace(a,"$1$2"):o.test(e)&&(e=e.replace(o,"$1$2")),o=x,(a=w).test(e)){var c=a.exec(e);(a=h).test(c[1])&&(a=k,e=e.replace(a,""))}else o.test(e)&&(t=(c=o.exec(e))[1],(o=v).test(t)&&(s=E,u=S,(o=_).test(e=t)?e+="e":s.test(e)?(a=k,e=e.replace(a,"")):u.test(e)&&(e+="e")));return(a=C).test(e)&&(e=(t=(c=a.exec(e))[1])+"i"),(a=T).test(e)&&(t=(c=a.exec(e))[1],n=c[2],(a=h).test(t)&&(e=t+i[n])),(a=O).test(e)&&(t=(c=a.exec(e))[1],n=c[2],(a=h).test(t)&&(e=t+l[n])),o=P,(a=D).test(e)?(t=(c=a.exec(e))[1],(a=m).test(t)&&(e=t)):o.test(e)&&(t=(c=o.exec(e))[1]+c[2],(o=m).test(t)&&(e=t)),(a=N).test(e)&&(t=(c=a.exec(e))[1],o=g,s=A,((a=m).test(t)||o.test(t)&&!s.test(t))&&(e=t)),o=m,(a=I).test(e)&&o.test(e)&&(a=k,e=e.replace(a,"")),"y"==r&&(e=r.toLowerCase()+e.substr(1)),e},function(e){return e.update(L)}),R.Pipeline.registerFunction(R.stemmer,"stemmer"),R.generateStopWordFilter=function(e){var t=e.reduce((function(e,t){return e[t]=t,e}),{});return function(e){if(e&&t[e.toString()]!==e.toString())return e}},R.stopWordFilter=R.generateStopWordFilter(["a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"]),R.Pipeline.registerFunction(R.stopWordFilter,"stopWordFilter"),R.trimmer=function(e){return e.update((function(e){return e.replace(/^\W+/,"").replace(/\W+$/,"")}))},R.Pipeline.registerFunction(R.trimmer,"trimmer"),R.TokenSet=function(){this.final=!1,this.edges={},this.id=R.TokenSet._nextId,R.TokenSet._nextId+=1},R.TokenSet._nextId=1,R.TokenSet.fromArray=function(e){for(var t=new R.TokenSet.Builder,n=0,r=e.length;n<r;n++)t.insert(e[n]);return t.finish(),t.root},R.TokenSet.fromClause=function(e){return"editDistance"in e?R.TokenSet.fromFuzzyString(e.term,e.editDistance):R.TokenSet.fromString(e.term)},R.TokenSet.fromFuzzyString=function(e,t){for(var n=new R.TokenSet,r=[{node:n,editsRemaining:t,str:e}];r.length;){var a=r.pop();if(a.str.length>0){var o,i=a.str.charAt(0);i in a.node.edges?o=a.node.edges[i]:(o=new R.TokenSet,a.node.edges[i]=o),1==a.str.length&&(o.final=!0),r.push({node:o,editsRemaining:a.editsRemaining,str:a.str.slice(1)})}if(0!=a.editsRemaining){if("*"in a.node.edges)var l=a.node.edges["*"];else{l=new R.TokenSet;a.node.edges["*"]=l}if(0==a.str.length&&(l.final=!0),r.push({node:l,editsRemaining:a.editsRemaining-1,str:a.str}),a.str.length>1&&r.push({node:a.node,editsRemaining:a.editsRemaining-1,str:a.str.slice(1)}),1==a.str.length&&(a.node.final=!0),a.str.length>=1){if("*"in a.node.edges)var s=a.node.edges["*"];else{s=new R.TokenSet;a.node.edges["*"]=s}1==a.str.length&&(s.final=!0),r.push({node:s,editsRemaining:a.editsRemaining-1,str:a.str.slice(1)})}if(a.str.length>1){var u,c=a.str.charAt(0),d=a.str.charAt(1);d in a.node.edges?u=a.node.edges[d]:(u=new R.TokenSet,a.node.edges[d]=u),1==a.str.length&&(u.final=!0),r.push({node:u,editsRemaining:a.editsRemaining-1,str:c+a.str.slice(2)})}}}return n},R.TokenSet.fromString=function(e){for(var t=new R.TokenSet,n=t,r=0,a=e.length;r<a;r++){var o=e[r],i=r==a-1;if("*"==o)t.edges[o]=t,t.final=i;else{var l=new R.TokenSet;l.final=i,t.edges[o]=l,t=l}}return n},R.TokenSet.prototype.toArray=function(){for(var e=[],t=[{prefix:"",node:this}];t.length;){var n=t.pop(),r=Object.keys(n.node.edges),a=r.length;n.node.final&&(n.prefix.charAt(0),e.push(n.prefix));for(var o=0;o<a;o++){var i=r[o];t.push({prefix:n.prefix.concat(i),node:n.node.edges[i]})}}return e},R.TokenSet.prototype.toString=function(){if(this._str)return this._str;for(var e=this.final?"1":"0",t=Object.keys(this.edges).sort(),n=t.length,r=0;r<n;r++){var a=t[r];e=e+a+this.edges[a].id}return e},R.TokenSet.prototype.intersect=function(e){for(var t=new R.TokenSet,n=void 0,r=[{qNode:e,output:t,node:this}];r.length;){n=r.pop();for(var a=Object.keys(n.qNode.edges),o=a.length,i=Object.keys(n.node.edges),l=i.length,s=0;s<o;s++)for(var u=a[s],c=0;c<l;c++){var d=i[c];if(d==u||"*"==u){var f=n.node.edges[d],p=n.qNode.edges[u],h=f.final&&p.final,m=void 0;d in n.output.edges?(m=n.output.edges[d]).final=m.final||h:((m=new R.TokenSet).final=h,n.output.edges[d]=m),r.push({qNode:p,output:m,node:f})}}}return t},R.TokenSet.Builder=function(){this.previousWord="",this.root=new R.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},R.TokenSet.Builder.prototype.insert=function(e){var t,n=0;if(e<this.previousWord)throw new Error("Out of order word insertion");for(var r=0;r<e.length&&r<this.previousWord.length&&e[r]==this.previousWord[r];r++)n++;this.minimize(n),t=0==this.uncheckedNodes.length?this.root:this.uncheckedNodes[this.uncheckedNodes.length-1].child;for(r=n;r<e.length;r++){var a=new R.TokenSet,o=e[r];t.edges[o]=a,this.uncheckedNodes.push({parent:t,char:o,child:a}),t=a}t.final=!0,this.previousWord=e},R.TokenSet.Builder.prototype.finish=function(){this.minimize(0)},R.TokenSet.Builder.prototype.minimize=function(e){for(var t=this.uncheckedNodes.length-1;t>=e;t--){var n=this.uncheckedNodes[t],r=n.child.toString();r in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[r]:(n.child._str=r,this.minimizedNodes[r]=n.child),this.uncheckedNodes.pop()}},R.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},R.Index.prototype.search=function(e){return this.query((function(t){new R.QueryParser(e,t).parse()}))},R.Index.prototype.query=function(e){for(var t=new R.Query(this.fields),n=Object.create(null),r=Object.create(null),a=Object.create(null),o=Object.create(null),i=Object.create(null),l=0;l<this.fields.length;l++)r[this.fields[l]]=new R.Vector;e.call(t,t);for(l=0;l<t.clauses.length;l++){var s=t.clauses[l],u=null,c=R.Set.empty;u=s.usePipeline?this.pipeline.runString(s.term,{fields:s.fields}):[s.term];for(var d=0;d<u.length;d++){var f=u[d];s.term=f;var p=R.TokenSet.fromClause(s),h=this.tokenSet.intersect(p).toArray();if(0===h.length&&s.presence===R.Query.presence.REQUIRED){for(var m=0;m<s.fields.length;m++){o[N=s.fields[m]]=R.Set.empty}break}for(var g=0;g<h.length;g++){var v=h[g],b=this.invertedIndex[v],y=b._index;for(m=0;m<s.fields.length;m++){var w=b[N=s.fields[m]],x=Object.keys(w),k=v+"/"+N,_=new R.Set(x);if(s.presence==R.Query.presence.REQUIRED&&(c=c.union(_),void 0===o[N]&&(o[N]=R.Set.complete)),s.presence!=R.Query.presence.PROHIBITED){if(r[N].upsert(y,s.boost,(function(e,t){return e+t})),!a[k]){for(var E=0;E<x.length;E++){var S,C=x[E],T=new R.FieldRef(C,N),O=w[C];void 0===(S=n[T])?n[T]=new R.MatchData(v,N,O):S.add(v,N,O)}a[k]=!0}}else void 0===i[N]&&(i[N]=R.Set.empty),i[N]=i[N].union(_)}}}if(s.presence===R.Query.presence.REQUIRED)for(m=0;m<s.fields.length;m++){o[N=s.fields[m]]=o[N].intersect(c)}}var D=R.Set.complete,P=R.Set.empty;for(l=0;l<this.fields.length;l++){var N;o[N=this.fields[l]]&&(D=D.intersect(o[N])),i[N]&&(P=P.union(i[N]))}var I=Object.keys(n),A=[],L=Object.create(null);if(t.isNegated()){I=Object.keys(this.fieldVectors);for(l=0;l<I.length;l++){T=I[l];var j=R.FieldRef.fromString(T);n[T]=new R.MatchData}}for(l=0;l<I.length;l++){var M=(j=R.FieldRef.fromString(I[l])).docRef;if(D.contains(M)&&!P.contains(M)){var F,B=this.fieldVectors[j],z=r[j.fieldName].similarity(B);if(void 0!==(F=L[M]))F.score+=z,F.matchData.combine(n[j]);else{var $={ref:M,score:z,matchData:n[j]};L[M]=$,A.push($)}}}return A.sort((function(e,t){return t.score-e.score}))},R.Index.prototype.toJSON=function(){var e=Object.keys(this.invertedIndex).sort().map((function(e){return[e,this.invertedIndex[e]]}),this),t=Object.keys(this.fieldVectors).map((function(e){return[e,this.fieldVectors[e].toJSON()]}),this);return{version:R.version,fields:this.fields,fieldVectors:t,invertedIndex:e,pipeline:this.pipeline.toJSON()}},R.Index.load=function(e){var t={},n={},r=e.fieldVectors,a=Object.create(null),o=e.invertedIndex,i=new R.TokenSet.Builder,l=R.Pipeline.load(e.pipeline);e.version!=R.version&&R.utils.warn("Version mismatch when loading serialised index. Current version of lunr '"+R.version+"' does not match serialized index '"+e.version+"'");for(var s=0;s<r.length;s++){var u=(d=r[s])[0],c=d[1];n[u]=new R.Vector(c)}for(s=0;s<o.length;s++){var d,f=(d=o[s])[0],p=d[1];i.insert(f),a[f]=p}return i.finish(),t.fields=e.fields,t.fieldVectors=n,t.invertedIndex=a,t.tokenSet=i.root,t.pipeline=l,new R.Index(t)},R.Builder=function(){this._ref="id",this._fields=Object.create(null),this._documents=Object.create(null),this.invertedIndex=Object.create(null),this.fieldTermFrequencies={},this.fieldLengths={},this.tokenizer=R.tokenizer,this.pipeline=new R.Pipeline,this.searchPipeline=new R.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},R.Builder.prototype.ref=function(e){this._ref=e},R.Builder.prototype.field=function(e,t){if(/\//.test(e))throw new RangeError("Field '"+e+"' contains illegal character '/'");this._fields[e]=t||{}},R.Builder.prototype.b=function(e){this._b=e<0?0:e>1?1:e},R.Builder.prototype.k1=function(e){this._k1=e},R.Builder.prototype.add=function(e,t){var n=e[this._ref],r=Object.keys(this._fields);this._documents[n]=t||{},this.documentCount+=1;for(var a=0;a<r.length;a++){var o=r[a],i=this._fields[o].extractor,l=i?i(e):e[o],s=this.tokenizer(l,{fields:[o]}),u=this.pipeline.run(s),c=new R.FieldRef(n,o),d=Object.create(null);this.fieldTermFrequencies[c]=d,this.fieldLengths[c]=0,this.fieldLengths[c]+=u.length;for(var f=0;f<u.length;f++){var p=u[f];if(null==d[p]&&(d[p]=0),d[p]+=1,null==this.invertedIndex[p]){var h=Object.create(null);h._index=this.termIndex,this.termIndex+=1;for(var m=0;m<r.length;m++)h[r[m]]=Object.create(null);this.invertedIndex[p]=h}null==this.invertedIndex[p][o][n]&&(this.invertedIndex[p][o][n]=Object.create(null));for(var g=0;g<this.metadataWhitelist.length;g++){var v=this.metadataWhitelist[g],b=p.metadata[v];null==this.invertedIndex[p][o][n][v]&&(this.invertedIndex[p][o][n][v]=[]),this.invertedIndex[p][o][n][v].push(b)}}}},R.Builder.prototype.calculateAverageFieldLengths=function(){for(var e=Object.keys(this.fieldLengths),t=e.length,n={},r={},a=0;a<t;a++){var o=R.FieldRef.fromString(e[a]),i=o.fieldName;r[i]||(r[i]=0),r[i]+=1,n[i]||(n[i]=0),n[i]+=this.fieldLengths[o]}var l=Object.keys(this._fields);for(a=0;a<l.length;a++){var s=l[a];n[s]=n[s]/r[s]}this.averageFieldLength=n},R.Builder.prototype.createFieldVectors=function(){for(var e={},t=Object.keys(this.fieldTermFrequencies),n=t.length,r=Object.create(null),a=0;a<n;a++){for(var o=R.FieldRef.fromString(t[a]),i=o.fieldName,l=this.fieldLengths[o],s=new R.Vector,u=this.fieldTermFrequencies[o],c=Object.keys(u),d=c.length,f=this._fields[i].boost||1,p=this._documents[o.docRef].boost||1,h=0;h<d;h++){var m,g,v,b=c[h],y=u[b],w=this.invertedIndex[b]._index;void 0===r[b]?(m=R.idf(this.invertedIndex[b],this.documentCount),r[b]=m):m=r[b],g=m*((this._k1+1)*y)/(this._k1*(1-this._b+this._b*(l/this.averageFieldLength[i]))+y),g*=f,g*=p,v=Math.round(1e3*g)/1e3,s.insert(w,v)}e[o]=s}this.fieldVectors=e},R.Builder.prototype.createTokenSet=function(){this.tokenSet=R.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},R.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new R.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},R.Builder.prototype.use=function(e){var t=Array.prototype.slice.call(arguments,1);t.unshift(this),e.apply(this,t)},R.MatchData=function(e,t,n){for(var r=Object.create(null),a=Object.keys(n||{}),o=0;o<a.length;o++){var i=a[o];r[i]=n[i].slice()}this.metadata=Object.create(null),void 0!==e&&(this.metadata[e]=Object.create(null),this.metadata[e][t]=r)},R.MatchData.prototype.combine=function(e){for(var t=Object.keys(e.metadata),n=0;n<t.length;n++){var r=t[n],a=Object.keys(e.metadata[r]);null==this.metadata[r]&&(this.metadata[r]=Object.create(null));for(var o=0;o<a.length;o++){var i=a[o],l=Object.keys(e.metadata[r][i]);null==this.metadata[r][i]&&(this.metadata[r][i]=Object.create(null));for(var s=0;s<l.length;s++){var u=l[s];null==this.metadata[r][i][u]?this.metadata[r][i][u]=e.metadata[r][i][u]:this.metadata[r][i][u]=this.metadata[r][i][u].concat(e.metadata[r][i][u])}}}},R.MatchData.prototype.add=function(e,t,n){if(!(e in this.metadata))return this.metadata[e]=Object.create(null),void(this.metadata[e][t]=n);if(t in this.metadata[e])for(var r=Object.keys(n),a=0;a<r.length;a++){var o=r[a];o in this.metadata[e][t]?this.metadata[e][t][o]=this.metadata[e][t][o].concat(n[o]):this.metadata[e][t][o]=n[o]}else this.metadata[e][t]=n},R.Query=function(e){this.clauses=[],this.allFields=e},R.Query.wildcard=new String("*"),R.Query.wildcard.NONE=0,R.Query.wildcard.LEADING=1,R.Query.wildcard.TRAILING=2,R.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},R.Query.prototype.clause=function(e){return"fields"in e||(e.fields=this.allFields),"boost"in e||(e.boost=1),"usePipeline"in e||(e.usePipeline=!0),"wildcard"in e||(e.wildcard=R.Query.wildcard.NONE),e.wildcard&R.Query.wildcard.LEADING&&e.term.charAt(0)!=R.Query.wildcard&&(e.term="*"+e.term),e.wildcard&R.Query.wildcard.TRAILING&&e.term.slice(-1)!=R.Query.wildcard&&(e.term=e.term+"*"),"presence"in e||(e.presence=R.Query.presence.OPTIONAL),this.clauses.push(e),this},R.Query.prototype.isNegated=function(){for(var e=0;e<this.clauses.length;e++)if(this.clauses[e].presence!=R.Query.presence.PROHIBITED)return!1;return!0},R.Query.prototype.term=function(e,t){if(Array.isArray(e))return e.forEach((function(e){this.term(e,R.utils.clone(t))}),this),this;var n=t||{};return n.term=e.toString(),this.clause(n),this},R.QueryParseError=function(e,t,n){this.name="QueryParseError",this.message=e,this.start=t,this.end=n},R.QueryParseError.prototype=new Error,R.QueryLexer=function(e){this.lexemes=[],this.str=e,this.length=e.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},R.QueryLexer.prototype.run=function(){for(var e=R.QueryLexer.lexText;e;)e=e(this)},R.QueryLexer.prototype.sliceString=function(){for(var e=[],t=this.start,n=this.pos,r=0;r<this.escapeCharPositions.length;r++)n=this.escapeCharPositions[r],e.push(this.str.slice(t,n)),t=n+1;return e.push(this.str.slice(t,this.pos)),this.escapeCharPositions.length=0,e.join("")},R.QueryLexer.prototype.emit=function(e){this.lexemes.push({type:e,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},R.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},R.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return R.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},R.QueryLexer.prototype.width=function(){return this.pos-this.start},R.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},R.QueryLexer.prototype.backup=function(){this.pos-=1},R.QueryLexer.prototype.acceptDigitRun=function(){var e,t;do{t=(e=this.next()).charCodeAt(0)}while(t>47&&t<58);e!=R.QueryLexer.EOS&&this.backup()},R.QueryLexer.prototype.more=function(){return this.pos<this.length},R.QueryLexer.EOS="EOS",R.QueryLexer.FIELD="FIELD",R.QueryLexer.TERM="TERM",R.QueryLexer.EDIT_DISTANCE="EDIT_DISTANCE",R.QueryLexer.BOOST="BOOST",R.QueryLexer.PRESENCE="PRESENCE",R.QueryLexer.lexField=function(e){return e.backup(),e.emit(R.QueryLexer.FIELD),e.ignore(),R.QueryLexer.lexText},R.QueryLexer.lexTerm=function(e){if(e.width()>1&&(e.backup(),e.emit(R.QueryLexer.TERM)),e.ignore(),e.more())return R.QueryLexer.lexText},R.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(R.QueryLexer.EDIT_DISTANCE),R.QueryLexer.lexText},R.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(R.QueryLexer.BOOST),R.QueryLexer.lexText},R.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(R.QueryLexer.TERM)},R.QueryLexer.termSeparator=R.tokenizer.separator,R.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==R.QueryLexer.EOS)return R.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(":"==t)return R.QueryLexer.lexField;if("~"==t)return e.backup(),e.width()>0&&e.emit(R.QueryLexer.TERM),R.QueryLexer.lexEditDistance;if("^"==t)return e.backup(),e.width()>0&&e.emit(R.QueryLexer.TERM),R.QueryLexer.lexBoost;if("+"==t&&1===e.width())return e.emit(R.QueryLexer.PRESENCE),R.QueryLexer.lexText;if("-"==t&&1===e.width())return e.emit(R.QueryLexer.PRESENCE),R.QueryLexer.lexText;if(t.match(R.QueryLexer.termSeparator))return R.QueryLexer.lexTerm}else e.escapeCharacter()}},R.QueryParser=function(e,t){this.lexer=new R.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},R.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=R.QueryParser.parseClause;e;)e=e(this);return this.query},R.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},R.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},R.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},R.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(null!=t)switch(t.type){case R.QueryLexer.PRESENCE:return R.QueryParser.parsePresence;case R.QueryLexer.FIELD:return R.QueryParser.parseField;case R.QueryLexer.TERM:return R.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+t.type;throw t.str.length>=1&&(n+=" with value '"+t.str+"'"),new R.QueryParseError(n,t.start,t.end)}},R.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(null!=t){switch(t.str){case"-":e.currentClause.presence=R.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=R.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+t.str+"'";throw new R.QueryParseError(n,t.start,t.end)}var r=e.peekLexeme();if(null==r){n="expecting term or field, found nothing";throw new R.QueryParseError(n,t.start,t.end)}switch(r.type){case R.QueryLexer.FIELD:return R.QueryParser.parseField;case R.QueryLexer.TERM:return R.QueryParser.parseTerm;default:n="expecting term or field, found '"+r.type+"'";throw new R.QueryParseError(n,r.start,r.end)}}},R.QueryParser.parseField=function(e){var t=e.consumeLexeme();if(null!=t){if(-1==e.query.allFields.indexOf(t.str)){var n=e.query.allFields.map((function(e){return"'"+e+"'"})).join(", "),r="unrecognised field '"+t.str+"', possible fields: "+n;throw new R.QueryParseError(r,t.start,t.end)}e.currentClause.fields=[t.str];var a=e.peekLexeme();if(null==a){r="expecting term, found nothing";throw new R.QueryParseError(r,t.start,t.end)}if(a.type===R.QueryLexer.TERM)return R.QueryParser.parseTerm;r="expecting term, found '"+a.type+"'";throw new R.QueryParseError(r,a.start,a.end)}},R.QueryParser.parseTerm=function(e){var t=e.consumeLexeme();if(null!=t){e.currentClause.term=t.str.toLowerCase(),-1!=t.str.indexOf("*")&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(null!=n)switch(n.type){case R.QueryLexer.TERM:return e.nextClause(),R.QueryParser.parseTerm;case R.QueryLexer.FIELD:return e.nextClause(),R.QueryParser.parseField;case R.QueryLexer.EDIT_DISTANCE:return R.QueryParser.parseEditDistance;case R.QueryLexer.BOOST:return R.QueryParser.parseBoost;case R.QueryLexer.PRESENCE:return e.nextClause(),R.QueryParser.parsePresence;default:var r="Unexpected lexeme type '"+n.type+"'";throw new R.QueryParseError(r,n.start,n.end)}else e.nextClause()}},R.QueryParser.parseEditDistance=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var r="edit distance must be numeric";throw new R.QueryParseError(r,t.start,t.end)}e.currentClause.editDistance=n;var a=e.peekLexeme();if(null!=a)switch(a.type){case R.QueryLexer.TERM:return e.nextClause(),R.QueryParser.parseTerm;case R.QueryLexer.FIELD:return e.nextClause(),R.QueryParser.parseField;case R.QueryLexer.EDIT_DISTANCE:return R.QueryParser.parseEditDistance;case R.QueryLexer.BOOST:return R.QueryParser.parseBoost;case R.QueryLexer.PRESENCE:return e.nextClause(),R.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+a.type+"'";throw new R.QueryParseError(r,a.start,a.end)}else e.nextClause()}},R.QueryParser.parseBoost=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var r="boost must be numeric";throw new R.QueryParseError(r,t.start,t.end)}e.currentClause.boost=n;var a=e.peekLexeme();if(null!=a)switch(a.type){case R.QueryLexer.TERM:return e.nextClause(),R.QueryParser.parseTerm;case R.QueryLexer.FIELD:return e.nextClause(),R.QueryParser.parseField;case R.QueryLexer.EDIT_DISTANCE:return R.QueryParser.parseEditDistance;case R.QueryLexer.BOOST:return R.QueryParser.parseBoost;case R.QueryLexer.PRESENCE:return e.nextClause(),R.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+a.type+"'";throw new R.QueryParseError(r,a.start,a.end)}else e.nextClause()}},void 0===(a="function"==typeof(r=function(){return R})?r.call(t,n,t,e):r)||(e.exports=a)}()},27861:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={icon:"icon_S7Kx",s:"s_AZDZ",m:"m_thRi",l:"l_WHPt",fill:"fill_hNhN",stroke:"stroke_N8dm"}},10153:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={backdrop:"backdrop_Ifvc",navWrapper:"navWrapper_ybYI",nav:"nav_cMpg",visible:"visible_ynAX",wrapper:"wrapper_SWrM",fullscreenButton:"fullscreenButton_Bocn",active:"active_qZD5"}},8633:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={toggle:"toggle_K23S",toggleButton:"toggleButton_dl49",darkToggleIcon:"darkToggleIcon_lKkA",lightToggleIcon:"lightToggleIcon_K4TL",toggleButtonDisabled:"toggleButtonDisabled_AAS_"}},79762:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={firstRow:"firstRow_ar1q",secondRow:"secondRow__ww3",backToTop:"backToTop_wDfN",footerLink:"footerLink_sh7M"}},90826:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={colorModeToggle:"colorModeToggle_GSaI",rightSection:"rightSection_CLeF",iconButtonGroup:"iconButtonGroup_ktNv"}},83244:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={dropdownNavbarItem:"dropdownNavbarItem_o23I"}},31259:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={modal:"modal_kLVz",closeButton:"closeButton_Rr0e",header:"header_QwCa"}},61699:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={root:"root_ONDG",empty:"empty_a7qb",title:"title_uwS_",item:"item_RHYF",itemTitle:"itemTitle_jtAv"}},9592:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={root:"root_xZfc",textField:"textField_af43"}},1443:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={root:"root_N57j"}},18589:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={root:"root_Ooa0",level1:"level1_fpUf",icon:"icon_sZn2",fill:"fill_fkan",stroke:"stroke_j3wH"}},86620:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={root:"root_JWD1"}},38076:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={root:"root_EFVO"}},20550:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={root:"root_ltHz",noResults:"noResults_mD2O",groups:"groups_p1lF",divider:"divider_eGUz",topBar:"topBar_Dtew"}},22473:(e,t,n)=>{"use strict";n.r(t)},11057:(e,t,n)=>{"use strict";n.r(t)},93878:(e,t,n)=>{"use strict";n.r(t)},32497:(e,t,n)=>{"use strict";n.r(t)},97087:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={navbarHideable:"navbarHideable_OoEf",navbarHidden:"navbarHidden_zoxl"}},88822:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={linkContent:"linkContent__x3v",externalLinkIcon:"externalLinkIcon_Qfue"}},65787:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={themedImage:"themedImage_kfRS","themedImage--light":"themedImage--light_BL8e","themedImage--dark":"themedImage--dark_OvIx"}},36459:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={root:"root_QACb"}},97142:(e,t)=>{"use strict";t.I=function(e){e.client&&(document.head.appendChild(e.msh=document.createElement("style")),e.createRule=function(t,n){var r=t+"{}";n&&(r=n+"{"+r+"}");var a=n?e.msh.sheet:e.sh.sheet,o=a.insertRule(r,a.cssRules.length),i=(a.cssRules||a.rules)[o];if(i.index=o,n){var l=(i.cssRules||i.rules)[0];i.style=l.style,i.styleMap=l.styleMap}return i})}},52099:(e,t,n)=>{"use strict";var r=n(39662).D;t.I=function(e){if(e.client){0;var t=e.kebab;n.prototype.diff=function(e){var n,r=this.decl,a=this.rule.style;for(n in r)void 0===e[n]&&a.removeProperty(n);for(n in e)e[n]!==r[n]&&a.setProperty(t(n),e[n]);this.decl=e},n.prototype.del=function(){r(this.rule)},a.prototype.diff=function(e){var t=this.tree;for(var r in t)if(void 0===e[r]){var a=t[r];for(var o in a)a[o].del()}for(var r in e)if(void 0===t[r])for(var o in e[r]){(s=new n(o,r)).diff(e[r][o]),e[r][o]=s}else{var i=t[r],l=e[r];for(var o in i)l[o]||i[o].del();for(var o in l){var s;(s=i[o])?(s.diff(l[o]),l[o]=s):((s=new n(o,r)).diff(l[o]),l[o]=s)}}this.tree=e},e.VRule=n,e.VSheet=a}function n(t,n){this.rule=e.createRule(t,n),this.decl={}}function a(){this.tree={}}}},87749:(e,t)=>{t.z=function e(t,n,r,a){var o,i,l={},s=!1;for(o in n)"object"!=typeof(i=n[o])&&(s=!0,l[o]=i);for(o in s&&(t[a]||(t[a]={}),t[a][r]=l),n)if("object"==typeof(i=n[o]))if("@"===o[0])e(t,i,r,o);else{var u=o.indexOf("&")>-1,c=r.split(",");if(u)for(var d=0;d<c.length;d++)c[d]=o.replace(/&/g,c[d]);else for(d=0;d<c.length;d++)c[d]=c[d]+" "+o;e(t,i,c.join(","),a)}}},39662:(e,t)=>{t.D=function(e){var t=e.index,n=e.parentStyleSheet,r=n.cssRules||n.rules;for(t=Math.max(t,r.length-1);t>=0;){if(r[t]===e){n.deleteRule(t);break}t--}}},40818:(e,t)=>{"use strict";var n=/[A-Z]/g;t.U=function(e){var t=(e=e||{}).assign||Object.assign;var r=t({raw:"",pfx:"_",client:"object"==typeof window,assign:t,stringify:JSON.stringify,kebab:function(e){return e.replace(n,"-$&").toLowerCase()},decl:function(e,t){return(e=r.kebab(e))+":"+t+";"},hash:function(e){return function(e){for(var t=5381,n=e.length;n;)t=33*t^e.charCodeAt(--n);return"_"+(t>>>0).toString(36)}(r.stringify(e))},selector:function(e,t){return e+(":"===t[0]?"":" ")+t},putRaw:function(e){r.raw+=e}},e);return r.client&&(r.sh||document.head.appendChild(r.sh=document.createElement("style")),r.putRaw=function(e){var t=r.sh.sheet;try{t.insertRule(e,t.cssRules.length)}catch(n){}}),r.put=function(e,t,n){var a,o,i="",l=[];for(a in t)(o=t[a])instanceof Object&&!(o instanceof Array)?l.push(a):i+=r.decl(a,o,e,n);i&&(i=e+"{"+i+"}",r.putRaw(n?n+"{"+i+"}":i));for(var s=0;s<l.length;s++)"@"===(a=l[s])[0]&&"@font-face"!==a?r.putAt(e,t[a],a):r.put(r.selector(e,a),t[a],n)},r.putAt=r.put,r}},74865: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:'<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'};function a(e,t,n){return e<t?t:e>n?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),u=o.querySelector(r.barSelector),c=r.speed,d=r.easing;return o.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,i(e,c,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){s(o,{transition:"all "+c+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),c)}),c)):setTimeout(t,c)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*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");c(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),u=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),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&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 u(e,t){return("string"==typeof e?e:f(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=f(e),r=n+t;u(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=f(e);u(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)},27418:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(a){return!1}}()?Object.assign:function(e,a){for(var o,i,l=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),s=1;s<arguments.length;s++){for(var u in o=Object(arguments[s]))n.call(o,u)&&(l[u]=o[u]);if(t){i=t(o);for(var c=0;c<i.length;c++)r.call(o,i[c])&&(l[i[c]]=o[i[c]])}}return l}},87594:(e,t)=>{function n(e){let t,n=[];for(let r of e.split(",").map((e=>e.trim())))if(/^-?\d+$/.test(r))n.push(parseInt(r,10));else if(t=r.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,r,a,o]=t;if(r&&o){r=parseInt(r),o=parseInt(o);const e=r<o?1:-1;"-"!==a&&".."!==a&&"\u2025"!==a||(o+=e);for(let t=r;t!==o;t+=e)n.push(t)}}return n}t.default=n,e.exports=n},87410:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof a?new a(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++t}),e.__id},clone:function e(t,n){var a,o;switch(n=n||{},r.util.type(t)){case"Object":if(o=r.util.objId(t),n[o])return n[o];for(var i in a={},n[o]=a,t)t.hasOwnProperty(i)&&(a[i]=e(t[i],n));return a;case"Array":return o=r.util.objId(t),n[o]?n[o]:(a=[],n[o]=a,t.forEach((function(t,r){a[r]=e(t,n)})),a);default:return t}},getLanguage:function(t){for(;t;){var n=e.exec(t.className);if(n)return n[1].toLowerCase();t=t.parentElement}return"none"},setLanguage:function(t,n){t.className=t.className.replace(RegExp(e,"gi"),""),t.classList.add("language-"+n)},isActive:function(e,t,n){for(var r="no-"+t;e;){var a=e.classList;if(a.contains(t))return!0;if(a.contains(r))return!1;e=e.parentElement}return!!n}},languages:{plain:n,plaintext:n,text:n,txt:n,extend:function(e,t){var n=r.util.clone(r.languages[e]);for(var a in t)n[a]=t[a];return n},insertBefore:function(e,t,n,a){var o=(a=a||r.languages)[e],i={};for(var l in o)if(o.hasOwnProperty(l)){if(l==t)for(var s in n)n.hasOwnProperty(s)&&(i[s]=n[s]);n.hasOwnProperty(l)||(i[l]=o[l])}var u=a[e];return a[e]=i,r.languages.DFS(r.languages,(function(t,n){n===u&&t!=e&&(this[t]=i)})),i},DFS:function e(t,n,a,o){o=o||{};var i=r.util.objId;for(var l in t)if(t.hasOwnProperty(l)){n.call(t,l,t[l],a||l);var s=t[l],u=r.util.type(s);"Object"!==u||o[i(s)]?"Array"!==u||o[i(s)]||(o[i(s)]=!0,e(s,n,l,o)):(o[i(s)]=!0,e(s,n,null,o))}}},plugins:{},highlight:function(e,t,n){var o={code:e,grammar:t,language:n};return r.hooks.run("before-tokenize",o),o.tokens=r.tokenize(o.code,o.grammar),r.hooks.run("after-tokenize",o),a.stringify(r.util.encode(o.tokens),o.language)},tokenize:function(e,t){var n=t.rest;if(n){for(var r in n)t[r]=n[r];delete t.rest}var a=new l;return s(a,a.head,e),i(e,a,t,a.head,0),function(e){var t=[],n=e.head.next;for(;n!==e.tail;)t.push(n.value),n=n.next;return t}(a)},hooks:{all:{},add:function(e,t){var n=r.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=r.hooks.all[e];if(n&&n.length)for(var a,o=0;a=n[o++];)a(t)}},Token:a};function a(e,t,n,r){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length}function o(e,t,n,r){e.lastIndex=t;var a=e.exec(n);if(a&&r&&a[1]){var o=a[1].length;a.index+=o,a[0]=a[0].slice(o)}return a}function i(e,t,n,l,c,d){for(var f in n)if(n.hasOwnProperty(f)&&n[f]){var p=n[f];p=Array.isArray(p)?p:[p];for(var h=0;h<p.length;++h){if(d&&d.cause==f+","+h)return;var m=p[h],g=m.inside,v=!!m.lookbehind,b=!!m.greedy,y=m.alias;if(b&&!m.pattern.global){var w=m.pattern.toString().match(/[imsuy]*$/)[0];m.pattern=RegExp(m.pattern.source,w+"g")}for(var x=m.pattern||m,k=l.next,_=c;k!==t.tail&&!(d&&_>=d.reach);_+=k.value.length,k=k.next){var E=k.value;if(t.length>e.length)return;if(!(E instanceof a)){var S,C=1;if(b){if(!(S=o(x,_,e,v))||S.index>=e.length)break;var T=S.index,O=S.index+S[0].length,D=_;for(D+=k.value.length;T>=D;)D+=(k=k.next).value.length;if(_=D-=k.value.length,k.value instanceof a)continue;for(var P=k;P!==t.tail&&(D<O||"string"==typeof P.value);P=P.next)C++,D+=P.value.length;C--,E=e.slice(_,D),S.index-=_}else if(!(S=o(x,0,E,v)))continue;T=S.index;var N=S[0],I=E.slice(0,T),A=E.slice(T+N.length),L=_+E.length;d&&L>d.reach&&(d.reach=L);var R=k.prev;if(I&&(R=s(t,R,I),_+=I.length),u(t,R,C),k=s(t,R,new a(f,g?r.tokenize(N,g):N,y,N)),A&&s(t,k,A),C>1){var j={cause:f+","+h,reach:L};i(e,t,n,k.prev,_,j),d&&j.reach>d.reach&&(d.reach=j.reach)}}}}}}function l(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function s(e,t,n){var r=t.next,a={value:n,prev:t,next:r};return t.next=a,r.prev=a,e.length++,a}function u(e,t,n){for(var r=t.next,a=0;a<n&&r!==e.tail;a++)r=r.next;t.next=r,r.prev=t,e.length-=a}return a.stringify=function e(t,n){if("string"==typeof t)return t;if(Array.isArray(t)){var a="";return t.forEach((function(t){a+=e(t,n)})),a}var o={type:t.type,content:e(t.content,n),tag:"span",classes:["token",t.type],attributes:{},language:n},i=t.alias;i&&(Array.isArray(i)?Array.prototype.push.apply(o.classes,i):o.classes.push(i)),r.hooks.run("wrap",o);var l="";for(var s in o.attributes)l+=" "+s+'="'+(o.attributes[s]||"").replace(/"/g,""")+'"';return"<"+o.tag+' class="'+o.classes.join(" ")+'"'+l+">"+o.content+"</"+o.tag+">"},r}(),a=r;r.default=r,a.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.languages.markup.doctype.inside["internal-subset"].inside=a.languages.markup,a.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(a.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:a.languages[t]},n.cdata=/^<!\[CDATA\[|\]\]>$/i;var r={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:a.languages[t]};var o={};o[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},a.languages.insertBefore("markup","cdata",o)}}),Object.defineProperty(a.languages.markup.tag,"addAttribute",{value:function(e,t){a.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:a.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.xml=a.languages.extend("markup",{}),a.languages.ssml=a.languages.xml,a.languages.atom=a.languages.xml,a.languages.rss=a.languages.xml,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+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},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|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|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|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","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=r.variable[1].inside,i=0;i<a.length;i++)o[a[i]]=e.languages.bash[a[i]];e.languages.shell=e.languages.bash}(a),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},a.languages.c=a.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),a.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),a.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},a.languages.c.string],char:a.languages.c.char,comment:a.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:a.languages.c}}}}),a.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete a.languages.c.boolean,function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!<keyword>)\w+(?:\s*\.\s*\w+)*\b/.source.replace(/<keyword>/g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!<keyword>)\w+/.source.replace(/<keyword>/g,(function(){return t.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/<mod-name>(?:\s*:\s*<mod-name>)?|:\s*<mod-name>/.source.replace(/<mod-name>/g,(function(){return n}))+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(a),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(a),function(e){var t,n=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+n.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[n,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var r={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},a={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0};e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:r,number:a,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:a})}(a),a.languages.javascript=a.languages.extend("clike",{"class-name":[a.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),a.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,a.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:a.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:a.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:a.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:a.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:a.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),a.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),a.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),a.languages.markup&&(a.languages.markup.tag.addInlined("script","javascript"),a.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),a.languages.js=a.languages.javascript,function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(a),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-]<PLAIN>)(?:[ \t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(/<PLAIN>/g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),o=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<<prop>>[ \t]+)?)(?:<<value>>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<value>>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<<prop>>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<<prop>>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<<prop>>[ \t]+)?)<<key>>(?=\s*:\s)/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<key>>/g,(function(){return"(?:"+a+"|"+o+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(o),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(a),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(/<inner>/g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),o=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+o+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+o+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\b|\*\*(?:(?!\*)<inner>|\*(?:(?!\*)<inner>)+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\b|\*(?:(?!\*)<inner>|\*\*(?:(?!\*)<inner>)+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~)<inner>)+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\])<inner>)+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\])<inner>)+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike","code-snippet"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n<r;n++){var a=t[n];if("code"===a.type){var o=a.content[1],i=a.content[3];if(o&&i&&"code-language"===o.type&&"code-block"===i.type&&"string"==typeof o.content){var l=o.content.replace(/\b#/g,"sharp").replace(/\b\+\+/g,"pp"),s="language-"+(l=(/[a-z][\w-]*/i.exec(l)||[""])[0].toLowerCase());i.alias?"string"==typeof i.alias?i.alias=[i.alias,s]:i.alias.push(s):i.alias=[s]}}else e(a.content)}}(e.tokens)})),e.hooks.add("wrap",(function(t){if("code-block"===t.type){for(var n="",r=0,a=t.classes.length;r<a;r++){var o=t.classes[r],u=/language-(.+)/.exec(o);if(u){n=u[1];break}}var c,d=e.languages[n];if(d)t.content=e.highlight((c=t.content,c.replace(i,"").replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi,(function(e,t){var n;if("#"===(t=t.toLowerCase())[0])return n="x"===t[1]?parseInt(t.slice(2),16):Number(t.slice(1)),s(n);var r=l[t];return r||e}))),d,n);else if(n&&"none"!==n&&e.plugins.autoloader){var f="md-"+(new Date).valueOf()+"-"+Math.floor(1e16*Math.random());t.attributes.id=f,e.plugins.autoloader.loadLanguages(n,(function(){var t=document.getElementById(f);t&&(t.innerHTML=e.highlight(t.textContent,e.languages[n],n))}))}}}));var i=RegExp(e.languages.markup.tag.pattern.source,"gi"),l={amp:"&",lt:"<",gt:">",quot:'"'},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(a),a.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:a.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},a.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var t=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),n=0;n<t.length;){var r=t[n++];if("keyword"===r.type&&"mutation"===r.content){var a=[];if(d(["definition-mutation","punctuation"])&&"("===c(1).content){n+=2;var o=f(/^\($/,/^\)$/);if(-1===o)continue;for(;n<o;n++){var i=c(0);"variable"===i.type&&(p(i,"variable-input"),a.push(i.content))}n=o+1}if(d(["punctuation","property-query"])&&"{"===c(0).content&&(n++,p(c(0),"property-mutation"),a.length>0)){var l=f(/^\{$/,/^\}$/);if(-1===l)continue;for(var s=n;s<l;s++){var u=t[s];"variable"===u.type&&a.indexOf(u.content)>=0&&p(u,"variable-input")}}}}function c(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n<e.length;n++){var r=c(n+t);if(!r||r.type!==e[n])return!1}return!0}function f(e,r){for(var a=1,o=n;o<t.length;o++){var i=t[o],l=i.content;if("punctuation"===i.type&&"string"==typeof l)if(e.test(l))a++;else if(r.test(l)&&0===--a)return o}return-1}function p(e,t){var n=e.alias;n?Array.isArray(n)||(e.alias=n=[n]):e.alias=n=[],n.push(t)}})),a.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,a=r.inside["interpolation-punctuation"],o=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function l(e,t){return"___"+t.toUpperCase()+"_"+e+"___"}function s(t,n,r){var a={code:t,grammar:n,language:r};return e.hooks.run("before-tokenize",a),a.tokens=e.tokenize(a.code,a.grammar),e.hooks.run("after-tokenize",a),a.tokens}function u(t){var n={};n["interpolation-punctuation"]=a;var o=e.tokenize(t,n);if(3===o.length){var i=[1,1];i.push.apply(i,s(o[1],e.languages.javascript,"javascript")),o.splice.apply(o,i)}return new e.Token("interpolation",o,r.alias,t)}function c(t,n,r){var a=e.tokenize(t,{interpolation:{pattern:RegExp(o),lookbehind:!0}}),i=0,c={},d=s(a.map((function(e){if("string"==typeof e)return e;for(var n,a=e.content;-1!==t.indexOf(n=l(i++,r)););return c[n]=a,n})).join(""),n,r),f=Object.keys(c);return i=0,function e(t){for(var n=0;n<t.length;n++){if(i>=f.length)return;var r=t[n];if("string"==typeof r||"string"==typeof r.content){var a=f[i],o="string"==typeof r?r:r.content,l=o.indexOf(a);if(-1!==l){++i;var s=o.substring(0,l),d=u(c[a]),p=o.substring(l+a.length),h=[];if(s&&h.push(s),h.push(d),p){var m=[p];e(m),h.push.apply(h,m)}"string"==typeof r?(t.splice.apply(t,[n,1].concat(h)),n+=h.length-1):r.content=h}}else{var g=r.content;Array.isArray(g)?e(g):e([g])}}}(d),new e.Token(r,d,"language-"+r,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var d={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function f(e){return"string"==typeof e?e:Array.isArray(e)?e.map(f).join(""):f(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in d&&function t(n){for(var r=0,a=n.length;r<a;r++){var o=n[r];if("string"!=typeof o){var i=o.content;if(Array.isArray(i))if("template-string"===o.type){var l=i[1];if(3===i.length&&"string"!=typeof l&&"embedded-code"===l.type){var s=f(l),u=l.alias,d=Array.isArray(u)?u[0]:u,p=e.languages[d];if(!p)continue;i[1]=c(s,p,d)}}else t(i);else"string"!=typeof i&&t([i])}}}(t.tokens)}))}(a),function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(a),function(e){function t(e,t){return RegExp(e.replace(/<ID>/g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:<ID>(?:\s*,\s*(?:\*\s*as\s+<ID>|\{[^{}]*\}))?|\*\s*as\s+<ID>|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+<ID>)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?<ID>/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r<n.length;r++){var a=n[r],o=e.languages.javascript[a];"RegExp"===e.util.type(o)&&(o=e.languages.javascript[a]={pattern:o});var i=o.inside||{};o.inside=i,i["maybe-class-name"]=/^[A-Z][\s\S]*/}}(a),function(e){var t=e.util.clone(e.languages.javascript),n=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,r=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,a=/(?:\{<S>*\.{3}(?:[^{}]|<BRACES>)*\})/.source;function o(e,t){return e=e.replace(/<S>/g,(function(){return n})).replace(/<BRACES>/g,(function(){return r})).replace(/<SPREAD>/g,(function(){return a})),RegExp(e,t)}a=o(a).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=o(/<\/?(?:[\w.:-]+(?:<S>+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|<BRACES>))?|<SPREAD>))*<S>*\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:o(/<SPREAD>/.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:o(/=<BRACES>/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var i=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(i).join(""):""},l=function(t){for(var n=[],r=0;r<t.length;r++){var a=t[r],o=!1;if("string"!=typeof a&&("tag"===a.type&&a.content[0]&&"tag"===a.content[0].type?"</"===a.content[0].content[0].content?n.length>0&&n[n.length-1].tagName===i(a.content[0].content[1])&&n.pop():"/>"===a.content[a.content.length-1].content||n.push({tagName:i(a.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===a.type&&"{"===a.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===a.type&&"}"===a.content?n[n.length-1].openedBraces--:o=!0),(o||"string"==typeof a)&&n.length>0&&0===n[n.length-1].openedBraces){var s=i(a);r<t.length-1&&("string"==typeof t[r+1]||"plain-text"===t[r+1].type)&&(s+=i(t[r+1]),t.splice(r+1,1)),r>0&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(s=i(t[r-1])+s,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",s,null,s)}a.content&&"string"!=typeof a.content&&l(a.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||l(e.tokens)}))}(a),function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(t).forEach((function(n){var r=t[n],a=[];/^\w+$/.test(n)||a.push(/\w+/.exec(n)[0]),"diff"===n&&a.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:a,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}})),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(a),a.languages.git={comment:/^#.*/m,deleted:/^[-\u2013].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},a.languages.go=a.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),a.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete a.languages.go["class-name"],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<l.length&&!(a>=o.length);s++){var u=l[s];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=o[a],d=n.tokenStack[c],f="string"==typeof u?u:u.content,p=t(r,c),h=f.indexOf(p);if(h>-1){++a;var m=f.substring(0,h),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),v=f.substring(h+p.length),b=[];m&&b.push.apply(b,i([m])),b.push(g),v&&b.push.apply(b,i([v])),"string"==typeof u?l.splice.apply(l,[s,1].concat(b)):u.content=b}}else u.content&&i(u.content)}return l}(n.tokens)}}}})}(a),function(e){e.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:false|true)\b/,block:{pattern:/^(\s*(?:~\s*)?)[#\/]\S+?(?=\s*(?:~\s*)?$|\s)/,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&':()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",(function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")})),e.languages.hbs=e.languages.handlebars}(a),a.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"}},a.languages.webmanifest=a.languages.json,a.languages.less=a.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/,operator:/[+\-*\/]/}),a.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),a.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"builtin-target":{pattern:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,alias:"builtin"},target:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,alias:"symbol",inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,function:{pattern:/(\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \t])/,lookbehind:!0},operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},a.languages.objectivec=a.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<<?=?|>>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete a.languages.objectivec["class-name"],a.languages.objc=a.languages.objectivec,a.languages.ocaml={comment:{pattern:/\(\*[\s\S]*?\*\)/,greedy:!0},char:{pattern:/'(?:[^\\\r\n']|\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,greedy:!0},string:[{pattern:/"(?:\\(?:[\s\S]|\r\n)|[^\\\r\n"])*"/,greedy:!0},{pattern:/\{([a-z_]*)\|[\s\S]*?\|\1\}/,greedy:!0}],number:[/\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\b/i,/\b0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]*)?(?:p[+-]?\d[\d_]*)?(?!\w)/i,/\b\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?\d[\d_]*)?(?!\w)/i],directive:{pattern:/\B#\w+/,alias:"property"},label:{pattern:/\B~\w+/,alias:"property"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"symbol"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,"operator-like-punctuation":{pattern:/\[[<>|]|[>|]\]|\{<|>\}/,alias:"punctuation"},operator:/\.[.~]|:[=>]|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/;;|::|[(){}\[\].,:;#]|\b_\b/},a.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},a.languages.python["string-interpolation"].inside.interpolation.inside.rest=a.languages.python,a.languages.py=a.languages.python,a.languages.reason=a.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),a.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete a.languages.reason.function,function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|not|or)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})}(a),a.languages.scss=a.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),a.languages.insertBefore("scss","atrule",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),a.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),a.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),a.languages.scss.atrule.inside.rest=a.languages.scss,function(e){var t={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},n={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},r={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/\burl\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:else|for|if|return|unless)(?=\s|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,boolean:/\b(?:false|true)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:n,punctuation:/[{}()\[\];:,]/};r.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^\{|\}$/,alias:"punctuation"},rest:r}},r.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:r}},e.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:r}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:r}},statement:{pattern:/(^[ \t]*)(?:else|for|if|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:r}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,]$(?!(?:\r?\n|\r)(?:\{|\2[ \t])))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:r.interpolation}},rest:r}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t])))/m,lookbehind:!0,inside:{interpolation:r.interpolation,comment:r.comment,punctuation:/[{},]/}},func:r.func,string:r.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:r.interpolation,punctuation:/[{}()\[\];:.]/}}(a),function(e){var t=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"];var n=e.languages.tsx.tag;n.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+n.pattern.source+")",n.pattern.flags),n.lookbehind=!0}(a),a.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^`|~]+/,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/};const o=a},29901:e=>{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to <a href="https://webplatform.github.io/docs/">WebPlatform.org documentation</a>. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (<code>.comment</code> can become <code>.namespace--comment</code>) or replace them with your defined ones (like <code>.editor__comment</code>). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the <code>highlightAll</code> and <code>highlightAllUnder</code> methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},2885:(e,t,n)=>{const r=n(29901),a=n(39642),o=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...o,...Object.keys(Prism.languages)];a(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(16500).resolve(t)],delete Prism.languages[e],n(16500)(t),o.add(e)}))}i.silent=!1,e.exports=i},6726:(e,t,n)=>{var r={"./":2885};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=6726},16500:(e,t,n)=>{var r={"./":2885};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=16500},39642:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n<r;n++)t[e[n]]=!0;return t}function r(e){var n={},r=[];function a(r,o){if(!(r in n)){o.push(r);var i=o.indexOf(r);if(i<o.length-1)throw new Error("Circular dependency: "+o.slice(i).join(" -> "));var l={},s=e[r];if(s){function u(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in l))for(var i in a(t,o),l[t]=!0,n[t])l[i]=!0}t(s.require,u),t(s.optional,u),t(s.modify,u)}n[r]=l,o.pop()}}return function(e){var t=n[e];return t||(a(e,r),t=n[e]),t}}function a(e){for(var t in e)return!0;return!1}return function(o,i,l){var s=function(e){var t={};for(var n in e){var r=e[n];for(var a in r)if("meta"!=a){var o=r[a];t[a]="string"==typeof o?{title:o}:o}}return t}(o),u=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var a in n={},e){var o=e[a];t(o&&o.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+a+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+a+" because it is a component.");n[t]=a}))}return n[r]||r}}(s);i=i.map(u),l=(l||[]).map(u);var c=n(i),d=n(l);i.forEach((function e(n){var r=s[n];t(r&&r.require,(function(t){t in d||(c[t]=!0,e(t))}))}));for(var f,p=r(s),h=c;a(h);){for(var m in f={},h){var g=s[m];t(g&&g.modify,(function(e){e in d&&(f[e]=!0)}))}for(var v in d)if(!(v in c))for(var b in p(v))if(b in c){f[v]=!0;break}for(var y in h=f)c[y]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,a){var o=a?a.series:void 0,i=a?a.parallel:e,l={},s={};function u(e){if(e in l)return l[e];s[e]=!0;var a,c=[];for(var d in t(e))d in n&&c.push(d);if(0===c.length)a=r(e);else{var f=i(c.map((function(e){var t=u(e);return delete s[e],t})));o?a=o(f,(function(){return r(e)})):r(e)}return l[e]=a}for(var c in n)u(c);var d=[];for(var f in s)d.push(l[f]);return i(d)}(p,c,t,n)}};return w}}();e.exports=t},92703:(e,t,n)=>{"use strict";var r=n(50414);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}},45697:(e,t,n)=>{e.exports=n(92703)()},50414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},64448:(e,t,n)=>{"use strict";var r=n(67294),a=n(27418),o=n(63840);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}if(!r)throw Error(i(227));var l=new Set,s={};function u(e,t){c(e,t),c(e+"Capture",t)}function c(e,t){for(s[e]=t,e=0;e<t.length;e++)l.add(t[e])}var d=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),f=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,p=Object.prototype.hasOwnProperty,h={},m={};function g(e,t,n,r,a,o,i){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=a,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=i}var v={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){v[e]=new g(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];v[t]=new g(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){v[e]=new g(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){v[e]=new g(e,2,!1,e,null,!1,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){v[e]=new g(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){v[e]=new g(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){v[e]=new g(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){v[e]=new g(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){v[e]=new g(e,5,!1,e.toLowerCase(),null,!1,!1)}));var b=/[\-:]([a-z])/g;function y(e){return e[1].toUpperCase()}function w(e,t,n,r){var a=v.hasOwnProperty(t)?v[t]:null;(null!==a?0===a.type:!r&&(2<t.length&&("o"===t[0]||"O"===t[0])&&("n"===t[1]||"N"===t[1])))||(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,a,r)&&(n=null),r||null===a?function(e){return!!p.call(m,e)||!p.call(h,e)&&(f.test(e)?m[e]=!0:(h[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):a.mustUseProperty?e[a.propertyName]=null===n?3!==a.type&&"":n:(t=a.attributeName,r=a.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(a=a.type)||4===a&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(b,y);v[t]=new g(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(b,y);v[t]=new g(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(b,y);v[t]=new g(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){v[e]=new g(e,1,!1,e.toLowerCase(),null,!1,!1)})),v.xlinkHref=new g("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){v[e]=new g(e,1,!1,e.toLowerCase(),null,!0,!0)}));var x=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,k=60103,_=60106,E=60107,S=60108,C=60114,T=60109,O=60110,D=60112,P=60113,N=60120,I=60115,A=60116,L=60121,R=60128,j=60129,M=60130,F=60131;if("function"==typeof Symbol&&Symbol.for){var B=Symbol.for;k=B("react.element"),_=B("react.portal"),E=B("react.fragment"),S=B("react.strict_mode"),C=B("react.profiler"),T=B("react.provider"),O=B("react.context"),D=B("react.forward_ref"),P=B("react.suspense"),N=B("react.suspense_list"),I=B("react.memo"),A=B("react.lazy"),L=B("react.block"),B("react.scope"),R=B("react.opaque.id"),j=B("react.debug_trace_mode"),M=B("react.offscreen"),F=B("react.legacy_hidden")}var z,$="function"==typeof Symbol&&Symbol.iterator;function U(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=$&&e[$]||e["@@iterator"])?e:null}function H(e){if(void 0===z)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);z=t&&t[1]||""}return"\n"+z+e}var V=!1;function q(e,t){if(!e||V)return"";V=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(s){var r=s}Reflect.construct(e,[],t)}else{try{t.call()}catch(s){r=s}e.call(t.prototype)}else{try{throw Error()}catch(s){r=s}e()}}catch(s){if(s&&r&&"string"==typeof s.stack){for(var a=s.stack.split("\n"),o=r.stack.split("\n"),i=a.length-1,l=o.length-1;1<=i&&0<=l&&a[i]!==o[l];)l--;for(;1<=i&&0<=l;i--,l--)if(a[i]!==o[l]){if(1!==i||1!==l)do{if(i--,0>--l||a[i]!==o[l])return"\n"+a[i].replace(" at new "," at ")}while(1<=i&&0<=l);break}}}finally{V=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?H(e):""}function W(e){switch(e.tag){case 5:return H(e.type);case 16:return H("Lazy");case 13:return H("Suspense");case 19:return H("SuspenseList");case 0:case 2:case 15:return e=q(e.type,!1);case 11:return e=q(e.type.render,!1);case 22:return e=q(e.type._render,!1);case 1:return e=q(e.type,!0);default:return""}}function G(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case E:return"Fragment";case _:return"Portal";case C:return"Profiler";case S:return"StrictMode";case P:return"Suspense";case N:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case O:return(e.displayName||"Context")+".Consumer";case T:return(e._context.displayName||"Context")+".Provider";case D:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case I:return G(e.type);case L:return G(e._render);case A:t=e._payload,e=e._init;try{return G(e(t))}catch(n){}}return null}function Z(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function Q(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function Y(e){e._valueTracker||(e._valueTracker=function(e){var t=Q(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var a=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return a.call(this)},set:function(e){r=""+e,o.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function X(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=Q(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function K(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function J(e,t){var n=t.checked;return a({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function ee(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=Z(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function te(e,t){null!=(t=t.checked)&&w(e,"checked",t,!1)}function ne(e,t){te(e,t);var n=Z(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?ae(e,t.type,n):t.hasOwnProperty("defaultValue")&&ae(e,t.type,Z(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function re(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function ae(e,t,n){"number"===t&&K(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}function oe(e,t){return e=a({children:void 0},t),(t=function(e){var t="";return r.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(t.children))&&(e.children=t),e}function ie(e,t,n,r){if(e=e.options,t){t={};for(var a=0;a<n.length;a++)t["$"+n[a]]=!0;for(n=0;n<e.length;n++)a=t.hasOwnProperty("$"+e[n].value),e[n].selected!==a&&(e[n].selected=a),a&&r&&(e[n].defaultSelected=!0)}else{for(n=""+Z(n),t=null,a=0;a<e.length;a++){if(e[a].value===n)return e[a].selected=!0,void(r&&(e[a].defaultSelected=!0));null!==t||e[a].disabled||(t=e[a])}null!==t&&(t.selected=!0)}}function le(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(i(91));return a({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function se(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(i(92));if(Array.isArray(n)){if(!(1>=n.length))throw Error(i(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:Z(n)}}function ue(e,t){var n=Z(t.value),r=Z(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function ce(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}var de={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function fe(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function pe(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?fe(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var he,me,ge=(me=function(e,t){if(e.namespaceURI!==de.svg||"innerHTML"in e)e.innerHTML=t;else{for((he=he||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=he.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return me(e,t)}))}:me);function ve(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var be={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ye=["Webkit","ms","Moz","O"];function we(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||be.hasOwnProperty(e)&&be[e]?(""+t).trim():t+"px"}function xe(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),a=we(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,a):e[n]=a}}Object.keys(be).forEach((function(e){ye.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),be[t]=be[e]}))}));var ke=a({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function _e(e,t){if(t){if(ke[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(i(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(i(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(i(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(i(62))}}function Ee(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function Se(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var Ce=null,Te=null,Oe=null;function De(e){if(e=na(e)){if("function"!=typeof Ce)throw Error(i(280));var t=e.stateNode;t&&(t=aa(t),Ce(e.stateNode,e.type,t))}}function Pe(e){Te?Oe?Oe.push(e):Oe=[e]:Te=e}function Ne(){if(Te){var e=Te,t=Oe;if(Oe=Te=null,De(e),t)for(e=0;e<t.length;e++)De(t[e])}}function Ie(e,t){return e(t)}function Ae(e,t,n,r,a){return e(t,n,r,a)}function Le(){}var Re=Ie,je=!1,Me=!1;function Fe(){null===Te&&null===Oe||(Le(),Ne())}function Be(e,t){var n=e.stateNode;if(null===n)return null;var r=aa(n);if(null===r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(i(231,t,typeof n));return n}var ze=!1;if(d)try{var $e={};Object.defineProperty($e,"passive",{get:function(){ze=!0}}),window.addEventListener("test",$e,$e),window.removeEventListener("test",$e,$e)}catch(me){ze=!1}function Ue(e,t,n,r,a,o,i,l,s){var u=Array.prototype.slice.call(arguments,3);try{t.apply(n,u)}catch(c){this.onError(c)}}var He=!1,Ve=null,qe=!1,We=null,Ge={onError:function(e){He=!0,Ve=e}};function Ze(e,t,n,r,a,o,i,l,s){He=!1,Ve=null,Ue.apply(Ge,arguments)}function Qe(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!=(1026&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function Ye(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function Xe(e){if(Qe(e)!==e)throw Error(i(188))}function Ke(e){if(e=function(e){var t=e.alternate;if(!t){if(null===(t=Qe(e)))throw Error(i(188));return t!==e?null:e}for(var n=e,r=t;;){var a=n.return;if(null===a)break;var o=a.alternate;if(null===o){if(null!==(r=a.return)){n=r;continue}break}if(a.child===o.child){for(o=a.child;o;){if(o===n)return Xe(a),e;if(o===r)return Xe(a),t;o=o.sibling}throw Error(i(188))}if(n.return!==r.return)n=a,r=o;else{for(var l=!1,s=a.child;s;){if(s===n){l=!0,n=a,r=o;break}if(s===r){l=!0,r=a,n=o;break}s=s.sibling}if(!l){for(s=o.child;s;){if(s===n){l=!0,n=o,r=a;break}if(s===r){l=!0,r=o,n=a;break}s=s.sibling}if(!l)throw Error(i(189))}}if(n.alternate!==r)throw Error(i(190))}if(3!==n.tag)throw Error(i(188));return n.stateNode.current===n?e:t}(e),!e)return null;for(var t=e;;){if(5===t.tag||6===t.tag)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}function Je(e,t){for(var n=e.alternate;null!==t;){if(t===e||t===n)return!0;t=t.return}return!1}var et,tt,nt,rt,at=!1,ot=[],it=null,lt=null,st=null,ut=new Map,ct=new Map,dt=[],ft="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function pt(e,t,n,r,a){return{blockedOn:e,domEventName:t,eventSystemFlags:16|n,nativeEvent:a,targetContainers:[r]}}function ht(e,t){switch(e){case"focusin":case"focusout":it=null;break;case"dragenter":case"dragleave":lt=null;break;case"mouseover":case"mouseout":st=null;break;case"pointerover":case"pointerout":ut.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":ct.delete(t.pointerId)}}function mt(e,t,n,r,a,o){return null===e||e.nativeEvent!==o?(e=pt(t,n,r,a,o),null!==t&&(null!==(t=na(t))&&tt(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==a&&-1===t.indexOf(a)&&t.push(a),e)}function gt(e){var t=ta(e.target);if(null!==t){var n=Qe(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=Ye(n)))return e.blockedOn=t,void rt(e.lanePriority,(function(){o.unstable_runWithPriority(e.priority,(function(){nt(n)}))}))}else if(3===t&&n.stateNode.hydrate)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function vt(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Kt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=na(n))&&tt(t),e.blockedOn=n,!1;t.shift()}return!0}function bt(e,t,n){vt(e)&&n.delete(t)}function yt(){for(at=!1;0<ot.length;){var e=ot[0];if(null!==e.blockedOn){null!==(e=na(e.blockedOn))&&et(e);break}for(var t=e.targetContainers;0<t.length;){var n=Kt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n){e.blockedOn=n;break}t.shift()}null===e.blockedOn&&ot.shift()}null!==it&&vt(it)&&(it=null),null!==lt&&vt(lt)&&(lt=null),null!==st&&vt(st)&&(st=null),ut.forEach(bt),ct.forEach(bt)}function wt(e,t){e.blockedOn===t&&(e.blockedOn=null,at||(at=!0,o.unstable_scheduleCallback(o.unstable_NormalPriority,yt)))}function xt(e){function t(t){return wt(t,e)}if(0<ot.length){wt(ot[0],e);for(var n=1;n<ot.length;n++){var r=ot[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==it&&wt(it,e),null!==lt&&wt(lt,e),null!==st&&wt(st,e),ut.forEach(t),ct.forEach(t),n=0;n<dt.length;n++)(r=dt[n]).blockedOn===e&&(r.blockedOn=null);for(;0<dt.length&&null===(n=dt[0]).blockedOn;)gt(n),null===n.blockedOn&&dt.shift()}function kt(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var _t={animationend:kt("Animation","AnimationEnd"),animationiteration:kt("Animation","AnimationIteration"),animationstart:kt("Animation","AnimationStart"),transitionend:kt("Transition","TransitionEnd")},Et={},St={};function Ct(e){if(Et[e])return Et[e];if(!_t[e])return e;var t,n=_t[e];for(t in n)if(n.hasOwnProperty(t)&&t in St)return Et[e]=n[t];return e}d&&(St=document.createElement("div").style,"AnimationEvent"in window||(delete _t.animationend.animation,delete _t.animationiteration.animation,delete _t.animationstart.animation),"TransitionEvent"in window||delete _t.transitionend.transition);var Tt=Ct("animationend"),Ot=Ct("animationiteration"),Dt=Ct("animationstart"),Pt=Ct("transitionend"),Nt=new Map,It=new Map,At=["abort","abort",Tt,"animationEnd",Ot,"animationIteration",Dt,"animationStart","canplay","canPlay","canplaythrough","canPlayThrough","durationchange","durationChange","emptied","emptied","encrypted","encrypted","ended","ended","error","error","gotpointercapture","gotPointerCapture","load","load","loadeddata","loadedData","loadedmetadata","loadedMetadata","loadstart","loadStart","lostpointercapture","lostPointerCapture","playing","playing","progress","progress","seeking","seeking","stalled","stalled","suspend","suspend","timeupdate","timeUpdate",Pt,"transitionEnd","waiting","waiting"];function Lt(e,t){for(var n=0;n<e.length;n+=2){var r=e[n],a=e[n+1];a="on"+(a[0].toUpperCase()+a.slice(1)),It.set(r,t),Nt.set(r,a),u(a,[r])}}(0,o.unstable_now)();var Rt=8;function jt(e){if(0!=(1&e))return Rt=15,1;if(0!=(2&e))return Rt=14,2;if(0!=(4&e))return Rt=13,4;var t=24&e;return 0!==t?(Rt=12,t):0!=(32&e)?(Rt=11,32):0!==(t=192&e)?(Rt=10,t):0!=(256&e)?(Rt=9,256):0!==(t=3584&e)?(Rt=8,t):0!=(4096&e)?(Rt=7,4096):0!==(t=4186112&e)?(Rt=6,t):0!==(t=62914560&e)?(Rt=5,t):67108864&e?(Rt=4,67108864):0!=(134217728&e)?(Rt=3,134217728):0!==(t=805306368&e)?(Rt=2,t):0!=(1073741824&e)?(Rt=1,1073741824):(Rt=8,e)}function Mt(e,t){var n=e.pendingLanes;if(0===n)return Rt=0;var r=0,a=0,o=e.expiredLanes,i=e.suspendedLanes,l=e.pingedLanes;if(0!==o)r=o,a=Rt=15;else if(0!==(o=134217727&n)){var s=o&~i;0!==s?(r=jt(s),a=Rt):0!==(l&=o)&&(r=jt(l),a=Rt)}else 0!==(o=n&~i)?(r=jt(o),a=Rt):0!==l&&(r=jt(l),a=Rt);if(0===r)return 0;if(r=n&((0>(r=31-Ht(r))?0:1<<r)<<1)-1,0!==t&&t!==r&&0==(t&i)){if(jt(t),a<=Rt)return t;Rt=a}if(0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)a=1<<(n=31-Ht(t)),r|=e[n],t&=~a;return r}function Ft(e){return 0!==(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function Bt(e,t){switch(e){case 15:return 1;case 14:return 2;case 12:return 0===(e=zt(24&~t))?Bt(10,t):e;case 10:return 0===(e=zt(192&~t))?Bt(8,t):e;case 8:return 0===(e=zt(3584&~t))&&(0===(e=zt(4186112&~t))&&(e=512)),e;case 2:return 0===(t=zt(805306368&~t))&&(t=268435456),t}throw Error(i(358,e))}function zt(e){return e&-e}function $t(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function Ut(e,t,n){e.pendingLanes|=t;var r=t-1;e.suspendedLanes&=r,e.pingedLanes&=r,(e=e.eventTimes)[t=31-Ht(t)]=n}var Ht=Math.clz32?Math.clz32:function(e){return 0===e?32:31-(Vt(e)/qt|0)|0},Vt=Math.log,qt=Math.LN2;var Wt=o.unstable_UserBlockingPriority,Gt=o.unstable_runWithPriority,Zt=!0;function Qt(e,t,n,r){je||Le();var a=Xt,o=je;je=!0;try{Ae(a,e,t,n,r)}finally{(je=o)||Fe()}}function Yt(e,t,n,r){Gt(Wt,Xt.bind(null,e,t,n,r))}function Xt(e,t,n,r){var a;if(Zt)if((a=0==(4&t))&&0<ot.length&&-1<ft.indexOf(e))e=pt(null,e,t,n,r),ot.push(e);else{var o=Kt(e,t,n,r);if(null===o)a&&ht(e,r);else{if(a){if(-1<ft.indexOf(e))return e=pt(o,e,t,n,r),void ot.push(e);if(function(e,t,n,r,a){switch(t){case"focusin":return it=mt(it,e,t,n,r,a),!0;case"dragenter":return lt=mt(lt,e,t,n,r,a),!0;case"mouseover":return st=mt(st,e,t,n,r,a),!0;case"pointerover":var o=a.pointerId;return ut.set(o,mt(ut.get(o)||null,e,t,n,r,a)),!0;case"gotpointercapture":return o=a.pointerId,ct.set(o,mt(ct.get(o)||null,e,t,n,r,a)),!0}return!1}(o,e,t,n,r))return;ht(e,r)}Lr(e,t,r,null,n)}}}function Kt(e,t,n,r){var a=Se(r);if(null!==(a=ta(a))){var o=Qe(a);if(null===o)a=null;else{var i=o.tag;if(13===i){if(null!==(a=Ye(o)))return a;a=null}else if(3===i){if(o.stateNode.hydrate)return 3===o.tag?o.stateNode.containerInfo:null;a=null}else o!==a&&(a=null)}}return Lr(e,t,r,a,n),null}var Jt=null,en=null,tn=null;function nn(){if(tn)return tn;var e,t,n=en,r=n.length,a="value"in Jt?Jt.value:Jt.textContent,o=a.length;for(e=0;e<r&&n[e]===a[e];e++);var i=r-e;for(t=1;t<=i&&n[r-t]===a[o-t];t++);return tn=a.slice(e,1<t?1-t:void 0)}function rn(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function an(){return!0}function on(){return!1}function ln(e){function t(t,n,r,a,o){for(var i in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=a,this.target=o,this.currentTarget=null,e)e.hasOwnProperty(i)&&(t=e[i],this[i]=t?t(a):a[i]);return this.isDefaultPrevented=(null!=a.defaultPrevented?a.defaultPrevented:!1===a.returnValue)?an:on,this.isPropagationStopped=on,this}return a(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=an)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=an)},persist:function(){},isPersistent:an}),t}var sn,un,cn,dn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},fn=ln(dn),pn=a({},dn,{view:0,detail:0}),hn=ln(pn),mn=a({},pn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Tn,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==cn&&(cn&&"mousemove"===e.type?(sn=e.screenX-cn.screenX,un=e.screenY-cn.screenY):un=sn=0,cn=e),sn)},movementY:function(e){return"movementY"in e?e.movementY:un}}),gn=ln(mn),vn=ln(a({},mn,{dataTransfer:0})),bn=ln(a({},pn,{relatedTarget:0})),yn=ln(a({},dn,{animationName:0,elapsedTime:0,pseudoElement:0})),wn=a({},dn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),xn=ln(wn),kn=ln(a({},dn,{data:0})),_n={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},En={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},Sn={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Cn(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=Sn[e])&&!!t[e]}function Tn(){return Cn}var On=a({},pn,{key:function(e){if(e.key){var t=_n[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=rn(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?En[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Tn,charCode:function(e){return"keypress"===e.type?rn(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?rn(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),Dn=ln(On),Pn=ln(a({},mn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),Nn=ln(a({},pn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Tn})),In=ln(a({},dn,{propertyName:0,elapsedTime:0,pseudoElement:0})),An=a({},mn,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),Ln=ln(An),Rn=[9,13,27,32],jn=d&&"CompositionEvent"in window,Mn=null;d&&"documentMode"in document&&(Mn=document.documentMode);var Fn=d&&"TextEvent"in window&&!Mn,Bn=d&&(!jn||Mn&&8<Mn&&11>=Mn),zn=String.fromCharCode(32),$n=!1;function Un(e,t){switch(e){case"keyup":return-1!==Rn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Hn(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Vn=!1;var qn={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Wn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!qn[e.type]:"textarea"===t}function Gn(e,t,n,r){Pe(r),0<(t=jr(t,"onChange")).length&&(n=new fn("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Zn=null,Qn=null;function Yn(e){Or(e,0)}function Xn(e){if(X(ra(e)))return e}function Kn(e,t){if("change"===e)return t}var Jn=!1;if(d){var er;if(d){var tr="oninput"in document;if(!tr){var nr=document.createElement("div");nr.setAttribute("oninput","return;"),tr="function"==typeof nr.oninput}er=tr}else er=!1;Jn=er&&(!document.documentMode||9<document.documentMode)}function rr(){Zn&&(Zn.detachEvent("onpropertychange",ar),Qn=Zn=null)}function ar(e){if("value"===e.propertyName&&Xn(Qn)){var t=[];if(Gn(t,Qn,e,Se(e)),e=Yn,je)e(t);else{je=!0;try{Ie(e,t)}finally{je=!1,Fe()}}}}function or(e,t,n){"focusin"===e?(rr(),Qn=n,(Zn=t).attachEvent("onpropertychange",ar)):"focusout"===e&&rr()}function ir(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Xn(Qn)}function lr(e,t){if("click"===e)return Xn(t)}function sr(e,t){if("input"===e||"change"===e)return Xn(t)}var ur="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},cr=Object.prototype.hasOwnProperty;function dr(e,t){if(ur(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++)if(!cr.call(t,n[r])||!ur(e[n[r]],t[n[r]]))return!1;return!0}function fr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function pr(e,t){var n,r=fr(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=fr(r)}}function hr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?hr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function mr(){for(var e=window,t=K();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=K((e=t.contentWindow).document)}return t}function gr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var vr=d&&"documentMode"in document&&11>=document.documentMode,br=null,yr=null,wr=null,xr=!1;function kr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;xr||null==br||br!==K(r)||("selectionStart"in(r=br)&&gr(r)?r={start:r.selectionStart,end:r.selectionEnd}:r={anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},wr&&dr(wr,r)||(wr=r,0<(r=jr(yr,"onSelect")).length&&(t=new fn("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=br)))}Lt("cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange".split(" "),0),Lt("drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel".split(" "),1),Lt(At,2);for(var _r="change selectionchange textInput compositionstart compositionend compositionupdate".split(" "),Er=0;Er<_r.length;Er++)It.set(_r[Er],0);c("onMouseEnter",["mouseout","mouseover"]),c("onMouseLeave",["mouseout","mouseover"]),c("onPointerEnter",["pointerout","pointerover"]),c("onPointerLeave",["pointerout","pointerover"]),u("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),u("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),u("onBeforeInput",["compositionend","keypress","textInput","paste"]),u("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),u("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),u("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Sr="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Cr=new Set("cancel close invalid load scroll toggle".split(" ").concat(Sr));function Tr(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,r,a,o,l,s,u){if(Ze.apply(this,arguments),He){if(!He)throw Error(i(198));var c=Ve;He=!1,Ve=null,qe||(qe=!0,We=c)}}(r,t,void 0,e),e.currentTarget=null}function Or(e,t){t=0!=(4&t);for(var n=0;n<e.length;n++){var r=e[n],a=r.event;r=r.listeners;e:{var o=void 0;if(t)for(var i=r.length-1;0<=i;i--){var l=r[i],s=l.instance,u=l.currentTarget;if(l=l.listener,s!==o&&a.isPropagationStopped())break e;Tr(a,l,u),o=s}else for(i=0;i<r.length;i++){if(s=(l=r[i]).instance,u=l.currentTarget,l=l.listener,s!==o&&a.isPropagationStopped())break e;Tr(a,l,u),o=s}}}if(qe)throw e=We,qe=!1,We=null,e}function Dr(e,t){var n=oa(t),r=e+"__bubble";n.has(r)||(Ar(t,e,2,!1),n.add(r))}var Pr="_reactListening"+Math.random().toString(36).slice(2);function Nr(e){e[Pr]||(e[Pr]=!0,l.forEach((function(t){Cr.has(t)||Ir(t,!1,e,null),Ir(t,!0,e,null)})))}function Ir(e,t,n,r){var a=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,o=n;if("selectionchange"===e&&9!==n.nodeType&&(o=n.ownerDocument),null!==r&&!t&&Cr.has(e)){if("scroll"!==e)return;a|=2,o=r}var i=oa(o),l=e+"__"+(t?"capture":"bubble");i.has(l)||(t&&(a|=4),Ar(o,e,a,t),i.add(l))}function Ar(e,t,n,r){var a=It.get(t);switch(void 0===a?2:a){case 0:a=Qt;break;case 1:a=Yt;break;default:a=Xt}n=a.bind(null,t,n,e),a=void 0,!ze||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(a=!0),r?void 0!==a?e.addEventListener(t,n,{capture:!0,passive:a}):e.addEventListener(t,n,!0):void 0!==a?e.addEventListener(t,n,{passive:a}):e.addEventListener(t,n,!1)}function Lr(e,t,n,r,a){var o=r;if(0==(1&t)&&0==(2&t)&&null!==r)e:for(;;){if(null===r)return;var i=r.tag;if(3===i||4===i){var l=r.stateNode.containerInfo;if(l===a||8===l.nodeType&&l.parentNode===a)break;if(4===i)for(i=r.return;null!==i;){var s=i.tag;if((3===s||4===s)&&((s=i.stateNode.containerInfo)===a||8===s.nodeType&&s.parentNode===a))return;i=i.return}for(;null!==l;){if(null===(i=ta(l)))return;if(5===(s=i.tag)||6===s){r=o=i;continue e}l=l.parentNode}}r=r.return}!function(e,t,n){if(Me)return e(t,n);Me=!0;try{return Re(e,t,n)}finally{Me=!1,Fe()}}((function(){var r=o,a=Se(n),i=[];e:{var l=Nt.get(e);if(void 0!==l){var s=fn,u=e;switch(e){case"keypress":if(0===rn(n))break e;case"keydown":case"keyup":s=Dn;break;case"focusin":u="focus",s=bn;break;case"focusout":u="blur",s=bn;break;case"beforeblur":case"afterblur":s=bn;break;case"click":if(2===n.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":s=gn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":s=vn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":s=Nn;break;case Tt:case Ot:case Dt:s=yn;break;case Pt:s=In;break;case"scroll":s=hn;break;case"wheel":s=Ln;break;case"copy":case"cut":case"paste":s=xn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":s=Pn}var c=0!=(4&t),d=!c&&"scroll"===e,f=c?null!==l?l+"Capture":null:l;c=[];for(var p,h=r;null!==h;){var m=(p=h).stateNode;if(5===p.tag&&null!==m&&(p=m,null!==f&&(null!=(m=Be(h,f))&&c.push(Rr(h,m,p)))),d)break;h=h.return}0<c.length&&(l=new s(l,u,null,n,a),i.push({event:l,listeners:c}))}}if(0==(7&t)){if(s="mouseout"===e||"pointerout"===e,(!(l="mouseover"===e||"pointerover"===e)||0!=(16&t)||!(u=n.relatedTarget||n.fromElement)||!ta(u)&&!u[Jr])&&(s||l)&&(l=a.window===a?a:(l=a.ownerDocument)?l.defaultView||l.parentWindow:window,s?(s=r,null!==(u=(u=n.relatedTarget||n.toElement)?ta(u):null)&&(u!==(d=Qe(u))||5!==u.tag&&6!==u.tag)&&(u=null)):(s=null,u=r),s!==u)){if(c=gn,m="onMouseLeave",f="onMouseEnter",h="mouse","pointerout"!==e&&"pointerover"!==e||(c=Pn,m="onPointerLeave",f="onPointerEnter",h="pointer"),d=null==s?l:ra(s),p=null==u?l:ra(u),(l=new c(m,h+"leave",s,n,a)).target=d,l.relatedTarget=p,m=null,ta(a)===r&&((c=new c(f,h+"enter",u,n,a)).target=p,c.relatedTarget=d,m=c),d=m,s&&u)e:{for(f=u,h=0,p=c=s;p;p=Mr(p))h++;for(p=0,m=f;m;m=Mr(m))p++;for(;0<h-p;)c=Mr(c),h--;for(;0<p-h;)f=Mr(f),p--;for(;h--;){if(c===f||null!==f&&c===f.alternate)break e;c=Mr(c),f=Mr(f)}c=null}else c=null;null!==s&&Fr(i,l,s,c,!1),null!==u&&null!==d&&Fr(i,d,u,c,!0)}if("select"===(s=(l=r?ra(r):window).nodeName&&l.nodeName.toLowerCase())||"input"===s&&"file"===l.type)var g=Kn;else if(Wn(l))if(Jn)g=sr;else{g=ir;var v=or}else(s=l.nodeName)&&"input"===s.toLowerCase()&&("checkbox"===l.type||"radio"===l.type)&&(g=lr);switch(g&&(g=g(e,r))?Gn(i,g,n,a):(v&&v(e,l,r),"focusout"===e&&(v=l._wrapperState)&&v.controlled&&"number"===l.type&&ae(l,"number",l.value)),v=r?ra(r):window,e){case"focusin":(Wn(v)||"true"===v.contentEditable)&&(br=v,yr=r,wr=null);break;case"focusout":wr=yr=br=null;break;case"mousedown":xr=!0;break;case"contextmenu":case"mouseup":case"dragend":xr=!1,kr(i,n,a);break;case"selectionchange":if(vr)break;case"keydown":case"keyup":kr(i,n,a)}var b;if(jn)e:{switch(e){case"compositionstart":var y="onCompositionStart";break e;case"compositionend":y="onCompositionEnd";break e;case"compositionupdate":y="onCompositionUpdate";break e}y=void 0}else Vn?Un(e,n)&&(y="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(y="onCompositionStart");y&&(Bn&&"ko"!==n.locale&&(Vn||"onCompositionStart"!==y?"onCompositionEnd"===y&&Vn&&(b=nn()):(en="value"in(Jt=a)?Jt.value:Jt.textContent,Vn=!0)),0<(v=jr(r,y)).length&&(y=new kn(y,e,null,n,a),i.push({event:y,listeners:v}),b?y.data=b:null!==(b=Hn(n))&&(y.data=b))),(b=Fn?function(e,t){switch(e){case"compositionend":return Hn(t);case"keypress":return 32!==t.which?null:($n=!0,zn);case"textInput":return(e=t.data)===zn&&$n?null:e;default:return null}}(e,n):function(e,t){if(Vn)return"compositionend"===e||!jn&&Un(e,t)?(e=nn(),tn=en=Jt=null,Vn=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return Bn&&"ko"!==t.locale?null:t.data}}(e,n))&&(0<(r=jr(r,"onBeforeInput")).length&&(a=new kn("onBeforeInput","beforeinput",null,n,a),i.push({event:a,listeners:r}),a.data=b))}Or(i,t)}))}function Rr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function jr(e,t){for(var n=t+"Capture",r=[];null!==e;){var a=e,o=a.stateNode;5===a.tag&&null!==o&&(a=o,null!=(o=Be(e,n))&&r.unshift(Rr(e,o,a)),null!=(o=Be(e,t))&&r.push(Rr(e,o,a))),e=e.return}return r}function Mr(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function Fr(e,t,n,r,a){for(var o=t._reactName,i=[];null!==n&&n!==r;){var l=n,s=l.alternate,u=l.stateNode;if(null!==s&&s===r)break;5===l.tag&&null!==u&&(l=u,a?null!=(s=Be(n,o))&&i.unshift(Rr(n,s,l)):a||null!=(s=Be(n,o))&&i.push(Rr(n,s,l))),n=n.return}0!==i.length&&e.push({event:t,listeners:i})}function Br(){}var zr=null,$r=null;function Ur(e,t){switch(e){case"button":case"input":case"select":case"textarea":return!!t.autoFocus}return!1}function Hr(e,t){return"textarea"===e||"option"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var Vr="function"==typeof setTimeout?setTimeout:void 0,qr="function"==typeof clearTimeout?clearTimeout:void 0;function Wr(e){1===e.nodeType?e.textContent="":9===e.nodeType&&(null!=(e=e.body)&&(e.textContent=""))}function Gr(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break}return e}function Zr(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var Qr=0;var Yr=Math.random().toString(36).slice(2),Xr="__reactFiber$"+Yr,Kr="__reactProps$"+Yr,Jr="__reactContainer$"+Yr,ea="__reactEvents$"+Yr;function ta(e){var t=e[Xr];if(t)return t;for(var n=e.parentNode;n;){if(t=n[Jr]||n[Xr]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=Zr(e);null!==e;){if(n=e[Xr])return n;e=Zr(e)}return t}n=(e=n).parentNode}return null}function na(e){return!(e=e[Xr]||e[Jr])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function ra(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(i(33))}function aa(e){return e[Kr]||null}function oa(e){var t=e[ea];return void 0===t&&(t=e[ea]=new Set),t}var ia=[],la=-1;function sa(e){return{current:e}}function ua(e){0>la||(e.current=ia[la],ia[la]=null,la--)}function ca(e,t){la++,ia[la]=e.current,e.current=t}var da={},fa=sa(da),pa=sa(!1),ha=da;function ma(e,t){var n=e.type.contextTypes;if(!n)return da;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var a,o={};for(a in n)o[a]=t[a];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function ga(e){return null!=(e=e.childContextTypes)}function va(){ua(pa),ua(fa)}function ba(e,t,n){if(fa.current!==da)throw Error(i(168));ca(fa,t),ca(pa,n)}function ya(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var o in r=r.getChildContext())if(!(o in e))throw Error(i(108,G(t)||"Unknown",o));return a({},n,r)}function wa(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||da,ha=fa.current,ca(fa,e),ca(pa,pa.current),!0}function xa(e,t,n){var r=e.stateNode;if(!r)throw Error(i(169));n?(e=ya(e,t,ha),r.__reactInternalMemoizedMergedChildContext=e,ua(pa),ua(fa),ca(fa,e)):ua(pa),ca(pa,n)}var ka=null,_a=null,Ea=o.unstable_runWithPriority,Sa=o.unstable_scheduleCallback,Ca=o.unstable_cancelCallback,Ta=o.unstable_shouldYield,Oa=o.unstable_requestPaint,Da=o.unstable_now,Pa=o.unstable_getCurrentPriorityLevel,Na=o.unstable_ImmediatePriority,Ia=o.unstable_UserBlockingPriority,Aa=o.unstable_NormalPriority,La=o.unstable_LowPriority,Ra=o.unstable_IdlePriority,ja={},Ma=void 0!==Oa?Oa:function(){},Fa=null,Ba=null,za=!1,$a=Da(),Ua=1e4>$a?Da:function(){return Da()-$a};function Ha(){switch(Pa()){case Na:return 99;case Ia:return 98;case Aa:return 97;case La:return 96;case Ra:return 95;default:throw Error(i(332))}}function Va(e){switch(e){case 99:return Na;case 98:return Ia;case 97:return Aa;case 96:return La;case 95:return Ra;default:throw Error(i(332))}}function qa(e,t){return e=Va(e),Ea(e,t)}function Wa(e,t,n){return e=Va(e),Sa(e,t,n)}function Ga(){if(null!==Ba){var e=Ba;Ba=null,Ca(e)}Za()}function Za(){if(!za&&null!==Fa){za=!0;var e=0;try{var t=Fa;qa(99,(function(){for(;e<t.length;e++){var n=t[e];do{n=n(!0)}while(null!==n)}})),Fa=null}catch(n){throw null!==Fa&&(Fa=Fa.slice(e+1)),Sa(Na,Ga),n}finally{za=!1}}}var Qa=x.ReactCurrentBatchConfig;function Ya(e,t){if(e&&e.defaultProps){for(var n in t=a({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}var Xa=sa(null),Ka=null,Ja=null,eo=null;function to(){eo=Ja=Ka=null}function no(e){var t=Xa.current;ua(Xa),e.type._context._currentValue=t}function ro(e,t){for(;null!==e;){var n=e.alternate;if((e.childLanes&t)===t){if(null===n||(n.childLanes&t)===t)break;n.childLanes|=t}else e.childLanes|=t,null!==n&&(n.childLanes|=t);e=e.return}}function ao(e,t){Ka=e,eo=Ja=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(0!=(e.lanes&t)&&(ji=!0),e.firstContext=null)}function oo(e,t){if(eo!==e&&!1!==t&&0!==t)if("number"==typeof t&&1073741823!==t||(eo=e,t=1073741823),t={context:e,observedBits:t,next:null},null===Ja){if(null===Ka)throw Error(i(308));Ja=t,Ka.dependencies={lanes:0,firstContext:t,responders:null}}else Ja=Ja.next=t;return e._currentValue}var io=!1;function lo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}function so(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function uo(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function co(e,t){if(null!==(e=e.updateQueue)){var n=(e=e.shared).pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}}function fo(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var a=null,o=null;if(null!==(n=n.firstBaseUpdate)){do{var i={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};null===o?a=o=i:o=o.next=i,n=n.next}while(null!==n);null===o?a=o=t:o=o.next=t}else a=o=t;return n={baseState:r.baseState,firstBaseUpdate:a,lastBaseUpdate:o,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function po(e,t,n,r){var o=e.updateQueue;io=!1;var i=o.firstBaseUpdate,l=o.lastBaseUpdate,s=o.shared.pending;if(null!==s){o.shared.pending=null;var u=s,c=u.next;u.next=null,null===l?i=c:l.next=c,l=u;var d=e.alternate;if(null!==d){var f=(d=d.updateQueue).lastBaseUpdate;f!==l&&(null===f?d.firstBaseUpdate=c:f.next=c,d.lastBaseUpdate=u)}}if(null!==i){for(f=o.baseState,l=0,d=c=u=null;;){s=i.lane;var p=i.eventTime;if((r&s)===s){null!==d&&(d=d.next={eventTime:p,lane:0,tag:i.tag,payload:i.payload,callback:i.callback,next:null});e:{var h=e,m=i;switch(s=t,p=n,m.tag){case 1:if("function"==typeof(h=m.payload)){f=h.call(p,f,s);break e}f=h;break e;case 3:h.flags=-4097&h.flags|64;case 0:if(null==(s="function"==typeof(h=m.payload)?h.call(p,f,s):h))break e;f=a({},f,s);break e;case 2:io=!0}}null!==i.callback&&(e.flags|=32,null===(s=o.effects)?o.effects=[i]:s.push(i))}else p={eventTime:p,lane:s,tag:i.tag,payload:i.payload,callback:i.callback,next:null},null===d?(c=d=p,u=f):d=d.next=p,l|=s;if(null===(i=i.next)){if(null===(s=o.shared.pending))break;i=s.next,s.next=null,o.lastBaseUpdate=s,o.shared.pending=null}}null===d&&(u=f),o.baseState=u,o.firstBaseUpdate=c,o.lastBaseUpdate=d,$l|=l,e.lanes=l,e.memoizedState=f}}function ho(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],a=r.callback;if(null!==a){if(r.callback=null,r=n,"function"!=typeof a)throw Error(i(191,a));a.call(r)}}}var mo=(new r.Component).refs;function go(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:a({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var vo={isMounted:function(e){return!!(e=e._reactInternals)&&Qe(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=fs(),a=ps(e),o=uo(r,a);o.payload=t,null!=n&&(o.callback=n),co(e,o),hs(e,a,r)},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=fs(),a=ps(e),o=uo(r,a);o.tag=1,o.payload=t,null!=n&&(o.callback=n),co(e,o),hs(e,a,r)},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=fs(),r=ps(e),a=uo(n,r);a.tag=2,null!=t&&(a.callback=t),co(e,a),hs(e,r,n)}};function bo(e,t,n,r,a,o,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,o,i):!t.prototype||!t.prototype.isPureReactComponent||(!dr(n,r)||!dr(a,o))}function yo(e,t,n){var r=!1,a=da,o=t.contextType;return"object"==typeof o&&null!==o?o=oo(o):(a=ga(t)?ha:fa.current,o=(r=null!=(r=t.contextTypes))?ma(e,a):da),t=new t(n,o),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=vo,e.stateNode=t,t._reactInternals=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=a,e.__reactInternalMemoizedMaskedChildContext=o),t}function wo(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&vo.enqueueReplaceState(t,t.state,null)}function xo(e,t,n,r){var a=e.stateNode;a.props=n,a.state=e.memoizedState,a.refs=mo,lo(e);var o=t.contextType;"object"==typeof o&&null!==o?a.context=oo(o):(o=ga(t)?ha:fa.current,a.context=ma(e,o)),po(e,n,a,r),a.state=e.memoizedState,"function"==typeof(o=t.getDerivedStateFromProps)&&(go(e,t,o,n),a.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof a.getSnapshotBeforeUpdate||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||(t=a.state,"function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount(),t!==a.state&&vo.enqueueReplaceState(a,a.state,null),po(e,n,a,r),a.state=e.memoizedState),"function"==typeof a.componentDidMount&&(e.flags|=4)}var ko=Array.isArray;function _o(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(i(309));var r=n.stateNode}if(!r)throw Error(i(147,e));var a=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===a?t.ref:(t=function(e){var t=r.refs;t===mo&&(t=r.refs={}),null===e?delete t[a]:t[a]=e},t._stringRef=a,t)}if("string"!=typeof e)throw Error(i(284));if(!n._owner)throw Error(i(290,e))}return e}function Eo(e,t){if("textarea"!==e.type)throw Error(i(31,"[object Object]"===Object.prototype.toString.call(t)?"object with keys {"+Object.keys(t).join(", ")+"}":t))}function So(e){function t(t,n){if(e){var r=t.lastEffect;null!==r?(r.nextEffect=n,t.lastEffect=n):t.firstEffect=t.lastEffect=n,n.nextEffect=null,n.flags=8}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function a(e,t){return(e=Ws(e,t)).index=0,e.sibling=null,e}function o(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.flags=2,n):r:(t.flags=2,n):n}function l(t){return e&&null===t.alternate&&(t.flags=2),t}function s(e,t,n,r){return null===t||6!==t.tag?((t=Ys(n,e.mode,r)).return=e,t):((t=a(t,n)).return=e,t)}function u(e,t,n,r){return null!==t&&t.elementType===n.type?((r=a(t,n.props)).ref=_o(e,t,n),r.return=e,r):((r=Gs(n.type,n.key,n.props,null,e.mode,r)).ref=_o(e,t,n),r.return=e,r)}function c(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Xs(n,e.mode,r)).return=e,t):((t=a(t,n.children||[])).return=e,t)}function d(e,t,n,r,o){return null===t||7!==t.tag?((t=Zs(n,e.mode,r,o)).return=e,t):((t=a(t,n)).return=e,t)}function f(e,t,n){if("string"==typeof t||"number"==typeof t)return(t=Ys(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case k:return(n=Gs(t.type,t.key,t.props,null,e.mode,n)).ref=_o(e,null,t),n.return=e,n;case _:return(t=Xs(t,e.mode,n)).return=e,t}if(ko(t)||U(t))return(t=Zs(t,e.mode,n,null)).return=e,t;Eo(e,t)}return null}function p(e,t,n,r){var a=null!==t?t.key:null;if("string"==typeof n||"number"==typeof n)return null!==a?null:s(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case k:return n.key===a?n.type===E?d(e,t,n.props.children,r,a):u(e,t,n,r):null;case _:return n.key===a?c(e,t,n,r):null}if(ko(n)||U(n))return null!==a?null:d(e,t,n,r,null);Eo(e,n)}return null}function h(e,t,n,r,a){if("string"==typeof r||"number"==typeof r)return s(t,e=e.get(n)||null,""+r,a);if("object"==typeof r&&null!==r){switch(r.$$typeof){case k:return e=e.get(null===r.key?n:r.key)||null,r.type===E?d(t,e,r.props.children,a,r.key):u(t,e,r,a);case _:return c(t,e=e.get(null===r.key?n:r.key)||null,r,a)}if(ko(r)||U(r))return d(t,e=e.get(n)||null,r,a,null);Eo(t,r)}return null}function m(a,i,l,s){for(var u=null,c=null,d=i,m=i=0,g=null;null!==d&&m<l.length;m++){d.index>m?(g=d,d=null):g=d.sibling;var v=p(a,d,l[m],s);if(null===v){null===d&&(d=g);break}e&&d&&null===v.alternate&&t(a,d),i=o(v,i,m),null===c?u=v:c.sibling=v,c=v,d=g}if(m===l.length)return n(a,d),u;if(null===d){for(;m<l.length;m++)null!==(d=f(a,l[m],s))&&(i=o(d,i,m),null===c?u=d:c.sibling=d,c=d);return u}for(d=r(a,d);m<l.length;m++)null!==(g=h(d,a,m,l[m],s))&&(e&&null!==g.alternate&&d.delete(null===g.key?m:g.key),i=o(g,i,m),null===c?u=g:c.sibling=g,c=g);return e&&d.forEach((function(e){return t(a,e)})),u}function g(a,l,s,u){var c=U(s);if("function"!=typeof c)throw Error(i(150));if(null==(s=c.call(s)))throw Error(i(151));for(var d=c=null,m=l,g=l=0,v=null,b=s.next();null!==m&&!b.done;g++,b=s.next()){m.index>g?(v=m,m=null):v=m.sibling;var y=p(a,m,b.value,u);if(null===y){null===m&&(m=v);break}e&&m&&null===y.alternate&&t(a,m),l=o(y,l,g),null===d?c=y:d.sibling=y,d=y,m=v}if(b.done)return n(a,m),c;if(null===m){for(;!b.done;g++,b=s.next())null!==(b=f(a,b.value,u))&&(l=o(b,l,g),null===d?c=b:d.sibling=b,d=b);return c}for(m=r(a,m);!b.done;g++,b=s.next())null!==(b=h(m,a,g,b.value,u))&&(e&&null!==b.alternate&&m.delete(null===b.key?g:b.key),l=o(b,l,g),null===d?c=b:d.sibling=b,d=b);return e&&m.forEach((function(e){return t(a,e)})),c}return function(e,r,o,s){var u="object"==typeof o&&null!==o&&o.type===E&&null===o.key;u&&(o=o.props.children);var c="object"==typeof o&&null!==o;if(c)switch(o.$$typeof){case k:e:{for(c=o.key,u=r;null!==u;){if(u.key===c){if(7===u.tag){if(o.type===E){n(e,u.sibling),(r=a(u,o.props.children)).return=e,e=r;break e}}else if(u.elementType===o.type){n(e,u.sibling),(r=a(u,o.props)).ref=_o(e,u,o),r.return=e,e=r;break e}n(e,u);break}t(e,u),u=u.sibling}o.type===E?((r=Zs(o.props.children,e.mode,s,o.key)).return=e,e=r):((s=Gs(o.type,o.key,o.props,null,e.mode,s)).ref=_o(e,r,o),s.return=e,e=s)}return l(e);case _:e:{for(u=o.key;null!==r;){if(r.key===u){if(4===r.tag&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),(r=a(r,o.children||[])).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=Xs(o,e.mode,s)).return=e,e=r}return l(e)}if("string"==typeof o||"number"==typeof o)return o=""+o,null!==r&&6===r.tag?(n(e,r.sibling),(r=a(r,o)).return=e,e=r):(n(e,r),(r=Ys(o,e.mode,s)).return=e,e=r),l(e);if(ko(o))return m(e,r,o,s);if(U(o))return g(e,r,o,s);if(c&&Eo(e,o),void 0===o&&!u)switch(e.tag){case 1:case 22:case 0:case 11:case 15:throw Error(i(152,G(e.type)||"Component"))}return n(e,r)}}var Co=So(!0),To=So(!1),Oo={},Do=sa(Oo),Po=sa(Oo),No=sa(Oo);function Io(e){if(e===Oo)throw Error(i(174));return e}function Ao(e,t){switch(ca(No,t),ca(Po,e),ca(Do,Oo),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:pe(null,"");break;default:t=pe(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}ua(Do),ca(Do,t)}function Lo(){ua(Do),ua(Po),ua(No)}function Ro(e){Io(No.current);var t=Io(Do.current),n=pe(t,e.type);t!==n&&(ca(Po,e),ca(Do,n))}function jo(e){Po.current===e&&(ua(Do),ua(Po))}var Mo=sa(0);function Fo(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(64&t.flags))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Bo=null,zo=null,$o=!1;function Uo(e,t){var n=Vs(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.flags=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function Ho(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,!0);default:return!1}}function Vo(e){if($o){var t=zo;if(t){var n=t;if(!Ho(e,t)){if(!(t=Gr(n.nextSibling))||!Ho(e,t))return e.flags=-1025&e.flags|2,$o=!1,void(Bo=e);Uo(Bo,n)}Bo=e,zo=Gr(t.firstChild)}else e.flags=-1025&e.flags|2,$o=!1,Bo=e}}function qo(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;Bo=e}function Wo(e){if(e!==Bo)return!1;if(!$o)return qo(e),$o=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!Hr(t,e.memoizedProps))for(t=zo;t;)Uo(e,t),t=Gr(t.nextSibling);if(qo(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(i(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){zo=Gr(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}zo=null}}else zo=Bo?Gr(e.stateNode.nextSibling):null;return!0}function Go(){zo=Bo=null,$o=!1}var Zo=[];function Qo(){for(var e=0;e<Zo.length;e++)Zo[e]._workInProgressVersionPrimary=null;Zo.length=0}var Yo=x.ReactCurrentDispatcher,Xo=x.ReactCurrentBatchConfig,Ko=0,Jo=null,ei=null,ti=null,ni=!1,ri=!1;function ai(){throw Error(i(321))}function oi(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!ur(e[n],t[n]))return!1;return!0}function ii(e,t,n,r,a,o){if(Ko=o,Jo=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,Yo.current=null===e||null===e.memoizedState?Ii:Ai,e=n(r,a),ri){o=0;do{if(ri=!1,!(25>o))throw Error(i(301));o+=1,ti=ei=null,t.updateQueue=null,Yo.current=Li,e=n(r,a)}while(ri)}if(Yo.current=Ni,t=null!==ei&&null!==ei.next,Ko=0,ti=ei=Jo=null,ni=!1,t)throw Error(i(300));return e}function li(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===ti?Jo.memoizedState=ti=e:ti=ti.next=e,ti}function si(){if(null===ei){var e=Jo.alternate;e=null!==e?e.memoizedState:null}else e=ei.next;var t=null===ti?Jo.memoizedState:ti.next;if(null!==t)ti=t,ei=e;else{if(null===e)throw Error(i(310));e={memoizedState:(ei=e).memoizedState,baseState:ei.baseState,baseQueue:ei.baseQueue,queue:ei.queue,next:null},null===ti?Jo.memoizedState=ti=e:ti=ti.next=e}return ti}function ui(e,t){return"function"==typeof t?t(e):t}function ci(e){var t=si(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=ei,a=r.baseQueue,o=n.pending;if(null!==o){if(null!==a){var l=a.next;a.next=o.next,o.next=l}r.baseQueue=a=o,n.pending=null}if(null!==a){a=a.next,r=r.baseState;var s=l=o=null,u=a;do{var c=u.lane;if((Ko&c)===c)null!==s&&(s=s.next={lane:0,action:u.action,eagerReducer:u.eagerReducer,eagerState:u.eagerState,next:null}),r=u.eagerReducer===e?u.eagerState:e(r,u.action);else{var d={lane:c,action:u.action,eagerReducer:u.eagerReducer,eagerState:u.eagerState,next:null};null===s?(l=s=d,o=r):s=s.next=d,Jo.lanes|=c,$l|=c}u=u.next}while(null!==u&&u!==a);null===s?o=r:s.next=l,ur(r,t.memoizedState)||(ji=!0),t.memoizedState=r,t.baseState=o,t.baseQueue=s,n.lastRenderedState=r}return[t.memoizedState,n.dispatch]}function di(e){var t=si(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=n.dispatch,a=n.pending,o=t.memoizedState;if(null!==a){n.pending=null;var l=a=a.next;do{o=e(o,l.action),l=l.next}while(l!==a);ur(o,t.memoizedState)||(ji=!0),t.memoizedState=o,null===t.baseQueue&&(t.baseState=o),n.lastRenderedState=o}return[o,r]}function fi(e,t,n){var r=t._getVersion;r=r(t._source);var a=t._workInProgressVersionPrimary;if(null!==a?e=a===r:(e=e.mutableReadLanes,(e=(Ko&e)===e)&&(t._workInProgressVersionPrimary=r,Zo.push(t))),e)return n(t._source);throw Zo.push(t),Error(i(350))}function pi(e,t,n,r){var a=Al;if(null===a)throw Error(i(349));var o=t._getVersion,l=o(t._source),s=Yo.current,u=s.useState((function(){return fi(a,t,n)})),c=u[1],d=u[0];u=ti;var f=e.memoizedState,p=f.refs,h=p.getSnapshot,m=f.source;f=f.subscribe;var g=Jo;return e.memoizedState={refs:p,source:t,subscribe:r},s.useEffect((function(){p.getSnapshot=n,p.setSnapshot=c;var e=o(t._source);if(!ur(l,e)){e=n(t._source),ur(d,e)||(c(e),e=ps(g),a.mutableReadLanes|=e&a.pendingLanes),e=a.mutableReadLanes,a.entangledLanes|=e;for(var r=a.entanglements,i=e;0<i;){var s=31-Ht(i),u=1<<s;r[s]|=e,i&=~u}}}),[n,t,r]),s.useEffect((function(){return r(t._source,(function(){var e=p.getSnapshot,n=p.setSnapshot;try{n(e(t._source));var r=ps(g);a.mutableReadLanes|=r&a.pendingLanes}catch(o){n((function(){throw o}))}}))}),[t,r]),ur(h,n)&&ur(m,t)&&ur(f,r)||((e={pending:null,dispatch:null,lastRenderedReducer:ui,lastRenderedState:d}).dispatch=c=Pi.bind(null,Jo,e),u.queue=e,u.baseQueue=null,d=fi(a,t,n),u.memoizedState=u.baseState=d),d}function hi(e,t,n){return pi(si(),e,t,n)}function mi(e){var t=li();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={pending:null,dispatch:null,lastRenderedReducer:ui,lastRenderedState:e}).dispatch=Pi.bind(null,Jo,e),[t.memoizedState,e]}function gi(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=Jo.updateQueue)?(t={lastEffect:null},Jo.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function vi(e){return e={current:e},li().memoizedState=e}function bi(){return si().memoizedState}function yi(e,t,n,r){var a=li();Jo.flags|=e,a.memoizedState=gi(1|t,n,void 0,void 0===r?null:r)}function wi(e,t,n,r){var a=si();r=void 0===r?null:r;var o=void 0;if(null!==ei){var i=ei.memoizedState;if(o=i.destroy,null!==r&&oi(r,i.deps))return void gi(t,n,o,r)}Jo.flags|=e,a.memoizedState=gi(1|t,n,o,r)}function xi(e,t){return yi(516,4,e,t)}function ki(e,t){return wi(516,4,e,t)}function _i(e,t){return wi(4,2,e,t)}function Ei(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function Si(e,t,n){return n=null!=n?n.concat([e]):null,wi(4,2,Ei.bind(null,t,e),n)}function Ci(){}function Ti(e,t){var n=si();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&oi(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Oi(e,t){var n=si();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&oi(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function Di(e,t){var n=Ha();qa(98>n?98:n,(function(){e(!0)})),qa(97<n?97:n,(function(){var n=Xo.transition;Xo.transition=1;try{e(!1),t()}finally{Xo.transition=n}}))}function Pi(e,t,n){var r=fs(),a=ps(e),o={lane:a,action:n,eagerReducer:null,eagerState:null,next:null},i=t.pending;if(null===i?o.next=o:(o.next=i.next,i.next=o),t.pending=o,i=e.alternate,e===Jo||null!==i&&i===Jo)ri=ni=!0;else{if(0===e.lanes&&(null===i||0===i.lanes)&&null!==(i=t.lastRenderedReducer))try{var l=t.lastRenderedState,s=i(l,n);if(o.eagerReducer=i,o.eagerState=s,ur(s,l))return}catch(u){}hs(e,a,r)}}var Ni={readContext:oo,useCallback:ai,useContext:ai,useEffect:ai,useImperativeHandle:ai,useLayoutEffect:ai,useMemo:ai,useReducer:ai,useRef:ai,useState:ai,useDebugValue:ai,useDeferredValue:ai,useTransition:ai,useMutableSource:ai,useOpaqueIdentifier:ai,unstable_isNewReconciler:!1},Ii={readContext:oo,useCallback:function(e,t){return li().memoizedState=[e,void 0===t?null:t],e},useContext:oo,useEffect:xi,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,yi(4,2,Ei.bind(null,t,e),n)},useLayoutEffect:function(e,t){return yi(4,2,e,t)},useMemo:function(e,t){var n=li();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=li();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e=(e=r.queue={pending:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=Pi.bind(null,Jo,e),[r.memoizedState,e]},useRef:vi,useState:mi,useDebugValue:Ci,useDeferredValue:function(e){var t=mi(e),n=t[0],r=t[1];return xi((function(){var t=Xo.transition;Xo.transition=1;try{r(e)}finally{Xo.transition=t}}),[e]),n},useTransition:function(){var e=mi(!1),t=e[0];return vi(e=Di.bind(null,e[1])),[e,t]},useMutableSource:function(e,t,n){var r=li();return r.memoizedState={refs:{getSnapshot:t,setSnapshot:null},source:e,subscribe:n},pi(r,e,t,n)},useOpaqueIdentifier:function(){if($o){var e=!1,t=function(e){return{$$typeof:R,toString:e,valueOf:e}}((function(){throw e||(e=!0,n("r:"+(Qr++).toString(36))),Error(i(355))})),n=mi(t)[1];return 0==(2&Jo.mode)&&(Jo.flags|=516,gi(5,(function(){n("r:"+(Qr++).toString(36))}),void 0,null)),t}return mi(t="r:"+(Qr++).toString(36)),t},unstable_isNewReconciler:!1},Ai={readContext:oo,useCallback:Ti,useContext:oo,useEffect:ki,useImperativeHandle:Si,useLayoutEffect:_i,useMemo:Oi,useReducer:ci,useRef:bi,useState:function(){return ci(ui)},useDebugValue:Ci,useDeferredValue:function(e){var t=ci(ui),n=t[0],r=t[1];return ki((function(){var t=Xo.transition;Xo.transition=1;try{r(e)}finally{Xo.transition=t}}),[e]),n},useTransition:function(){var e=ci(ui)[0];return[bi().current,e]},useMutableSource:hi,useOpaqueIdentifier:function(){return ci(ui)[0]},unstable_isNewReconciler:!1},Li={readContext:oo,useCallback:Ti,useContext:oo,useEffect:ki,useImperativeHandle:Si,useLayoutEffect:_i,useMemo:Oi,useReducer:di,useRef:bi,useState:function(){return di(ui)},useDebugValue:Ci,useDeferredValue:function(e){var t=di(ui),n=t[0],r=t[1];return ki((function(){var t=Xo.transition;Xo.transition=1;try{r(e)}finally{Xo.transition=t}}),[e]),n},useTransition:function(){var e=di(ui)[0];return[bi().current,e]},useMutableSource:hi,useOpaqueIdentifier:function(){return di(ui)[0]},unstable_isNewReconciler:!1},Ri=x.ReactCurrentOwner,ji=!1;function Mi(e,t,n,r){t.child=null===e?To(t,null,n,r):Co(t,e.child,n,r)}function Fi(e,t,n,r,a){n=n.render;var o=t.ref;return ao(t,a),r=ii(e,t,n,r,o,a),null===e||ji?(t.flags|=1,Mi(e,t,r,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~a,ol(e,t,a))}function Bi(e,t,n,r,a,o){if(null===e){var i=n.type;return"function"!=typeof i||qs(i)||void 0!==i.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Gs(n.type,null,r,t,t.mode,o)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=i,zi(e,t,i,r,a,o))}return i=e.child,0==(a&o)&&(a=i.memoizedProps,(n=null!==(n=n.compare)?n:dr)(a,r)&&e.ref===t.ref)?ol(e,t,o):(t.flags|=1,(e=Ws(i,r)).ref=t.ref,e.return=t,t.child=e)}function zi(e,t,n,r,a,o){if(null!==e&&dr(e.memoizedProps,r)&&e.ref===t.ref){if(ji=!1,0==(o&a))return t.lanes=e.lanes,ol(e,t,o);0!=(16384&e.flags)&&(ji=!0)}return Hi(e,t,n,r,o)}function $i(e,t,n){var r=t.pendingProps,a=r.children,o=null!==e?e.memoizedState:null;if("hidden"===r.mode||"unstable-defer-without-hiding"===r.mode)if(0==(4&t.mode))t.memoizedState={baseLanes:0},ks(t,n);else{if(0==(1073741824&n))return e=null!==o?o.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e},ks(t,e),null;t.memoizedState={baseLanes:0},ks(t,null!==o?o.baseLanes:n)}else null!==o?(r=o.baseLanes|n,t.memoizedState=null):r=n,ks(t,r);return Mi(e,t,a,n),t.child}function Ui(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=128)}function Hi(e,t,n,r,a){var o=ga(n)?ha:fa.current;return o=ma(t,o),ao(t,a),n=ii(e,t,n,r,o,a),null===e||ji?(t.flags|=1,Mi(e,t,n,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~a,ol(e,t,a))}function Vi(e,t,n,r,a){if(ga(n)){var o=!0;wa(t)}else o=!1;if(ao(t,a),null===t.stateNode)null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),yo(t,n,r),xo(t,n,r,a),r=!0;else if(null===e){var i=t.stateNode,l=t.memoizedProps;i.props=l;var s=i.context,u=n.contextType;"object"==typeof u&&null!==u?u=oo(u):u=ma(t,u=ga(n)?ha:fa.current);var c=n.getDerivedStateFromProps,d="function"==typeof c||"function"==typeof i.getSnapshotBeforeUpdate;d||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==r||s!==u)&&wo(t,i,r,u),io=!1;var f=t.memoizedState;i.state=f,po(t,r,i,a),s=t.memoizedState,l!==r||f!==s||pa.current||io?("function"==typeof c&&(go(t,n,c,r),s=t.memoizedState),(l=io||bo(t,n,l,r,f,s,u))?(d||"function"!=typeof i.UNSAFE_componentWillMount&&"function"!=typeof i.componentWillMount||("function"==typeof i.componentWillMount&&i.componentWillMount(),"function"==typeof i.UNSAFE_componentWillMount&&i.UNSAFE_componentWillMount()),"function"==typeof i.componentDidMount&&(t.flags|=4)):("function"==typeof i.componentDidMount&&(t.flags|=4),t.memoizedProps=r,t.memoizedState=s),i.props=r,i.state=s,i.context=u,r=l):("function"==typeof i.componentDidMount&&(t.flags|=4),r=!1)}else{i=t.stateNode,so(e,t),l=t.memoizedProps,u=t.type===t.elementType?l:Ya(t.type,l),i.props=u,d=t.pendingProps,f=i.context,"object"==typeof(s=n.contextType)&&null!==s?s=oo(s):s=ma(t,s=ga(n)?ha:fa.current);var p=n.getDerivedStateFromProps;(c="function"==typeof p||"function"==typeof i.getSnapshotBeforeUpdate)||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==d||f!==s)&&wo(t,i,r,s),io=!1,f=t.memoizedState,i.state=f,po(t,r,i,a);var h=t.memoizedState;l!==d||f!==h||pa.current||io?("function"==typeof p&&(go(t,n,p,r),h=t.memoizedState),(u=io||bo(t,n,u,r,f,h,s))?(c||"function"!=typeof i.UNSAFE_componentWillUpdate&&"function"!=typeof i.componentWillUpdate||("function"==typeof i.componentWillUpdate&&i.componentWillUpdate(r,h,s),"function"==typeof i.UNSAFE_componentWillUpdate&&i.UNSAFE_componentWillUpdate(r,h,s)),"function"==typeof i.componentDidUpdate&&(t.flags|=4),"function"==typeof i.getSnapshotBeforeUpdate&&(t.flags|=256)):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=256),t.memoizedProps=r,t.memoizedState=h),i.props=r,i.state=h,i.context=s,r=u):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=256),r=!1)}return qi(e,t,n,r,o,a)}function qi(e,t,n,r,a,o){Ui(e,t);var i=0!=(64&t.flags);if(!r&&!i)return a&&xa(t,n,!1),ol(e,t,o);r=t.stateNode,Ri.current=t;var l=i&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&i?(t.child=Co(t,e.child,null,o),t.child=Co(t,null,l,o)):Mi(e,t,l,o),t.memoizedState=r.state,a&&xa(t,n,!0),t.child}function Wi(e){var t=e.stateNode;t.pendingContext?ba(0,t.pendingContext,t.pendingContext!==t.context):t.context&&ba(0,t.context,!1),Ao(e,t.containerInfo)}var Gi,Zi,Qi,Yi,Xi={dehydrated:null,retryLane:0};function Ki(e,t,n){var r,a=t.pendingProps,o=Mo.current,i=!1;return(r=0!=(64&t.flags))||(r=(null===e||null!==e.memoizedState)&&0!=(2&o)),r?(i=!0,t.flags&=-65):null!==e&&null===e.memoizedState||void 0===a.fallback||!0===a.unstable_avoidThisFallback||(o|=1),ca(Mo,1&o),null===e?(void 0!==a.fallback&&Vo(t),e=a.children,o=a.fallback,i?(e=Ji(t,e,o,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Xi,e):"number"==typeof a.unstable_expectedLoadTime?(e=Ji(t,e,o,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Xi,t.lanes=33554432,e):((n=Qs({mode:"visible",children:e},t.mode,n,null)).return=t,t.child=n)):(e.memoizedState,i?(a=tl(e,t,a.children,a.fallback,n),i=t.child,o=e.child.memoizedState,i.memoizedState=null===o?{baseLanes:n}:{baseLanes:o.baseLanes|n},i.childLanes=e.childLanes&~n,t.memoizedState=Xi,a):(n=el(e,t,a.children,n),t.memoizedState=null,n))}function Ji(e,t,n,r){var a=e.mode,o=e.child;return t={mode:"hidden",children:t},0==(2&a)&&null!==o?(o.childLanes=0,o.pendingProps=t):o=Qs(t,a,0,null),n=Zs(n,a,r,null),o.return=e,n.return=e,o.sibling=n,e.child=o,n}function el(e,t,n,r){var a=e.child;return e=a.sibling,n=Ws(a,{mode:"visible",children:n}),0==(2&t.mode)&&(n.lanes=r),n.return=t,n.sibling=null,null!==e&&(e.nextEffect=null,e.flags=8,t.firstEffect=t.lastEffect=e),t.child=n}function tl(e,t,n,r,a){var o=t.mode,i=e.child;e=i.sibling;var l={mode:"hidden",children:n};return 0==(2&o)&&t.child!==i?((n=t.child).childLanes=0,n.pendingProps=l,null!==(i=n.lastEffect)?(t.firstEffect=n.firstEffect,t.lastEffect=i,i.nextEffect=null):t.firstEffect=t.lastEffect=null):n=Ws(i,l),null!==e?r=Ws(e,r):(r=Zs(r,o,a,null)).flags|=2,r.return=t,n.return=t,n.sibling=r,t.child=n,r}function nl(e,t){e.lanes|=t;var n=e.alternate;null!==n&&(n.lanes|=t),ro(e.return,t)}function rl(e,t,n,r,a,o){var i=e.memoizedState;null===i?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:a,lastEffect:o}:(i.isBackwards=t,i.rendering=null,i.renderingStartTime=0,i.last=r,i.tail=n,i.tailMode=a,i.lastEffect=o)}function al(e,t,n){var r=t.pendingProps,a=r.revealOrder,o=r.tail;if(Mi(e,t,r.children,n),0!=(2&(r=Mo.current)))r=1&r|2,t.flags|=64;else{if(null!==e&&0!=(64&e.flags))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&nl(e,n);else if(19===e.tag)nl(e,n);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(ca(Mo,r),0==(2&t.mode))t.memoizedState=null;else switch(a){case"forwards":for(n=t.child,a=null;null!==n;)null!==(e=n.alternate)&&null===Fo(e)&&(a=n),n=n.sibling;null===(n=a)?(a=t.child,t.child=null):(a=n.sibling,n.sibling=null),rl(t,!1,a,n,o,t.lastEffect);break;case"backwards":for(n=null,a=t.child,t.child=null;null!==a;){if(null!==(e=a.alternate)&&null===Fo(e)){t.child=a;break}e=a.sibling,a.sibling=n,n=a,a=e}rl(t,!0,n,null,o,t.lastEffect);break;case"together":rl(t,!1,null,null,void 0,t.lastEffect);break;default:t.memoizedState=null}return t.child}function ol(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),$l|=t.lanes,0!=(n&t.childLanes)){if(null!==e&&t.child!==e.child)throw Error(i(153));if(null!==t.child){for(n=Ws(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Ws(e,e.pendingProps)).return=t;n.sibling=null}return t.child}return null}function il(e,t){if(!$o)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function ll(e,t,n){var r=t.pendingProps;switch(t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:case 17:return ga(t.type)&&va(),null;case 3:return Lo(),ua(pa),ua(fa),Qo(),(r=t.stateNode).pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(Wo(t)?t.flags|=4:r.hydrate||(t.flags|=256)),Zi(t),null;case 5:jo(t);var o=Io(No.current);if(n=t.type,null!==e&&null!=t.stateNode)Qi(e,t,n,r,o),e.ref!==t.ref&&(t.flags|=128);else{if(!r){if(null===t.stateNode)throw Error(i(166));return null}if(e=Io(Do.current),Wo(t)){r=t.stateNode,n=t.type;var l=t.memoizedProps;switch(r[Xr]=t,r[Kr]=l,n){case"dialog":Dr("cancel",r),Dr("close",r);break;case"iframe":case"object":case"embed":Dr("load",r);break;case"video":case"audio":for(e=0;e<Sr.length;e++)Dr(Sr[e],r);break;case"source":Dr("error",r);break;case"img":case"image":case"link":Dr("error",r),Dr("load",r);break;case"details":Dr("toggle",r);break;case"input":ee(r,l),Dr("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!l.multiple},Dr("invalid",r);break;case"textarea":se(r,l),Dr("invalid",r)}for(var u in _e(n,l),e=null,l)l.hasOwnProperty(u)&&(o=l[u],"children"===u?"string"==typeof o?r.textContent!==o&&(e=["children",o]):"number"==typeof o&&r.textContent!==""+o&&(e=["children",""+o]):s.hasOwnProperty(u)&&null!=o&&"onScroll"===u&&Dr("scroll",r));switch(n){case"input":Y(r),re(r,l,!0);break;case"textarea":Y(r),ce(r);break;case"select":case"option":break;default:"function"==typeof l.onClick&&(r.onclick=Br)}r=e,t.updateQueue=r,null!==r&&(t.flags|=4)}else{switch(u=9===o.nodeType?o:o.ownerDocument,e===de.html&&(e=fe(n)),e===de.html?"script"===n?((e=u.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=u.createElement(n,{is:r.is}):(e=u.createElement(n),"select"===n&&(u=e,r.multiple?u.multiple=!0:r.size&&(u.size=r.size))):e=u.createElementNS(e,n),e[Xr]=t,e[Kr]=r,Gi(e,t,!1,!1),t.stateNode=e,u=Ee(n,r),n){case"dialog":Dr("cancel",e),Dr("close",e),o=r;break;case"iframe":case"object":case"embed":Dr("load",e),o=r;break;case"video":case"audio":for(o=0;o<Sr.length;o++)Dr(Sr[o],e);o=r;break;case"source":Dr("error",e),o=r;break;case"img":case"image":case"link":Dr("error",e),Dr("load",e),o=r;break;case"details":Dr("toggle",e),o=r;break;case"input":ee(e,r),o=J(e,r),Dr("invalid",e);break;case"option":o=oe(e,r);break;case"select":e._wrapperState={wasMultiple:!!r.multiple},o=a({},r,{value:void 0}),Dr("invalid",e);break;case"textarea":se(e,r),o=le(e,r),Dr("invalid",e);break;default:o=r}_e(n,o);var c=o;for(l in c)if(c.hasOwnProperty(l)){var d=c[l];"style"===l?xe(e,d):"dangerouslySetInnerHTML"===l?null!=(d=d?d.__html:void 0)&&ge(e,d):"children"===l?"string"==typeof d?("textarea"!==n||""!==d)&&ve(e,d):"number"==typeof d&&ve(e,""+d):"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&"autoFocus"!==l&&(s.hasOwnProperty(l)?null!=d&&"onScroll"===l&&Dr("scroll",e):null!=d&&w(e,l,d,u))}switch(n){case"input":Y(e),re(e,r,!1);break;case"textarea":Y(e),ce(e);break;case"option":null!=r.value&&e.setAttribute("value",""+Z(r.value));break;case"select":e.multiple=!!r.multiple,null!=(l=r.value)?ie(e,!!r.multiple,l,!1):null!=r.defaultValue&&ie(e,!!r.multiple,r.defaultValue,!0);break;default:"function"==typeof o.onClick&&(e.onclick=Br)}Ur(n,r)&&(t.flags|=4)}null!==t.ref&&(t.flags|=128)}return null;case 6:if(e&&null!=t.stateNode)Yi(e,t,e.memoizedProps,r);else{if("string"!=typeof r&&null===t.stateNode)throw Error(i(166));n=Io(No.current),Io(Do.current),Wo(t)?(r=t.stateNode,n=t.memoizedProps,r[Xr]=t,r.nodeValue!==n&&(t.flags|=4)):((r=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[Xr]=t,t.stateNode=r)}return null;case 13:return ua(Mo),r=t.memoizedState,0!=(64&t.flags)?(t.lanes=n,t):(r=null!==r,n=!1,null===e?void 0!==t.memoizedProps.fallback&&Wo(t):n=null!==e.memoizedState,r&&!n&&0!=(2&t.mode)&&(null===e&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!=(1&Mo.current)?0===Fl&&(Fl=3):(0!==Fl&&3!==Fl||(Fl=4),null===Al||0==(134217727&$l)&&0==(134217727&Ul)||bs(Al,Rl))),(r||n)&&(t.flags|=4),null);case 4:return Lo(),Zi(t),null===e&&Nr(t.stateNode.containerInfo),null;case 10:return no(t),null;case 19:if(ua(Mo),null===(r=t.memoizedState))return null;if(l=0!=(64&t.flags),null===(u=r.rendering))if(l)il(r,!1);else{if(0!==Fl||null!==e&&0!=(64&e.flags))for(e=t.child;null!==e;){if(null!==(u=Fo(e))){for(t.flags|=64,il(r,!1),null!==(l=u.updateQueue)&&(t.updateQueue=l,t.flags|=4),null===r.lastEffect&&(t.firstEffect=null),t.lastEffect=r.lastEffect,r=n,n=t.child;null!==n;)e=r,(l=n).flags&=2,l.nextEffect=null,l.firstEffect=null,l.lastEffect=null,null===(u=l.alternate)?(l.childLanes=0,l.lanes=e,l.child=null,l.memoizedProps=null,l.memoizedState=null,l.updateQueue=null,l.dependencies=null,l.stateNode=null):(l.childLanes=u.childLanes,l.lanes=u.lanes,l.child=u.child,l.memoizedProps=u.memoizedProps,l.memoizedState=u.memoizedState,l.updateQueue=u.updateQueue,l.type=u.type,e=u.dependencies,l.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return ca(Mo,1&Mo.current|2),t.child}e=e.sibling}null!==r.tail&&Ua()>Wl&&(t.flags|=64,l=!0,il(r,!1),t.lanes=33554432)}else{if(!l)if(null!==(e=Fo(u))){if(t.flags|=64,l=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),il(r,!0),null===r.tail&&"hidden"===r.tailMode&&!u.alternate&&!$o)return null!==(t=t.lastEffect=r.lastEffect)&&(t.nextEffect=null),null}else 2*Ua()-r.renderingStartTime>Wl&&1073741824!==n&&(t.flags|=64,l=!0,il(r,!1),t.lanes=33554432);r.isBackwards?(u.sibling=t.child,t.child=u):(null!==(n=r.last)?n.sibling=u:t.child=u,r.last=u)}return null!==r.tail?(n=r.tail,r.rendering=n,r.tail=n.sibling,r.lastEffect=t.lastEffect,r.renderingStartTime=Ua(),n.sibling=null,t=Mo.current,ca(Mo,l?1&t|2:1&t),n):null;case 23:case 24:return _s(),null!==e&&null!==e.memoizedState!=(null!==t.memoizedState)&&"unstable-defer-without-hiding"!==r.mode&&(t.flags|=4),null}throw Error(i(156,t.tag))}function sl(e){switch(e.tag){case 1:ga(e.type)&&va();var t=e.flags;return 4096&t?(e.flags=-4097&t|64,e):null;case 3:if(Lo(),ua(pa),ua(fa),Qo(),0!=(64&(t=e.flags)))throw Error(i(285));return e.flags=-4097&t|64,e;case 5:return jo(e),null;case 13:return ua(Mo),4096&(t=e.flags)?(e.flags=-4097&t|64,e):null;case 19:return ua(Mo),null;case 4:return Lo(),null;case 10:return no(e),null;case 23:case 24:return _s(),null;default:return null}}function ul(e,t){try{var n="",r=t;do{n+=W(r),r=r.return}while(r);var a=n}catch(o){a="\nError generating stack: "+o.message+"\n"+o.stack}return{value:e,source:t,stack:a}}function cl(e,t){try{console.error(t.value)}catch(n){setTimeout((function(){throw n}))}}Gi=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Zi=function(){},Qi=function(e,t,n,r){var o=e.memoizedProps;if(o!==r){e=t.stateNode,Io(Do.current);var i,l=null;switch(n){case"input":o=J(e,o),r=J(e,r),l=[];break;case"option":o=oe(e,o),r=oe(e,r),l=[];break;case"select":o=a({},o,{value:void 0}),r=a({},r,{value:void 0}),l=[];break;case"textarea":o=le(e,o),r=le(e,r),l=[];break;default:"function"!=typeof o.onClick&&"function"==typeof r.onClick&&(e.onclick=Br)}for(d in _e(n,r),n=null,o)if(!r.hasOwnProperty(d)&&o.hasOwnProperty(d)&&null!=o[d])if("style"===d){var u=o[d];for(i in u)u.hasOwnProperty(i)&&(n||(n={}),n[i]="")}else"dangerouslySetInnerHTML"!==d&&"children"!==d&&"suppressContentEditableWarning"!==d&&"suppressHydrationWarning"!==d&&"autoFocus"!==d&&(s.hasOwnProperty(d)?l||(l=[]):(l=l||[]).push(d,null));for(d in r){var c=r[d];if(u=null!=o?o[d]:void 0,r.hasOwnProperty(d)&&c!==u&&(null!=c||null!=u))if("style"===d)if(u){for(i in u)!u.hasOwnProperty(i)||c&&c.hasOwnProperty(i)||(n||(n={}),n[i]="");for(i in c)c.hasOwnProperty(i)&&u[i]!==c[i]&&(n||(n={}),n[i]=c[i])}else n||(l||(l=[]),l.push(d,n)),n=c;else"dangerouslySetInnerHTML"===d?(c=c?c.__html:void 0,u=u?u.__html:void 0,null!=c&&u!==c&&(l=l||[]).push(d,c)):"children"===d?"string"!=typeof c&&"number"!=typeof c||(l=l||[]).push(d,""+c):"suppressContentEditableWarning"!==d&&"suppressHydrationWarning"!==d&&(s.hasOwnProperty(d)?(null!=c&&"onScroll"===d&&Dr("scroll",e),l||u===c||(l=[])):"object"==typeof c&&null!==c&&c.$$typeof===R?c.toString():(l=l||[]).push(d,c))}n&&(l=l||[]).push("style",n);var d=l;(t.updateQueue=d)&&(t.flags|=4)}},Yi=function(e,t,n,r){n!==r&&(t.flags|=4)};var dl="function"==typeof WeakMap?WeakMap:Map;function fl(e,t,n){(n=uo(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Yl||(Yl=!0,Xl=r),cl(0,t)},n}function pl(e,t,n){(n=uo(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var a=t.value;n.payload=function(){return cl(0,t),r(a)}}var o=e.stateNode;return null!==o&&"function"==typeof o.componentDidCatch&&(n.callback=function(){"function"!=typeof r&&(null===Kl?Kl=new Set([this]):Kl.add(this),cl(0,t));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}var hl="function"==typeof WeakSet?WeakSet:Set;function ml(e){var t=e.ref;if(null!==t)if("function"==typeof t)try{t(null)}catch(n){zs(e,n)}else t.current=null}function gl(e,t){switch(t.tag){case 0:case 11:case 15:case 22:case 5:case 6:case 4:case 17:return;case 1:if(256&t.flags&&null!==e){var n=e.memoizedProps,r=e.memoizedState;t=(e=t.stateNode).getSnapshotBeforeUpdate(t.elementType===t.type?n:Ya(t.type,n),r),e.__reactInternalSnapshotBeforeUpdate=t}return;case 3:return void(256&t.flags&&Wr(t.stateNode.containerInfo))}throw Error(i(163))}function vl(e,t,n){switch(n.tag){case 0:case 11:case 15:case 22:if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{if(3==(3&e.tag)){var r=e.create;e.destroy=r()}e=e.next}while(e!==t)}if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{var a=e;r=a.next,0!=(4&(a=a.tag))&&0!=(1&a)&&(Ms(n,e),js(n,e)),e=r}while(e!==t)}return;case 1:return e=n.stateNode,4&n.flags&&(null===t?e.componentDidMount():(r=n.elementType===n.type?t.memoizedProps:Ya(n.type,t.memoizedProps),e.componentDidUpdate(r,t.memoizedState,e.__reactInternalSnapshotBeforeUpdate))),void(null!==(t=n.updateQueue)&&ho(n,t,e));case 3:if(null!==(t=n.updateQueue)){if(e=null,null!==n.child)switch(n.child.tag){case 5:case 1:e=n.child.stateNode}ho(n,t,e)}return;case 5:return e=n.stateNode,void(null===t&&4&n.flags&&Ur(n.type,n.memoizedProps)&&e.focus());case 6:case 4:case 12:case 19:case 17:case 20:case 21:case 23:case 24:return;case 13:return void(null===n.memoizedState&&(n=n.alternate,null!==n&&(n=n.memoizedState,null!==n&&(n=n.dehydrated,null!==n&&xt(n)))))}throw Error(i(163))}function bl(e,t){for(var n=e;;){if(5===n.tag){var r=n.stateNode;if(t)"function"==typeof(r=r.style).setProperty?r.setProperty("display","none","important"):r.display="none";else{r=n.stateNode;var a=n.memoizedProps.style;a=null!=a&&a.hasOwnProperty("display")?a.display:null,r.style.display=we("display",a)}}else if(6===n.tag)n.stateNode.nodeValue=t?"":n.memoizedProps;else if((23!==n.tag&&24!==n.tag||null===n.memoizedState||n===e)&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===e)break;for(;null===n.sibling;){if(null===n.return||n.return===e)return;n=n.return}n.sibling.return=n.return,n=n.sibling}}function yl(e,t){if(_a&&"function"==typeof _a.onCommitFiberUnmount)try{_a.onCommitFiberUnmount(ka,t)}catch(o){}switch(t.tag){case 0:case 11:case 14:case 15:case 22:if(null!==(e=t.updateQueue)&&null!==(e=e.lastEffect)){var n=e=e.next;do{var r=n,a=r.destroy;if(r=r.tag,void 0!==a)if(0!=(4&r))Ms(t,n);else{r=t;try{a()}catch(o){zs(r,o)}}n=n.next}while(n!==e)}break;case 1:if(ml(t),"function"==typeof(e=t.stateNode).componentWillUnmount)try{e.props=t.memoizedProps,e.state=t.memoizedState,e.componentWillUnmount()}catch(o){zs(t,o)}break;case 5:ml(t);break;case 4:Sl(e,t)}}function wl(e){e.alternate=null,e.child=null,e.dependencies=null,e.firstEffect=null,e.lastEffect=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.return=null,e.updateQueue=null}function xl(e){return 5===e.tag||3===e.tag||4===e.tag}function kl(e){e:{for(var t=e.return;null!==t;){if(xl(t))break e;t=t.return}throw Error(i(160))}var n=t;switch(t=n.stateNode,n.tag){case 5:var r=!1;break;case 3:case 4:t=t.containerInfo,r=!0;break;default:throw Error(i(161))}16&n.flags&&(ve(t,""),n.flags&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||xl(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag&&18!==n.tag;){if(2&n.flags)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.flags)){n=n.stateNode;break e}}r?_l(e,n,t):El(e,n,t)}function _l(e,t,n){var r=e.tag,a=5===r||6===r;if(a)e=a?e.stateNode:e.stateNode.instance,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=Br));else if(4!==r&&null!==(e=e.child))for(_l(e,t,n),e=e.sibling;null!==e;)_l(e,t,n),e=e.sibling}function El(e,t,n){var r=e.tag,a=5===r||6===r;if(a)e=a?e.stateNode:e.stateNode.instance,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(El(e,t,n),e=e.sibling;null!==e;)El(e,t,n),e=e.sibling}function Sl(e,t){for(var n,r,a=t,o=!1;;){if(!o){o=a.return;e:for(;;){if(null===o)throw Error(i(160));switch(n=o.stateNode,o.tag){case 5:r=!1;break e;case 3:case 4:n=n.containerInfo,r=!0;break e}o=o.return}o=!0}if(5===a.tag||6===a.tag){e:for(var l=e,s=a,u=s;;)if(yl(l,u),null!==u.child&&4!==u.tag)u.child.return=u,u=u.child;else{if(u===s)break e;for(;null===u.sibling;){if(null===u.return||u.return===s)break e;u=u.return}u.sibling.return=u.return,u=u.sibling}r?(l=n,s=a.stateNode,8===l.nodeType?l.parentNode.removeChild(s):l.removeChild(s)):n.removeChild(a.stateNode)}else if(4===a.tag){if(null!==a.child){n=a.stateNode.containerInfo,r=!0,a.child.return=a,a=a.child;continue}}else if(yl(e,a),null!==a.child){a.child.return=a,a=a.child;continue}if(a===t)break;for(;null===a.sibling;){if(null===a.return||a.return===t)return;4===(a=a.return).tag&&(o=!1)}a.sibling.return=a.return,a=a.sibling}}function Cl(e,t){switch(t.tag){case 0:case 11:case 14:case 15:case 22:var n=t.updateQueue;if(null!==(n=null!==n?n.lastEffect:null)){var r=n=n.next;do{3==(3&r.tag)&&(e=r.destroy,r.destroy=void 0,void 0!==e&&e()),r=r.next}while(r!==n)}return;case 1:case 12:case 17:return;case 5:if(null!=(n=t.stateNode)){r=t.memoizedProps;var a=null!==e?e.memoizedProps:r;e=t.type;var o=t.updateQueue;if(t.updateQueue=null,null!==o){for(n[Kr]=r,"input"===e&&"radio"===r.type&&null!=r.name&&te(n,r),Ee(e,a),t=Ee(e,r),a=0;a<o.length;a+=2){var l=o[a],s=o[a+1];"style"===l?xe(n,s):"dangerouslySetInnerHTML"===l?ge(n,s):"children"===l?ve(n,s):w(n,l,s,t)}switch(e){case"input":ne(n,r);break;case"textarea":ue(n,r);break;case"select":e=n._wrapperState.wasMultiple,n._wrapperState.wasMultiple=!!r.multiple,null!=(o=r.value)?ie(n,!!r.multiple,o,!1):e!==!!r.multiple&&(null!=r.defaultValue?ie(n,!!r.multiple,r.defaultValue,!0):ie(n,!!r.multiple,r.multiple?[]:"",!1))}}}return;case 6:if(null===t.stateNode)throw Error(i(162));return void(t.stateNode.nodeValue=t.memoizedProps);case 3:return void((n=t.stateNode).hydrate&&(n.hydrate=!1,xt(n.containerInfo)));case 13:return null!==t.memoizedState&&(ql=Ua(),bl(t.child,!0)),void Tl(t);case 19:return void Tl(t);case 23:case 24:return void bl(t,null!==t.memoizedState)}throw Error(i(163))}function Tl(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new hl),t.forEach((function(t){var r=Us.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function Ol(e,t){return null!==e&&(null===(e=e.memoizedState)||null!==e.dehydrated)&&(null!==(t=t.memoizedState)&&null===t.dehydrated)}var Dl=Math.ceil,Pl=x.ReactCurrentDispatcher,Nl=x.ReactCurrentOwner,Il=0,Al=null,Ll=null,Rl=0,jl=0,Ml=sa(0),Fl=0,Bl=null,zl=0,$l=0,Ul=0,Hl=0,Vl=null,ql=0,Wl=1/0;function Gl(){Wl=Ua()+500}var Zl,Ql=null,Yl=!1,Xl=null,Kl=null,Jl=!1,es=null,ts=90,ns=[],rs=[],as=null,os=0,is=null,ls=-1,ss=0,us=0,cs=null,ds=!1;function fs(){return 0!=(48&Il)?Ua():-1!==ls?ls:ls=Ua()}function ps(e){if(0==(2&(e=e.mode)))return 1;if(0==(4&e))return 99===Ha()?1:2;if(0===ss&&(ss=zl),0!==Qa.transition){0!==us&&(us=null!==Vl?Vl.pendingLanes:0),e=ss;var t=4186112&~us;return 0===(t&=-t)&&(0===(t=(e=4186112&~e)&-e)&&(t=8192)),t}return e=Ha(),0!=(4&Il)&&98===e?e=Bt(12,ss):e=Bt(e=function(e){switch(e){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}(e),ss),e}function hs(e,t,n){if(50<os)throw os=0,is=null,Error(i(185));if(null===(e=ms(e,t)))return null;Ut(e,t,n),e===Al&&(Ul|=t,4===Fl&&bs(e,Rl));var r=Ha();1===t?0!=(8&Il)&&0==(48&Il)?ys(e):(gs(e,n),0===Il&&(Gl(),Ga())):(0==(4&Il)||98!==r&&99!==r||(null===as?as=new Set([e]):as.add(e)),gs(e,n)),Vl=e}function ms(e,t){e.lanes|=t;var n=e.alternate;for(null!==n&&(n.lanes|=t),n=e,e=e.return;null!==e;)e.childLanes|=t,null!==(n=e.alternate)&&(n.childLanes|=t),n=e,e=e.return;return 3===n.tag?n.stateNode:null}function gs(e,t){for(var n=e.callbackNode,r=e.suspendedLanes,a=e.pingedLanes,o=e.expirationTimes,l=e.pendingLanes;0<l;){var s=31-Ht(l),u=1<<s,c=o[s];if(-1===c){if(0==(u&r)||0!=(u&a)){c=t,jt(u);var d=Rt;o[s]=10<=d?c+250:6<=d?c+5e3:-1}}else c<=t&&(e.expiredLanes|=u);l&=~u}if(r=Mt(e,e===Al?Rl:0),t=Rt,0===r)null!==n&&(n!==ja&&Ca(n),e.callbackNode=null,e.callbackPriority=0);else{if(null!==n){if(e.callbackPriority===t)return;n!==ja&&Ca(n)}15===t?(n=ys.bind(null,e),null===Fa?(Fa=[n],Ba=Sa(Na,Za)):Fa.push(n),n=ja):14===t?n=Wa(99,ys.bind(null,e)):(n=function(e){switch(e){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(i(358,e))}}(t),n=Wa(n,vs.bind(null,e))),e.callbackPriority=t,e.callbackNode=n}}function vs(e){if(ls=-1,us=ss=0,0!=(48&Il))throw Error(i(327));var t=e.callbackNode;if(Rs()&&e.callbackNode!==t)return null;var n=Mt(e,e===Al?Rl:0);if(0===n)return null;var r=n,a=Il;Il|=16;var o=Cs();for(Al===e&&Rl===r||(Gl(),Es(e,r));;)try{Ds();break}catch(s){Ss(e,s)}if(to(),Pl.current=o,Il=a,null!==Ll?r=0:(Al=null,Rl=0,r=Fl),0!=(zl&Ul))Es(e,0);else if(0!==r){if(2===r&&(Il|=64,e.hydrate&&(e.hydrate=!1,Wr(e.containerInfo)),0!==(n=Ft(e))&&(r=Ts(e,n))),1===r)throw t=Bl,Es(e,0),bs(e,n),gs(e,Ua()),t;switch(e.finishedWork=e.current.alternate,e.finishedLanes=n,r){case 0:case 1:throw Error(i(345));case 2:case 5:Is(e);break;case 3:if(bs(e,n),(62914560&n)===n&&10<(r=ql+500-Ua())){if(0!==Mt(e,0))break;if(((a=e.suspendedLanes)&n)!==n){fs(),e.pingedLanes|=e.suspendedLanes&a;break}e.timeoutHandle=Vr(Is.bind(null,e),r);break}Is(e);break;case 4:if(bs(e,n),(4186112&n)===n)break;for(r=e.eventTimes,a=-1;0<n;){var l=31-Ht(n);o=1<<l,(l=r[l])>a&&(a=l),n&=~o}if(n=a,10<(n=(120>(n=Ua()-n)?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*Dl(n/1960))-n)){e.timeoutHandle=Vr(Is.bind(null,e),n);break}Is(e);break;default:throw Error(i(329))}}return gs(e,Ua()),e.callbackNode===t?vs.bind(null,e):null}function bs(e,t){for(t&=~Hl,t&=~Ul,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-Ht(t),r=1<<n;e[n]=-1,t&=~r}}function ys(e){if(0!=(48&Il))throw Error(i(327));if(Rs(),e===Al&&0!=(e.expiredLanes&Rl)){var t=Rl,n=Ts(e,t);0!=(zl&Ul)&&(n=Ts(e,t=Mt(e,t)))}else n=Ts(e,t=Mt(e,0));if(0!==e.tag&&2===n&&(Il|=64,e.hydrate&&(e.hydrate=!1,Wr(e.containerInfo)),0!==(t=Ft(e))&&(n=Ts(e,t))),1===n)throw n=Bl,Es(e,0),bs(e,t),gs(e,Ua()),n;return e.finishedWork=e.current.alternate,e.finishedLanes=t,Is(e),gs(e,Ua()),null}function ws(e,t){var n=Il;Il|=1;try{return e(t)}finally{0===(Il=n)&&(Gl(),Ga())}}function xs(e,t){var n=Il;Il&=-2,Il|=8;try{return e(t)}finally{0===(Il=n)&&(Gl(),Ga())}}function ks(e,t){ca(Ml,jl),jl|=t,zl|=t}function _s(){jl=Ml.current,ua(Ml)}function Es(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,qr(n)),null!==Ll)for(n=Ll.return;null!==n;){var r=n;switch(r.tag){case 1:null!=(r=r.type.childContextTypes)&&va();break;case 3:Lo(),ua(pa),ua(fa),Qo();break;case 5:jo(r);break;case 4:Lo();break;case 13:case 19:ua(Mo);break;case 10:no(r);break;case 23:case 24:_s()}n=n.return}Al=e,Ll=Ws(e.current,null),Rl=jl=zl=t,Fl=0,Bl=null,Hl=Ul=$l=0}function Ss(e,t){for(;;){var n=Ll;try{if(to(),Yo.current=Ni,ni){for(var r=Jo.memoizedState;null!==r;){var a=r.queue;null!==a&&(a.pending=null),r=r.next}ni=!1}if(Ko=0,ti=ei=Jo=null,ri=!1,Nl.current=null,null===n||null===n.return){Fl=1,Bl=t,Ll=null;break}e:{var o=e,i=n.return,l=n,s=t;if(t=Rl,l.flags|=2048,l.firstEffect=l.lastEffect=null,null!==s&&"object"==typeof s&&"function"==typeof s.then){var u=s;if(0==(2&l.mode)){var c=l.alternate;c?(l.updateQueue=c.updateQueue,l.memoizedState=c.memoizedState,l.lanes=c.lanes):(l.updateQueue=null,l.memoizedState=null)}var d=0!=(1&Mo.current),f=i;do{var p;if(p=13===f.tag){var h=f.memoizedState;if(null!==h)p=null!==h.dehydrated;else{var m=f.memoizedProps;p=void 0!==m.fallback&&(!0!==m.unstable_avoidThisFallback||!d)}}if(p){var g=f.updateQueue;if(null===g){var v=new Set;v.add(u),f.updateQueue=v}else g.add(u);if(0==(2&f.mode)){if(f.flags|=64,l.flags|=16384,l.flags&=-2981,1===l.tag)if(null===l.alternate)l.tag=17;else{var b=uo(-1,1);b.tag=2,co(l,b)}l.lanes|=1;break e}s=void 0,l=t;var y=o.pingCache;if(null===y?(y=o.pingCache=new dl,s=new Set,y.set(u,s)):void 0===(s=y.get(u))&&(s=new Set,y.set(u,s)),!s.has(l)){s.add(l);var w=$s.bind(null,o,u,l);u.then(w,w)}f.flags|=4096,f.lanes=t;break e}f=f.return}while(null!==f);s=Error((G(l.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.")}5!==Fl&&(Fl=2),s=ul(s,l),f=i;do{switch(f.tag){case 3:o=s,f.flags|=4096,t&=-t,f.lanes|=t,fo(f,fl(0,o,t));break e;case 1:o=s;var x=f.type,k=f.stateNode;if(0==(64&f.flags)&&("function"==typeof x.getDerivedStateFromError||null!==k&&"function"==typeof k.componentDidCatch&&(null===Kl||!Kl.has(k)))){f.flags|=4096,t&=-t,f.lanes|=t,fo(f,pl(f,o,t));break e}}f=f.return}while(null!==f)}Ns(n)}catch(_){t=_,Ll===n&&null!==n&&(Ll=n=n.return);continue}break}}function Cs(){var e=Pl.current;return Pl.current=Ni,null===e?Ni:e}function Ts(e,t){var n=Il;Il|=16;var r=Cs();for(Al===e&&Rl===t||Es(e,t);;)try{Os();break}catch(a){Ss(e,a)}if(to(),Il=n,Pl.current=r,null!==Ll)throw Error(i(261));return Al=null,Rl=0,Fl}function Os(){for(;null!==Ll;)Ps(Ll)}function Ds(){for(;null!==Ll&&!Ta();)Ps(Ll)}function Ps(e){var t=Zl(e.alternate,e,jl);e.memoizedProps=e.pendingProps,null===t?Ns(e):Ll=t,Nl.current=null}function Ns(e){var t=e;do{var n=t.alternate;if(e=t.return,0==(2048&t.flags)){if(null!==(n=ll(n,t,jl)))return void(Ll=n);if(24!==(n=t).tag&&23!==n.tag||null===n.memoizedState||0!=(1073741824&jl)||0==(4&n.mode)){for(var r=0,a=n.child;null!==a;)r|=a.lanes|a.childLanes,a=a.sibling;n.childLanes=r}null!==e&&0==(2048&e.flags)&&(null===e.firstEffect&&(e.firstEffect=t.firstEffect),null!==t.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=t.firstEffect),e.lastEffect=t.lastEffect),1<t.flags&&(null!==e.lastEffect?e.lastEffect.nextEffect=t:e.firstEffect=t,e.lastEffect=t))}else{if(null!==(n=sl(t)))return n.flags&=2047,void(Ll=n);null!==e&&(e.firstEffect=e.lastEffect=null,e.flags|=2048)}if(null!==(t=t.sibling))return void(Ll=t);Ll=t=e}while(null!==t);0===Fl&&(Fl=5)}function Is(e){var t=Ha();return qa(99,As.bind(null,e,t)),null}function As(e,t){do{Rs()}while(null!==es);if(0!=(48&Il))throw Error(i(327));var n=e.finishedWork;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(i(177));e.callbackNode=null;var r=n.lanes|n.childLanes,a=r,o=e.pendingLanes&~a;e.pendingLanes=a,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=a,e.mutableReadLanes&=a,e.entangledLanes&=a,a=e.entanglements;for(var l=e.eventTimes,s=e.expirationTimes;0<o;){var u=31-Ht(o),c=1<<u;a[u]=0,l[u]=-1,s[u]=-1,o&=~c}if(null!==as&&0==(24&r)&&as.has(e)&&as.delete(e),e===Al&&(Ll=Al=null,Rl=0),1<n.flags?null!==n.lastEffect?(n.lastEffect.nextEffect=n,r=n.firstEffect):r=n:r=n.firstEffect,null!==r){if(a=Il,Il|=32,Nl.current=null,zr=Zt,gr(l=mr())){if("selectionStart"in l)s={start:l.selectionStart,end:l.selectionEnd};else e:if(s=(s=l.ownerDocument)&&s.defaultView||window,(c=s.getSelection&&s.getSelection())&&0!==c.rangeCount){s=c.anchorNode,o=c.anchorOffset,u=c.focusNode,c=c.focusOffset;try{s.nodeType,u.nodeType}catch(C){s=null;break e}var d=0,f=-1,p=-1,h=0,m=0,g=l,v=null;t:for(;;){for(var b;g!==s||0!==o&&3!==g.nodeType||(f=d+o),g!==u||0!==c&&3!==g.nodeType||(p=d+c),3===g.nodeType&&(d+=g.nodeValue.length),null!==(b=g.firstChild);)v=g,g=b;for(;;){if(g===l)break t;if(v===s&&++h===o&&(f=d),v===u&&++m===c&&(p=d),null!==(b=g.nextSibling))break;v=(g=v).parentNode}g=b}s=-1===f||-1===p?null:{start:f,end:p}}else s=null;s=s||{start:0,end:0}}else s=null;$r={focusedElem:l,selectionRange:s},Zt=!1,cs=null,ds=!1,Ql=r;do{try{Ls()}catch(C){if(null===Ql)throw Error(i(330));zs(Ql,C),Ql=Ql.nextEffect}}while(null!==Ql);cs=null,Ql=r;do{try{for(l=e;null!==Ql;){var y=Ql.flags;if(16&y&&ve(Ql.stateNode,""),128&y){var w=Ql.alternate;if(null!==w){var x=w.ref;null!==x&&("function"==typeof x?x(null):x.current=null)}}switch(1038&y){case 2:kl(Ql),Ql.flags&=-3;break;case 6:kl(Ql),Ql.flags&=-3,Cl(Ql.alternate,Ql);break;case 1024:Ql.flags&=-1025;break;case 1028:Ql.flags&=-1025,Cl(Ql.alternate,Ql);break;case 4:Cl(Ql.alternate,Ql);break;case 8:Sl(l,s=Ql);var k=s.alternate;wl(s),null!==k&&wl(k)}Ql=Ql.nextEffect}}catch(C){if(null===Ql)throw Error(i(330));zs(Ql,C),Ql=Ql.nextEffect}}while(null!==Ql);if(x=$r,w=mr(),y=x.focusedElem,l=x.selectionRange,w!==y&&y&&y.ownerDocument&&hr(y.ownerDocument.documentElement,y)){null!==l&&gr(y)&&(w=l.start,void 0===(x=l.end)&&(x=w),"selectionStart"in y?(y.selectionStart=w,y.selectionEnd=Math.min(x,y.value.length)):(x=(w=y.ownerDocument||document)&&w.defaultView||window).getSelection&&(x=x.getSelection(),s=y.textContent.length,k=Math.min(l.start,s),l=void 0===l.end?k:Math.min(l.end,s),!x.extend&&k>l&&(s=l,l=k,k=s),s=pr(y,k),o=pr(y,l),s&&o&&(1!==x.rangeCount||x.anchorNode!==s.node||x.anchorOffset!==s.offset||x.focusNode!==o.node||x.focusOffset!==o.offset)&&((w=w.createRange()).setStart(s.node,s.offset),x.removeAllRanges(),k>l?(x.addRange(w),x.extend(o.node,o.offset)):(w.setEnd(o.node,o.offset),x.addRange(w))))),w=[];for(x=y;x=x.parentNode;)1===x.nodeType&&w.push({element:x,left:x.scrollLeft,top:x.scrollTop});for("function"==typeof y.focus&&y.focus(),y=0;y<w.length;y++)(x=w[y]).element.scrollLeft=x.left,x.element.scrollTop=x.top}Zt=!!zr,$r=zr=null,e.current=n,Ql=r;do{try{for(y=e;null!==Ql;){var _=Ql.flags;if(36&_&&vl(y,Ql.alternate,Ql),128&_){w=void 0;var E=Ql.ref;if(null!==E){var S=Ql.stateNode;Ql.tag,w=S,"function"==typeof E?E(w):E.current=w}}Ql=Ql.nextEffect}}catch(C){if(null===Ql)throw Error(i(330));zs(Ql,C),Ql=Ql.nextEffect}}while(null!==Ql);Ql=null,Ma(),Il=a}else e.current=n;if(Jl)Jl=!1,es=e,ts=t;else for(Ql=r;null!==Ql;)t=Ql.nextEffect,Ql.nextEffect=null,8&Ql.flags&&((_=Ql).sibling=null,_.stateNode=null),Ql=t;if(0===(r=e.pendingLanes)&&(Kl=null),1===r?e===is?os++:(os=0,is=e):os=0,n=n.stateNode,_a&&"function"==typeof _a.onCommitFiberRoot)try{_a.onCommitFiberRoot(ka,n,void 0,64==(64&n.current.flags))}catch(C){}if(gs(e,Ua()),Yl)throw Yl=!1,e=Xl,Xl=null,e;return 0!=(8&Il)||Ga(),null}function Ls(){for(;null!==Ql;){var e=Ql.alternate;ds||null===cs||(0!=(8&Ql.flags)?Je(Ql,cs)&&(ds=!0):13===Ql.tag&&Ol(e,Ql)&&Je(Ql,cs)&&(ds=!0));var t=Ql.flags;0!=(256&t)&&gl(e,Ql),0==(512&t)||Jl||(Jl=!0,Wa(97,(function(){return Rs(),null}))),Ql=Ql.nextEffect}}function Rs(){if(90!==ts){var e=97<ts?97:ts;return ts=90,qa(e,Fs)}return!1}function js(e,t){ns.push(t,e),Jl||(Jl=!0,Wa(97,(function(){return Rs(),null})))}function Ms(e,t){rs.push(t,e),Jl||(Jl=!0,Wa(97,(function(){return Rs(),null})))}function Fs(){if(null===es)return!1;var e=es;if(es=null,0!=(48&Il))throw Error(i(331));var t=Il;Il|=32;var n=rs;rs=[];for(var r=0;r<n.length;r+=2){var a=n[r],o=n[r+1],l=a.destroy;if(a.destroy=void 0,"function"==typeof l)try{l()}catch(u){if(null===o)throw Error(i(330));zs(o,u)}}for(n=ns,ns=[],r=0;r<n.length;r+=2){a=n[r],o=n[r+1];try{var s=a.create;a.destroy=s()}catch(u){if(null===o)throw Error(i(330));zs(o,u)}}for(s=e.current.firstEffect;null!==s;)e=s.nextEffect,s.nextEffect=null,8&s.flags&&(s.sibling=null,s.stateNode=null),s=e;return Il=t,Ga(),!0}function Bs(e,t,n){co(e,t=fl(0,t=ul(n,t),1)),t=fs(),null!==(e=ms(e,1))&&(Ut(e,1,t),gs(e,t))}function zs(e,t){if(3===e.tag)Bs(e,e,t);else for(var n=e.return;null!==n;){if(3===n.tag){Bs(n,e,t);break}if(1===n.tag){var r=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Kl||!Kl.has(r))){var a=pl(n,e=ul(t,e),1);if(co(n,a),a=fs(),null!==(n=ms(n,1)))Ut(n,1,a),gs(n,a);else if("function"==typeof r.componentDidCatch&&(null===Kl||!Kl.has(r)))try{r.componentDidCatch(t,e)}catch(o){}break}}n=n.return}}function $s(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),t=fs(),e.pingedLanes|=e.suspendedLanes&n,Al===e&&(Rl&n)===n&&(4===Fl||3===Fl&&(62914560&Rl)===Rl&&500>Ua()-ql?Es(e,0):Hl|=n),gs(e,t)}function Us(e,t){var n=e.stateNode;null!==n&&n.delete(t),0===(t=0)&&(0==(2&(t=e.mode))?t=1:0==(4&t)?t=99===Ha()?1:2:(0===ss&&(ss=zl),0===(t=zt(62914560&~ss))&&(t=4194304))),n=fs(),null!==(e=ms(e,t))&&(Ut(e,t,n),gs(e,n))}function Hs(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.flags=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childLanes=this.lanes=0,this.alternate=null}function Vs(e,t,n,r){return new Hs(e,t,n,r)}function qs(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Ws(e,t){var n=e.alternate;return null===n?((n=Vs(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Gs(e,t,n,r,a,o){var l=2;if(r=e,"function"==typeof e)qs(e)&&(l=1);else if("string"==typeof e)l=5;else e:switch(e){case E:return Zs(n.children,a,o,t);case j:l=8,a|=16;break;case S:l=8,a|=1;break;case C:return(e=Vs(12,n,t,8|a)).elementType=C,e.type=C,e.lanes=o,e;case P:return(e=Vs(13,n,t,a)).type=P,e.elementType=P,e.lanes=o,e;case N:return(e=Vs(19,n,t,a)).elementType=N,e.lanes=o,e;case M:return Qs(n,a,o,t);case F:return(e=Vs(24,n,t,a)).elementType=F,e.lanes=o,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case T:l=10;break e;case O:l=9;break e;case D:l=11;break e;case I:l=14;break e;case A:l=16,r=null;break e;case L:l=22;break e}throw Error(i(130,null==e?e:typeof e,""))}return(t=Vs(l,n,t,a)).elementType=e,t.type=r,t.lanes=o,t}function Zs(e,t,n,r){return(e=Vs(7,e,r,t)).lanes=n,e}function Qs(e,t,n,r){return(e=Vs(23,e,r,t)).elementType=M,e.lanes=n,e}function Ys(e,t,n){return(e=Vs(6,e,null,t)).lanes=n,e}function Xs(e,t,n){return(t=Vs(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Ks(e,t,n){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.pendingContext=this.context=null,this.hydrate=n,this.callbackNode=null,this.callbackPriority=0,this.eventTimes=$t(0),this.expirationTimes=$t(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=$t(0),this.mutableSourceEagerHydrationData=null}function Js(e,t,n,r){var a=t.current,o=fs(),l=ps(a);e:if(n){t:{if(Qe(n=n._reactInternals)!==n||1!==n.tag)throw Error(i(170));var s=n;do{switch(s.tag){case 3:s=s.stateNode.context;break t;case 1:if(ga(s.type)){s=s.stateNode.__reactInternalMemoizedMergedChildContext;break t}}s=s.return}while(null!==s);throw Error(i(171))}if(1===n.tag){var u=n.type;if(ga(u)){n=ya(n,u,s);break e}}n=s}else n=da;return null===t.context?t.context=n:t.pendingContext=n,(t=uo(o,l)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),co(a,t),hs(a,l,o),l}function eu(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function tu(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function nu(e,t){tu(e,t),(e=e.alternate)&&tu(e,t)}function ru(e,t,n){var r=null!=n&&null!=n.hydrationOptions&&n.hydrationOptions.mutableSources||null;if(n=new Ks(e,t,null!=n&&!0===n.hydrate),t=Vs(3,null,null,2===t?7:1===t?3:0),n.current=t,t.stateNode=n,lo(t),e[Jr]=n.current,Nr(8===e.nodeType?e.parentNode:e),r)for(e=0;e<r.length;e++){var a=(t=r[e])._getVersion;a=a(t._source),null==n.mutableSourceEagerHydrationData?n.mutableSourceEagerHydrationData=[t,a]:n.mutableSourceEagerHydrationData.push(t,a)}this._internalRoot=n}function au(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function ou(e,t,n,r,a){var o=n._reactRootContainer;if(o){var i=o._internalRoot;if("function"==typeof a){var l=a;a=function(){var e=eu(i);l.call(e)}}Js(t,i,e,a)}else{if(o=n._reactRootContainer=function(e,t){if(t||(t=!(!(t=e?9===e.nodeType?e.documentElement:e.firstChild:null)||1!==t.nodeType||!t.hasAttribute("data-reactroot"))),!t)for(var n;n=e.lastChild;)e.removeChild(n);return new ru(e,0,t?{hydrate:!0}:void 0)}(n,r),i=o._internalRoot,"function"==typeof a){var s=a;a=function(){var e=eu(i);s.call(e)}}xs((function(){Js(t,i,e,a)}))}return eu(i)}function iu(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!au(t))throw Error(i(200));return function(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:_,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}(e,t,null,n)}Zl=function(e,t,n){var r=t.lanes;if(null!==e)if(e.memoizedProps!==t.pendingProps||pa.current)ji=!0;else{if(0==(n&r)){switch(ji=!1,t.tag){case 3:Wi(t),Go();break;case 5:Ro(t);break;case 1:ga(t.type)&&wa(t);break;case 4:Ao(t,t.stateNode.containerInfo);break;case 10:r=t.memoizedProps.value;var a=t.type._context;ca(Xa,a._currentValue),a._currentValue=r;break;case 13:if(null!==t.memoizedState)return 0!=(n&t.child.childLanes)?Ki(e,t,n):(ca(Mo,1&Mo.current),null!==(t=ol(e,t,n))?t.sibling:null);ca(Mo,1&Mo.current);break;case 19:if(r=0!=(n&t.childLanes),0!=(64&e.flags)){if(r)return al(e,t,n);t.flags|=64}if(null!==(a=t.memoizedState)&&(a.rendering=null,a.tail=null,a.lastEffect=null),ca(Mo,Mo.current),r)break;return null;case 23:case 24:return t.lanes=0,$i(e,t,n)}return ol(e,t,n)}ji=0!=(16384&e.flags)}else ji=!1;switch(t.lanes=0,t.tag){case 2:if(r=t.type,null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,a=ma(t,fa.current),ao(t,n),a=ii(null,t,r,e,a,n),t.flags|=1,"object"==typeof a&&null!==a&&"function"==typeof a.render&&void 0===a.$$typeof){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,ga(r)){var o=!0;wa(t)}else o=!1;t.memoizedState=null!==a.state&&void 0!==a.state?a.state:null,lo(t);var l=r.getDerivedStateFromProps;"function"==typeof l&&go(t,r,l,e),a.updater=vo,t.stateNode=a,a._reactInternals=t,xo(t,r,e,n),t=qi(null,t,r,!0,o,n)}else t.tag=0,Mi(null,t,a,n),t=t.child;return t;case 16:a=t.elementType;e:{switch(null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,a=(o=a._init)(a._payload),t.type=a,o=t.tag=function(e){if("function"==typeof e)return qs(e)?1:0;if(null!=e){if((e=e.$$typeof)===D)return 11;if(e===I)return 14}return 2}(a),e=Ya(a,e),o){case 0:t=Hi(null,t,a,e,n);break e;case 1:t=Vi(null,t,a,e,n);break e;case 11:t=Fi(null,t,a,e,n);break e;case 14:t=Bi(null,t,a,Ya(a.type,e),r,n);break e}throw Error(i(306,a,""))}return t;case 0:return r=t.type,a=t.pendingProps,Hi(e,t,r,a=t.elementType===r?a:Ya(r,a),n);case 1:return r=t.type,a=t.pendingProps,Vi(e,t,r,a=t.elementType===r?a:Ya(r,a),n);case 3:if(Wi(t),r=t.updateQueue,null===e||null===r)throw Error(i(282));if(r=t.pendingProps,a=null!==(a=t.memoizedState)?a.element:null,so(e,t),po(t,r,null,n),(r=t.memoizedState.element)===a)Go(),t=ol(e,t,n);else{if((o=(a=t.stateNode).hydrate)&&(zo=Gr(t.stateNode.containerInfo.firstChild),Bo=t,o=$o=!0),o){if(null!=(e=a.mutableSourceEagerHydrationData))for(a=0;a<e.length;a+=2)(o=e[a])._workInProgressVersionPrimary=e[a+1],Zo.push(o);for(n=To(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|1024,n=n.sibling}else Mi(e,t,r,n),Go();t=t.child}return t;case 5:return Ro(t),null===e&&Vo(t),r=t.type,a=t.pendingProps,o=null!==e?e.memoizedProps:null,l=a.children,Hr(r,a)?l=null:null!==o&&Hr(r,o)&&(t.flags|=16),Ui(e,t),Mi(e,t,l,n),t.child;case 6:return null===e&&Vo(t),null;case 13:return Ki(e,t,n);case 4:return Ao(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=Co(t,null,r,n):Mi(e,t,r,n),t.child;case 11:return r=t.type,a=t.pendingProps,Fi(e,t,r,a=t.elementType===r?a:Ya(r,a),n);case 7:return Mi(e,t,t.pendingProps,n),t.child;case 8:case 12:return Mi(e,t,t.pendingProps.children,n),t.child;case 10:e:{r=t.type._context,a=t.pendingProps,l=t.memoizedProps,o=a.value;var s=t.type._context;if(ca(Xa,s._currentValue),s._currentValue=o,null!==l)if(s=l.value,0===(o=ur(s,o)?0:0|("function"==typeof r._calculateChangedBits?r._calculateChangedBits(s,o):1073741823))){if(l.children===a.children&&!pa.current){t=ol(e,t,n);break e}}else for(null!==(s=t.child)&&(s.return=t);null!==s;){var u=s.dependencies;if(null!==u){l=s.child;for(var c=u.firstContext;null!==c;){if(c.context===r&&0!=(c.observedBits&o)){1===s.tag&&((c=uo(-1,n&-n)).tag=2,co(s,c)),s.lanes|=n,null!==(c=s.alternate)&&(c.lanes|=n),ro(s.return,n),u.lanes|=n;break}c=c.next}}else l=10===s.tag&&s.type===t.type?null:s.child;if(null!==l)l.return=s;else for(l=s;null!==l;){if(l===t){l=null;break}if(null!==(s=l.sibling)){s.return=l.return,l=s;break}l=l.return}s=l}Mi(e,t,a.children,n),t=t.child}return t;case 9:return a=t.type,r=(o=t.pendingProps).children,ao(t,n),r=r(a=oo(a,o.unstable_observedBits)),t.flags|=1,Mi(e,t,r,n),t.child;case 14:return o=Ya(a=t.type,t.pendingProps),Bi(e,t,a,o=Ya(a.type,o),r,n);case 15:return zi(e,t,t.type,t.pendingProps,r,n);case 17:return r=t.type,a=t.pendingProps,a=t.elementType===r?a:Ya(r,a),null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),t.tag=1,ga(r)?(e=!0,wa(t)):e=!1,ao(t,n),yo(t,r,a),xo(t,r,a,n),qi(null,t,r,!0,e,n);case 19:return al(e,t,n);case 23:case 24:return $i(e,t,n)}throw Error(i(156,t.tag))},ru.prototype.render=function(e){Js(e,this._internalRoot,null,null)},ru.prototype.unmount=function(){var e=this._internalRoot,t=e.containerInfo;Js(null,e,null,(function(){t[Jr]=null}))},et=function(e){13===e.tag&&(hs(e,4,fs()),nu(e,4))},tt=function(e){13===e.tag&&(hs(e,67108864,fs()),nu(e,67108864))},nt=function(e){if(13===e.tag){var t=fs(),n=ps(e);hs(e,n,t),nu(e,n)}},rt=function(e,t){return t()},Ce=function(e,t,n){switch(t){case"input":if(ne(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var a=aa(r);if(!a)throw Error(i(90));X(r),ne(r,a)}}}break;case"textarea":ue(e,n);break;case"select":null!=(t=n.value)&&ie(e,!!n.multiple,t,!1)}},Ie=ws,Ae=function(e,t,n,r,a){var o=Il;Il|=4;try{return qa(98,e.bind(null,t,n,r,a))}finally{0===(Il=o)&&(Gl(),Ga())}},Le=function(){0==(49&Il)&&(function(){if(null!==as){var e=as;as=null,e.forEach((function(e){e.expiredLanes|=24&e.pendingLanes,gs(e,Ua())}))}Ga()}(),Rs())},Re=function(e,t){var n=Il;Il|=2;try{return e(t)}finally{0===(Il=n)&&(Gl(),Ga())}};var lu={Events:[na,ra,aa,Pe,Ne,Rs,{current:!1}]},su={findFiberByHostInstance:ta,bundleType:0,version:"17.0.2",rendererPackageName:"react-dom"},uu={bundleType:su.bundleType,version:su.version,rendererPackageName:su.rendererPackageName,rendererConfig:su.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:x.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=Ke(e))?null:e.stateNode},findFiberByHostInstance:su.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var cu=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!cu.isDisabled&&cu.supportsFiber)try{ka=cu.inject(uu),_a=cu}catch(me){}}t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=lu,t.createPortal=iu,t.findDOMNode=function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternals;if(void 0===t){if("function"==typeof e.render)throw Error(i(188));throw Error(i(268,Object.keys(e)))}return e=null===(e=Ke(t))?null:e.stateNode},t.flushSync=function(e,t){var n=Il;if(0!=(48&n))return e(t);Il|=1;try{if(e)return qa(99,e.bind(null,t))}finally{Il=n,Ga()}},t.hydrate=function(e,t,n){if(!au(t))throw Error(i(200));return ou(null,e,t,!0,n)},t.render=function(e,t,n){if(!au(t))throw Error(i(200));return ou(null,e,t,!1,n)},t.unmountComponentAtNode=function(e){if(!au(e))throw Error(i(40));return!!e._reactRootContainer&&(xs((function(){ou(null,null,e,!1,(function(){e._reactRootContainer=null,e[Jr]=null}))})),!0)},t.unstable_batchedUpdates=ws,t.unstable_createPortal=function(e,t){return iu(e,t,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)},t.unstable_renderSubtreeIntoContainer=function(e,t,n,r){if(!au(n))throw Error(i(200));if(null==e||void 0===e._reactInternals)throw Error(i(38));return ou(e,t,n,!1,r)},t.version="17.0.2"},73935:(e,t,n)=>{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(64448)},69590:e=>{var t="undefined"!=typeof Element,n="function"==typeof Map,r="function"==typeof Set,a="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function o(e,i){if(e===i)return!0;if(e&&i&&"object"==typeof e&&"object"==typeof i){if(e.constructor!==i.constructor)return!1;var l,s,u,c;if(Array.isArray(e)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(!o(e[s],i[s]))return!1;return!0}if(n&&e instanceof Map&&i instanceof Map){if(e.size!==i.size)return!1;for(c=e.entries();!(s=c.next()).done;)if(!i.has(s.value[0]))return!1;for(c=e.entries();!(s=c.next()).done;)if(!o(s.value[1],i.get(s.value[0])))return!1;return!0}if(r&&e instanceof Set&&i instanceof Set){if(e.size!==i.size)return!1;for(c=e.entries();!(s=c.next()).done;)if(!i.has(s.value[0]))return!1;return!0}if(a&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(i)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(e[s]!==i[s])return!1;return!0}if(e.constructor===RegExp)return e.source===i.source&&e.flags===i.flags;if(e.valueOf!==Object.prototype.valueOf&&"function"==typeof e.valueOf&&"function"==typeof i.valueOf)return e.valueOf()===i.valueOf();if(e.toString!==Object.prototype.toString&&"function"==typeof e.toString&&"function"==typeof i.toString)return e.toString()===i.toString();if((l=(u=Object.keys(e)).length)!==Object.keys(i).length)return!1;for(s=l;0!=s--;)if(!Object.prototype.hasOwnProperty.call(i,u[s]))return!1;if(t&&e instanceof Element)return!1;for(s=l;0!=s--;)if(("_owner"!==u[s]&&"__v"!==u[s]&&"__o"!==u[s]||!e.$$typeof)&&!o(e[u[s]],i[u[s]]))return!1;return!0}return e!=e&&i!=i}e.exports=function(e,t){try{return o(e,t)}catch(n){if((n.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw n}}},70405:(e,t,n)=>{"use strict";n.d(t,{B6:()=>q,ql:()=>J});var r=n(67294),a=n(45697),o=n.n(a),i=n(69590),l=n.n(i),s=n(41143),u=n.n(s),c=n(96774),d=n.n(c);function f(){return f=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},f.apply(this,arguments)}function p(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,h(e,t)}function h(e,t){return h=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},h(e,t)}function m(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t.indexOf(n=o[r])>=0||(a[n]=e[n]);return a}var g={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title",FRAGMENT:"Symbol(react.fragment)"},v={rel:["amphtml","canonical","alternate"]},b={type:["application/ld+json"]},y={charset:"",name:["robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]},w=Object.keys(g).map((function(e){return g[e]})),x={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},k=Object.keys(x).reduce((function(e,t){return e[x[t]]=t,e}),{}),_=function(e,t){for(var n=e.length-1;n>=0;n-=1){var r=e[n];if(Object.prototype.hasOwnProperty.call(r,t))return r[t]}return null},E=function(e){var t=_(e,g.TITLE),n=_(e,"titleTemplate");if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,(function(){return t}));var r=_(e,"defaultTitle");return t||r||void 0},S=function(e){return _(e,"onChangeClientState")||function(){}},C=function(e,t){return t.filter((function(t){return void 0!==t[e]})).map((function(t){return t[e]})).reduce((function(e,t){return f({},e,t)}),{})},T=function(e,t){return t.filter((function(e){return void 0!==e[g.BASE]})).map((function(e){return e[g.BASE]})).reverse().reduce((function(t,n){if(!t.length)for(var r=Object.keys(n),a=0;a<r.length;a+=1){var o=r[a].toLowerCase();if(-1!==e.indexOf(o)&&n[o])return t.concat(n)}return t}),[])},O=function(e,t,n){var r={};return n.filter((function(t){return!!Array.isArray(t[e])||(void 0!==t[e]&&console&&"function"==typeof console.warn&&console.warn("Helmet: "+e+' should be of type "Array". Instead found type "'+typeof t[e]+'"'),!1)})).map((function(t){return t[e]})).reverse().reduce((function(e,n){var a={};n.filter((function(e){for(var n,o=Object.keys(e),i=0;i<o.length;i+=1){var l=o[i],s=l.toLowerCase();-1===t.indexOf(s)||"rel"===n&&"canonical"===e[n].toLowerCase()||"rel"===s&&"stylesheet"===e[s].toLowerCase()||(n=s),-1===t.indexOf(l)||"innerHTML"!==l&&"cssText"!==l&&"itemprop"!==l||(n=l)}if(!n||!e[n])return!1;var u=e[n].toLowerCase();return r[n]||(r[n]={}),a[n]||(a[n]={}),!r[n][u]&&(a[n][u]=!0,!0)})).reverse().forEach((function(t){return e.push(t)}));for(var o=Object.keys(a),i=0;i<o.length;i+=1){var l=o[i],s=f({},r[l],a[l]);r[l]=s}return e}),[]).reverse()},D=function(e,t){if(Array.isArray(e)&&e.length)for(var n=0;n<e.length;n+=1)if(e[n][t])return!0;return!1},P=function(e){return Array.isArray(e)?e.join(""):e},N=function(e,t){return Array.isArray(e)?e.reduce((function(e,n){return function(e,t){for(var n=Object.keys(e),r=0;r<n.length;r+=1)if(t[n[r]]&&t[n[r]].includes(e[n[r]]))return!0;return!1}(n,t)?e.priority.push(n):e.default.push(n),e}),{priority:[],default:[]}):{default:e}},I=function(e,t){var n;return f({},e,((n={})[t]=void 0,n))},A=[g.NOSCRIPT,g.SCRIPT,g.STYLE],L=function(e,t){return void 0===t&&(t=!0),!1===t?String(e):String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")},R=function(e){return Object.keys(e).reduce((function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r}),"")},j=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce((function(t,n){return t[x[n]||n]=e[n],t}),t)},M=function(e,t){return t.map((function(t,n){var a,o=((a={key:n})["data-rh"]=!0,a);return Object.keys(t).forEach((function(e){var n=x[e]||e;"innerHTML"===n||"cssText"===n?o.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:o[n]=t[e]})),r.createElement(e,o)}))},F=function(e,t,n){switch(e){case g.TITLE:return{toComponent:function(){return n=t.titleAttributes,(a={key:e=t.title})["data-rh"]=!0,o=j(n,a),[r.createElement(g.TITLE,o,e)];var e,n,a,o},toString:function(){return function(e,t,n,r){var a=R(n),o=P(t);return a?"<"+e+' data-rh="true" '+a+">"+L(o,r)+"</"+e+">":"<"+e+' data-rh="true">'+L(o,r)+"</"+e+">"}(e,t.title,t.titleAttributes,n)}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return j(t)},toString:function(){return R(t)}};default:return{toComponent:function(){return M(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var a=Object.keys(r).filter((function(e){return!("innerHTML"===e||"cssText"===e)})).reduce((function(e,t){var a=void 0===r[t]?t:t+'="'+L(r[t],n)+'"';return e?e+" "+a:a}),""),o=r.innerHTML||r.cssText||"",i=-1===A.indexOf(e);return t+"<"+e+' data-rh="true" '+a+(i?"/>":">"+o+"</"+e+">")}),"")}(e,t,n)}}}},B=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,a=e.htmlAttributes,o=e.noscriptTags,i=e.styleTags,l=e.title,s=void 0===l?"":l,u=e.titleAttributes,c=e.linkTags,d=e.metaTags,f=e.scriptTags,p={toComponent:function(){},toString:function(){return""}};if(e.prioritizeSeoTags){var h=function(e){var t=e.linkTags,n=e.scriptTags,r=e.encode,a=N(e.metaTags,y),o=N(t,v),i=N(n,b);return{priorityMethods:{toComponent:function(){return[].concat(M(g.META,a.priority),M(g.LINK,o.priority),M(g.SCRIPT,i.priority))},toString:function(){return F(g.META,a.priority,r)+" "+F(g.LINK,o.priority,r)+" "+F(g.SCRIPT,i.priority,r)}},metaTags:a.default,linkTags:o.default,scriptTags:i.default}}(e);p=h.priorityMethods,c=h.linkTags,d=h.metaTags,f=h.scriptTags}return{priority:p,base:F(g.BASE,t,r),bodyAttributes:F("bodyAttributes",n,r),htmlAttributes:F("htmlAttributes",a,r),link:F(g.LINK,c,r),meta:F(g.META,d,r),noscript:F(g.NOSCRIPT,o,r),script:F(g.SCRIPT,f,r),style:F(g.STYLE,i,r),title:F(g.TITLE,{title:s,titleAttributes:u},r)}},z=[],$=function(e,t){var n=this;void 0===t&&(t="undefined"!=typeof document),this.instances=[],this.value={setHelmet:function(e){n.context.helmet=e},helmetInstances:{get:function(){return n.canUseDOM?z:n.instances},add:function(e){(n.canUseDOM?z:n.instances).push(e)},remove:function(e){var t=(n.canUseDOM?z:n.instances).indexOf(e);(n.canUseDOM?z:n.instances).splice(t,1)}}},this.context=e,this.canUseDOM=t,t||(e.helmet=B({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},U=r.createContext({}),H=o().shape({setHelmet:o().func,helmetInstances:o().shape({get:o().func,add:o().func,remove:o().func})}),V="undefined"!=typeof document,q=function(e){function t(n){var r;return(r=e.call(this,n)||this).helmetData=new $(r.props.context,t.canUseDOM),r}return p(t,e),t.prototype.render=function(){return r.createElement(U.Provider,{value:this.helmetData.value},this.props.children)},t}(r.Component);q.canUseDOM=V,q.propTypes={context:o().shape({helmet:o().shape()}),children:o().node.isRequired},q.defaultProps={context:{}},q.displayName="HelmetProvider";var W=function(e,t){var n,r=document.head||document.querySelector(g.HEAD),a=r.querySelectorAll(e+"[data-rh]"),o=[].slice.call(a),i=[];return t&&t.length&&t.forEach((function(t){var r=document.createElement(e);for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&("innerHTML"===a?r.innerHTML=t.innerHTML:"cssText"===a?r.styleSheet?r.styleSheet.cssText=t.cssText:r.appendChild(document.createTextNode(t.cssText)):r.setAttribute(a,void 0===t[a]?"":t[a]));r.setAttribute("data-rh","true"),o.some((function(e,t){return n=t,r.isEqualNode(e)}))?o.splice(n,1):i.push(r)})),o.forEach((function(e){return e.parentNode.removeChild(e)})),i.forEach((function(e){return r.appendChild(e)})),{oldTags:o,newTags:i}},G=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute("data-rh"),a=r?r.split(","):[],o=[].concat(a),i=Object.keys(t),l=0;l<i.length;l+=1){var s=i[l],u=t[s]||"";n.getAttribute(s)!==u&&n.setAttribute(s,u),-1===a.indexOf(s)&&a.push(s);var c=o.indexOf(s);-1!==c&&o.splice(c,1)}for(var d=o.length-1;d>=0;d-=1)n.removeAttribute(o[d]);a.length===o.length?n.removeAttribute("data-rh"):n.getAttribute("data-rh")!==i.join(",")&&n.setAttribute("data-rh",i.join(","))}},Z=function(e,t){var n=e.baseTag,r=e.htmlAttributes,a=e.linkTags,o=e.metaTags,i=e.noscriptTags,l=e.onChangeClientState,s=e.scriptTags,u=e.styleTags,c=e.title,d=e.titleAttributes;G(g.BODY,e.bodyAttributes),G(g.HTML,r),function(e,t){void 0!==e&&document.title!==e&&(document.title=P(e)),G(g.TITLE,t)}(c,d);var f={baseTag:W(g.BASE,n),linkTags:W(g.LINK,a),metaTags:W(g.META,o),noscriptTags:W(g.NOSCRIPT,i),scriptTags:W(g.SCRIPT,s),styleTags:W(g.STYLE,u)},p={},h={};Object.keys(f).forEach((function(e){var t=f[e],n=t.newTags,r=t.oldTags;n.length&&(p[e]=n),r.length&&(h[e]=f[e].oldTags)})),t&&t(),l(e,p,h)},Q=null,Y=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).rendered=!1,t}p(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!d()(e,this.props)},n.componentDidUpdate=function(){this.emitChange()},n.componentWillUnmount=function(){this.props.context.helmetInstances.remove(this),this.emitChange()},n.emitChange=function(){var e,t,n=this.props.context,r=n.setHelmet,a=null,o=(e=n.helmetInstances.get().map((function(e){var t=f({},e.props);return delete t.context,t})),{baseTag:T(["href"],e),bodyAttributes:C("bodyAttributes",e),defer:_(e,"defer"),encode:_(e,"encodeSpecialCharacters"),htmlAttributes:C("htmlAttributes",e),linkTags:O(g.LINK,["rel","href"],e),metaTags:O(g.META,["name","charset","http-equiv","property","itemprop"],e),noscriptTags:O(g.NOSCRIPT,["innerHTML"],e),onChangeClientState:S(e),scriptTags:O(g.SCRIPT,["src","innerHTML"],e),styleTags:O(g.STYLE,["cssText"],e),title:E(e),titleAttributes:C("titleAttributes",e),prioritizeSeoTags:D(e,"prioritizeSeoTags")});q.canUseDOM?(t=o,Q&&cancelAnimationFrame(Q),t.defer?Q=requestAnimationFrame((function(){Z(t,(function(){Q=null}))})):(Z(t),Q=null)):B&&(a=B(o)),r(a)},n.init=function(){this.rendered||(this.rendered=!0,this.props.context.helmetInstances.add(this),this.emitChange())},n.render=function(){return this.init(),null},t}(r.Component);Y.propTypes={context:H.isRequired},Y.displayName="HelmetDispatcher";var X=["children"],K=["children"],J=function(e){function t(){return e.apply(this,arguments)||this}p(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!l()(I(this.props,"helmetData"),I(e,"helmetData"))},n.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case g.SCRIPT:case g.NOSCRIPT:return{innerHTML:t};case g.STYLE:return{cssText:t};default:throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")}},n.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren;return f({},r,((t={})[n.type]=[].concat(r[n.type]||[],[f({},e.newChildProps,this.mapNestedChildrenToProps(n,e.nestedChildren))]),t))},n.mapObjectTypeChildren=function(e){var t,n,r=e.child,a=e.newProps,o=e.newChildProps,i=e.nestedChildren;switch(r.type){case g.TITLE:return f({},a,((t={})[r.type]=i,t.titleAttributes=f({},o),t));case g.BODY:return f({},a,{bodyAttributes:f({},o)});case g.HTML:return f({},a,{htmlAttributes:f({},o)});default:return f({},a,((n={})[r.type]=f({},o),n))}},n.mapArrayTypeChildrenToProps=function(e,t){var n=f({},t);return Object.keys(e).forEach((function(t){var r;n=f({},n,((r={})[t]=e[t],r))})),n},n.warnOnInvalidChildren=function(e,t){return u()(w.some((function(t){return e.type===t})),"function"==typeof e.type?"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.":"Only elements types "+w.join(", ")+" are allowed. Helmet does not support rendering <"+e.type+"> elements. Refer to our API for more information."),u()(!t||"string"==typeof t||Array.isArray(t)&&!t.some((function(e){return"string"!=typeof e})),"Helmet expects a string as a child of <"+e.type+">. Did you forget to wrap your children in braces? ( <"+e.type+">{``}</"+e.type+"> ) Refer to our API for more information."),!0},n.mapChildrenToProps=function(e,t){var n=this,a={};return r.Children.forEach(e,(function(e){if(e&&e.props){var r=e.props,o=r.children,i=m(r,X),l=Object.keys(i).reduce((function(e,t){return e[k[t]||t]=i[t],e}),{}),s=e.type;switch("symbol"==typeof s?s=s.toString():n.warnOnInvalidChildren(e,o),s){case g.FRAGMENT:t=n.mapChildrenToProps(o,t);break;case g.LINK:case g.META:case g.NOSCRIPT:case g.SCRIPT:case g.STYLE:a=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:a,newChildProps:l,nestedChildren:o});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:l,nestedChildren:o})}}})),this.mapArrayTypeChildrenToProps(a,t)},n.render=function(){var e=this.props,t=e.children,n=m(e,K),a=f({},n),o=n.helmetData;return t&&(a=this.mapChildrenToProps(t,a)),!o||o instanceof $||(o=new $(o.context,o.instances)),o?r.createElement(Y,f({},a,{context:o.value,helmetData:void 0})):r.createElement(U.Consumer,null,(function(e){return r.createElement(Y,f({},a,{context:e}))}))},t}(r.Component);J.propTypes={base:o().object,bodyAttributes:o().object,children:o().oneOfType([o().arrayOf(o().node),o().node]),defaultTitle:o().string,defer:o().bool,encodeSpecialCharacters:o().bool,htmlAttributes:o().object,link:o().arrayOf(o().object),meta:o().arrayOf(o().object),noscript:o().arrayOf(o().object),onChangeClientState:o().func,script:o().arrayOf(o().object),style:o().arrayOf(o().object),title:o().string,titleAttributes:o().object,titleTemplate:o().string,prioritizeSeoTags:o().bool,helmetData:o().object},J.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},J.displayName="Helmet"},69921:(e,t)=>{"use strict";var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,a=n?Symbol.for("react.portal"):60106,o=n?Symbol.for("react.fragment"):60107,i=n?Symbol.for("react.strict_mode"):60108,l=n?Symbol.for("react.profiler"):60114,s=n?Symbol.for("react.provider"):60109,u=n?Symbol.for("react.context"):60110,c=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,f=n?Symbol.for("react.forward_ref"):60112,p=n?Symbol.for("react.suspense"):60113,h=n?Symbol.for("react.suspense_list"):60120,m=n?Symbol.for("react.memo"):60115,g=n?Symbol.for("react.lazy"):60116,v=n?Symbol.for("react.block"):60121,b=n?Symbol.for("react.fundamental"):60117,y=n?Symbol.for("react.responder"):60118,w=n?Symbol.for("react.scope"):60119;function x(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case c:case d:case o:case l:case i:case p:return e;default:switch(e=e&&e.$$typeof){case u:case f:case g:case m:case s:return e;default:return t}}case a:return t}}}function k(e){return x(e)===d}t.AsyncMode=c,t.ConcurrentMode=d,t.ContextConsumer=u,t.ContextProvider=s,t.Element=r,t.ForwardRef=f,t.Fragment=o,t.Lazy=g,t.Memo=m,t.Portal=a,t.Profiler=l,t.StrictMode=i,t.Suspense=p,t.isAsyncMode=function(e){return k(e)||x(e)===c},t.isConcurrentMode=k,t.isContextConsumer=function(e){return x(e)===u},t.isContextProvider=function(e){return x(e)===s},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return x(e)===f},t.isFragment=function(e){return x(e)===o},t.isLazy=function(e){return x(e)===g},t.isMemo=function(e){return x(e)===m},t.isPortal=function(e){return x(e)===a},t.isProfiler=function(e){return x(e)===l},t.isStrictMode=function(e){return x(e)===i},t.isSuspense=function(e){return x(e)===p},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===d||e===l||e===i||e===p||e===h||"object"==typeof e&&null!==e&&(e.$$typeof===g||e.$$typeof===m||e.$$typeof===s||e.$$typeof===u||e.$$typeof===f||e.$$typeof===b||e.$$typeof===y||e.$$typeof===w||e.$$typeof===v)},t.typeOf=x},59864:(e,t,n)=>{"use strict";e.exports=n(69921)},68356:(e,t,n)=>{"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function a(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i.apply(this,arguments)}var l=n(67294),s=n(45697),u=[],c=[];function d(e){var t=e(),n={loading:!0,loaded:null,error:null};return n.promise=t.then((function(e){return n.loading=!1,n.loaded=e,e})).catch((function(e){throw n.loading=!1,n.error=e,e})),n}function f(e){var t={loading:!1,loaded:{},error:null},n=[];try{Object.keys(e).forEach((function(r){var a=d(e[r]);a.loading?t.loading=!0:(t.loaded[r]=a.loaded,t.error=a.error),n.push(a.promise),a.promise.then((function(e){t.loaded[r]=e})).catch((function(e){t.error=e}))}))}catch(r){t.error=r}return t.promise=Promise.all(n).then((function(e){return t.loading=!1,e})).catch((function(e){throw t.loading=!1,e})),t}function p(e,t){return l.createElement((n=e)&&n.__esModule?n.default:n,t);var n}function h(e,t){var d,f;if(!t.loading)throw new Error("react-loadable requires a `loading` component");var h=i({loader:null,loading:null,delay:200,timeout:null,render:p,webpack:null,modules:null},t),m=null;function g(){return m||(m=e(h.loader)),m.promise}return u.push(g),"function"==typeof h.webpack&&c.push((function(){if((0,h.webpack)().every((function(e){return void 0!==e&&void 0!==n.m[e]})))return g()})),f=d=function(t){function n(n){var r;return o(a(a(r=t.call(this,n)||this)),"retry",(function(){r.setState({error:null,loading:!0,timedOut:!1}),m=e(h.loader),r._loadModule()})),g(),r.state={error:m.error,pastDelay:!1,timedOut:!1,loading:m.loading,loaded:m.loaded},r}r(n,t),n.preload=function(){return g()};var i=n.prototype;return i.UNSAFE_componentWillMount=function(){this._loadModule()},i.componentDidMount=function(){this._mounted=!0},i._loadModule=function(){var e=this;if(this.context.loadable&&Array.isArray(h.modules)&&h.modules.forEach((function(t){e.context.loadable.report(t)})),m.loading){var t=function(t){e._mounted&&e.setState(t)};"number"==typeof h.delay&&(0===h.delay?this.setState({pastDelay:!0}):this._delay=setTimeout((function(){t({pastDelay:!0})}),h.delay)),"number"==typeof h.timeout&&(this._timeout=setTimeout((function(){t({timedOut:!0})}),h.timeout));var n=function(){t({error:m.error,loaded:m.loaded,loading:m.loading}),e._clearTimeouts()};m.promise.then((function(){return n(),null})).catch((function(e){return n(),null}))}},i.componentWillUnmount=function(){this._mounted=!1,this._clearTimeouts()},i._clearTimeouts=function(){clearTimeout(this._delay),clearTimeout(this._timeout)},i.render=function(){return this.state.loading||this.state.error?l.createElement(h.loading,{isLoading:this.state.loading,pastDelay:this.state.pastDelay,timedOut:this.state.timedOut,error:this.state.error,retry:this.retry}):this.state.loaded?h.render(this.state.loaded,this.props):null},n}(l.Component),o(d,"contextTypes",{loadable:s.shape({report:s.func.isRequired})}),f}function m(e){return h(d,e)}m.Map=function(e){if("function"!=typeof e.render)throw new Error("LoadableMap requires a `render(loaded, props)` function");return h(f,e)};var g=function(e){function t(){return e.apply(this,arguments)||this}r(t,e);var n=t.prototype;return n.getChildContext=function(){return{loadable:{report:this.props.report}}},n.render=function(){return l.Children.only(this.props.children)},t}(l.Component);function v(e){for(var t=[];e.length;){var n=e.pop();t.push(n())}return Promise.all(t).then((function(){if(e.length)return v(e)}))}o(g,"propTypes",{report:s.func.isRequired}),o(g,"childContextTypes",{loadable:s.shape({report:s.func.isRequired}).isRequired}),m.Capture=g,m.preloadAll=function(){return new Promise((function(e,t){v(u).then(e,t)}))},m.preloadReady=function(){return new Promise((function(e,t){v(c).then(e,e)}))},e.exports=m},33199:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>M,hasTranslate3DSupport:()=>h,isTouch:()=>d,make2dTransformValue:()=>f,make3dTransformValue:()=>p});var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)};function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var o=function(){return o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e},o.apply(this,arguments)};Object.create;Object.create;var i=n(67294),l="kvfysmfp",s="ufhsfnkm",u=".".concat(l,"{overflow:hidden;touch-action:none}.").concat(s,"{transform-origin: 0 0}"),c="undefined"==typeof window,d=function(){return!c&&("ontouchstart"in window||navigator.maxTouchPoints>0)},f=function(e){var t=e.x,n=e.y,r=e.scale;return"scale(".concat(r,") translate(").concat(t,"px, ").concat(n,"px)")},p=function(e){var t=e.x,n=e.y,r=e.scale;return"scale3d(".concat(r,",").concat(r,", 1) translate3d(").concat(t,"px, ").concat(n,"px, 0)")},h=function(){var e=!c&&window.CSS;return e&&e.supports&&e.supports("transform","translate3d(0,0,0)")},m=Math.min,g=Math.max;function v(e){var t=e.containerDimension,n=e.childDimension,r=e.padding,a=e.centerContained,o=n-t;return o+2*r<=0&&a?[o/2,o/2]:[m(o+r,0)-r,g(0,o+r)]}var b=function(e,t){return t?"".concat(e," ").concat(t):e},y=Math.abs,w=Math.min,x=Math.sqrt,k="undefined"==typeof window,_=!k&&/(Mac)/i.test(navigator.platform),E=function(e){return"drag"===e},S=function(e){return"zoom"===e},C=function(e){e.stopPropagation(),e.preventDefault()},T=function(e,t){var n=e.x-t.x,r=e.y-t.y;return x(n*n+r*r)},O=function(e){return-Math.cos(e*Math.PI)/2+.5},D=function(e){return{x:e.pageX,y:e.pageY}},P=function(e){return Array.from(e).map(D)},N=function(e,t){return e+t},I=function(e,t,n){return n<e?e:n>t?t:n},A=function(e){return!(e.ctrlKey||e.metaKey)},L=function(){},R={x:0,y:0},j=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._prevDragMovePoint=null,t._containerObserver=null,t._fingers=0,t._firstMove=!0,t._initialOffset=o({},R),t._interaction=null,t._isDoubleTap=!1,t._isOffsetsSet=!1,t._lastDragPosition=null,t._lastScale=1,t._lastTouchStart=0,t._lastZoomCenter=null,t._listenMouseMove=!1,t._nthZoom=0,t._offset=o({},R),t._startOffset=o({},R),t._startTouches=null,t._updatePlaned=!1,t._wheelTimeOut=null,t._zoomFactor=1,t._initialZoomFactor=1,t._draggingPoint=o({},R),t._ignoreNextClick=!1,t._containerRef=i.createRef(),t._handleClick=function(e){t._ignoreNextClick&&(t._ignoreNextClick=!1,e.stopPropagation())},t._onResize=function(){var e;(null===(e=t._containerRef)||void 0===e?void 0:e.current)&&(t._updateInitialZoomFactor(),t._setupOffsets(),t._update())},t._handlerOnTouchEnd=t._handlerIfEnable((function(e){t._fingers=e.touches.length,t.props.shouldCancelHandledTouchEndEvents&&(S(t._interaction)||E(t._interaction)&&(t._startOffset.x!==t._offset.x||t._startOffset.y!==t._offset.y))&&C(e),E(t._interaction)&&!t._enoughToDrag()&&t._handleClick(e),t._updateInteraction(e)})),t._handlerOnTouchStart=t._handlerIfEnable((function(e){t._firstMove=!0,t._fingers=e.touches.length,t._detectDoubleTap(e)})),t._handlerOnTouchMove=t._handlerIfEnable((function(e){var n,r,a;t._isDoubleTap||(t._collectInertia(e),t._firstMove?(t._updateInteraction(e),t._interaction&&C(e),t._startOffset=o({},t._offset),t._startTouches=P(e.touches)):(S(t._interaction)?t._startTouches&&2===t._startTouches.length&&2===e.touches.length&&t._handleZoom(e,(n=t._startTouches,r=P(e.touches),a=T(n[0],n[1]),T(r[0],r[1])/a)):E(t._interaction)&&t._handleDrag(e),t._interaction&&(C(e),t._update())),t._firstMove=!1)})),t._handlerWheel=function(e){if(!t.props.shouldInterceptWheel(e)){C(e);var n=e.pageX,r=e.pageY,a=e.deltaY,o=e.deltaMode,i=1;(function(e){return _&&e.ctrlKey}(e)||1===o)&&(i=15);var l={touches:[{pageX:n,pageY:r}]},s=t._getOffsetByFirstTouch(l),u=a*i;t._stopAnimation(),t._scaleTo(t._zoomFactor-u/t.props.wheelScaleFactor,s),t._update(),clearTimeout(t._wheelTimeOut),t._wheelTimeOut=setTimeout((function(){return t._sanitize()}),100)}},t._handlers=t.props.isTouch()?[["touchstart",t._handlerOnTouchStart],["touchend",t._handlerOnTouchEnd],["touchmove",t._handlerOnTouchMove]]:[["mousemove",t.simulate(t._handlerOnTouchMove),t.props._document],["mouseup",t.simulate(t._handlerOnTouchEnd),t.props._document],["mousedown",t.simulate(t._handlerOnTouchStart)],["click",t._handleClick],["wheel",t._handlerWheel]],t}return a(t,e),t.prototype._handleDragStart=function(e){this._ignoreNextClick=!0,this.props.onDragStart(),this._stopAnimation(),this._resetInertia(),this._lastDragPosition=null,this._hasInteraction=!0,this._draggingPoint=this._offset,this._handleDrag(e)},t.prototype._handleDrag=function(e){var t=this._getOffsetByFirstTouch(e);this._enoughToDrag()?this._drag(t,this._lastDragPosition):this._virtualDrag(t,this._lastDragPosition),this._offset=this._sanitizeOffset(this._offset),this._lastDragPosition=t},t.prototype._resetInertia=function(){this._velocity=null,this._prevDragMovePoint=null},t.prototype._realizeInertia=function(){var e=this,t=this.props,n=t.inertiaFriction;if(t.inertia&&this._velocity){var r=this._velocity,a=r.x,i=r.y;if(a||i){this._stopAnimation(),this._resetInertia();this._animate((function(){if(i*=n,!(a*=n)&&!i)return e._stopAnimation();var t,r,l=o({},e._offset);if(e._addOffset({x:a,y:i}),e._offset=e._sanitizeOffset(e._offset),t=l,r=e._offset,t.x===r.x&&t.y===r.y)return e._stopAnimation();e._update({isAnimation:!0})}),{duration:9999})}}},t.prototype._collectInertia=function(e){var t=e.touches;if(this.props.inertia){var n,r,a=P(t)[0],o=this._prevDragMovePoint;o&&(this._velocity=(n=a,{x:(r=o).x-n.x,y:r.y-n.y})),this._prevDragMovePoint=a}},t.prototype._handleDragEnd=function(){this.props.onDragEnd(),this._end(),this._realizeInertia()},t.prototype._handleZoomStart=function(){this.props.onZoomStart(),this._stopAnimation(),this._lastScale=1,this._nthZoom=0,this._lastZoomCenter=null,this._hasInteraction=!0},t.prototype._handleZoom=function(e,t){var n,r={x:(n=this._getOffsetTouches(e)).map((function(e){return e.x})).reduce(N,0)/n.length,y:n.map((function(e){return e.y})).reduce(N,0)/n.length},a=t/this._lastScale;this._lastScale=t,this._nthZoom+=1,this._nthZoom>3&&(this._scale(a,r),this._drag(r,this._lastZoomCenter),this.props.enforceBoundsDuringZoom&&(this._offset=this._sanitizeOffset(this._offset))),this._lastZoomCenter=r},t.prototype._handleZoomEnd=function(){this.props.onZoomEnd(),this._end()},t.prototype._handleDoubleTap=function(e){var t=this;if(!this._hasInteraction&&0!==this.props.tapZoomFactor){var n=this.props.doubleTapZoomOutOnMaxScale&&this._zoomFactor===this.props.maxZoom||this.props.doubleTapToggleZoom&&this._zoomFactor>1;this.props.onDoubleTap(),this._ignoreNextClick=!0;var r=this._zoomFactor+this.props.tapZoomFactor,a=this._zoomFactor,o=this._getOffsetByFirstTouch(e);this._isDoubleTap=!0,a>r&&(o=this._getCurrentZoomCenter()),n?this._zoomOutAnimation():this._animate((function(e){t._scaleTo(a+e*(r-a),o)}))}},t.prototype._computeInitialOffset=function(){var e=this._getContainerRect(),t=this._getChildSize(),n=t.width,r=t.height,a=-y(n*this._getInitialZoomFactor()-e.width)/2,o=-y(r*this._getInitialZoomFactor()-e.height)/2;this._initialOffset={x:a,y:o}},t.prototype._resetOffset=function(){this._offset=o({},this._initialOffset)},t.prototype._setupOffsets=function(){this.props.setOffsetsOnce&&this._isOffsetsSet||(this._isOffsetsSet=!0,this._computeInitialOffset(),this._resetOffset())},t.prototype._sanitizeOffset=function(e){var t=this._getContainerRect(),n=this._getChildSize(),r=n.width,a=n.height,o=r*this._getInitialZoomFactor()*this._zoomFactor,i=a*this._getInitialZoomFactor()*this._zoomFactor,l=v({containerDimension:t.width,childDimension:o,padding:this.props.horizontalPadding,centerContained:this.props.centerContained}),s=l[0],u=l[1],c=v({containerDimension:t.height,childDimension:i,padding:this.props.verticalPadding,centerContained:this.props.centerContained}),d=c[0],f=c[1];return{x:I(s,u,e.x),y:I(d,f,e.y)}},t.prototype.alignCenter=function(e){var t=this,n=o({duration:250,animated:!0},e),r=n.x,a=n.y,i=n.scale,l=n.animated,s=n.duration,u=this._zoomFactor,c=o({},this._offset),d=this._getContainerRect(),f={x:d.width/2,y:d.height/2};if(this._zoomFactor=1,this._offset={x:-(f.x-r),y:-(f.y-a)},this._scaleTo(i,f),this._stopAnimation(),!l)return this._update();var p=this._zoomFactor-u,h=this._offset.x-c.x,m=this._offset.y-c.y;this._zoomFactor=u,this._offset=o({},c);this._animate((function(e){var n=c.x+h*e,r=c.y+m*e;t._zoomFactor=u+p*e,t._offset=t._sanitizeOffset({x:n,y:r}),t._update()}),{callback:function(){return t._sanitize()},duration:s})},t.prototype.scaleTo=function(e){var t=this,n=o({duration:250,animated:!0},e),r=n.x,a=n.y,i=n.scale,l=n.animated,s=n.duration,u=this._zoomFactor,c=o({},this._offset);if(this._zoomFactor=1,this._offset={x:0,y:0},this._scaleTo(i,{x:r,y:a}),this._stopAnimation(),!l)return this._update();var d=this._zoomFactor-u,f=this._offset.x-c.x,p=this._offset.y-c.y;this._zoomFactor=u,this._offset=o({},c);this._animate((function(e){var n=c.x+f*e,r=c.y+p*e;t._zoomFactor=u+d*e,t._offset={x:n,y:r},t._update()}),{callback:function(){return t._sanitize()},duration:s})},t.prototype._scaleTo=function(e,t){this._scale(e/this._zoomFactor,t),this._offset=this._sanitizeOffset(this._offset)},t.prototype._scale=function(e,t){e=this._scaleZoomFactor(e),this._addOffset({x:(e-1)*(t.x+this._offset.x),y:(e-1)*(t.y+this._offset.y)}),this.props.onZoomUpdate()},t.prototype._scaleZoomFactor=function(e){var t=this._zoomFactor;return this._zoomFactor*=e,this._zoomFactor=I(this.props.minZoom,this.props.maxZoom,this._zoomFactor),this._zoomFactor/t},t.prototype._canDrag=function(){return this.props.draggableUnZoomed||!((e=this._zoomFactor)>(t=1)-.01&&e<t+.01);var e,t},t.prototype._drag=function(e,t){if(t){var n=-(e.y-t.y),r=-(e.x-t.x);this.props.lockDragAxis?y(r)>y(n)?this._addOffset({x:r,y:0}):this._addOffset({y:n,x:0}):this._addOffset({x:r,y:n}),this.props.onDragUpdate()}},t.prototype._virtualDrag=function(e,t){if(t){var n=-(e.y-t.y),r=-(e.x-t.x);this._draggingPoint={x:r+this._draggingPoint.x,y:n+this._draggingPoint.y}}},t.prototype._addOffset=function(e){var t=this._offset,n=t.x,r=t.y;this._offset={x:n+e.x,y:r+e.y}},t.prototype._sanitize=function(){this._zoomFactor<this.props.zoomOutFactor?(this._resetInertia(),this._zoomOutAnimation()):this._isInsaneOffset()&&this._sanitizeOffsetAnimation()},t.prototype._isInsaneOffset=function(){var e=this._offset,t=this._sanitizeOffset(e);return t.x!==e.x||t.y!==e.y},t.prototype._sanitizeOffsetAnimation=function(){var e=this,t=this._sanitizeOffset(this._offset),n=o({},this._offset);this._animate((function(r){var a=n.x+r*(t.x-n.x),o=n.y+r*(t.y-n.y);e._offset={x:a,y:o},e._update()}))},t.prototype._zoomOutAnimation=function(){var e=this;if(1!==this._zoomFactor){var t=this._zoomFactor,n=this._getCurrentZoomCenter();this._animate((function(r){var a=t+r*(1-t);e._scaleTo(a,n)}))}},t.prototype._getInitialZoomFactor=function(){return this._initialZoomFactor},t.prototype._getCurrentZoomCenter=function(){var e=this._offset,t=e.x,n=e.y,r=t-this._initialOffset.x,a=n-this._initialOffset.y;return{x:-1*t-r/(1/this._zoomFactor-1),y:-1*n-a/(1/this._zoomFactor-1)}},t.prototype._getOffsetByFirstTouch=function(e){return this._getOffsetTouches(e)[0]},t.prototype._getOffsetTouches=function(e){var t=this.props._document,n=t.documentElement,r=t.body,a=this._getContainerRect(),o=a.top,i=a.left,l=n.scrollTop||r.scrollTop,s=n.scrollLeft||r.scrollLeft,u=o+l,c=i+s;return P(e.touches).map((function(e){var t=e.x,n=e.y;return{x:t-c,y:n-u}}))},t.prototype._animate=function(e,t){var n=this,r=(new Date).getTime(),a=o({timeFn:O,callback:function(){},duration:this.props.animationDuration},t),i=a.timeFn,l=a.callback,s=a.duration,u=function(){if(n._inAnimation){var t=(new Date).getTime()-r,a=t/s;t>=s?(e(1),n._stopAnimation(),l(),n._update()):(a=i(a),e(a),n._update({isAnimation:!0}),requestAnimationFrame(u))}};this._inAnimation=!0,requestAnimationFrame(u)},t.prototype._stopAnimation=function(){this._inAnimation=!1},t.prototype._end=function(){this._hasInteraction=!1,this._sanitize(),this._update()},t.prototype._getContainerRect=function(){return this._containerRef.current.getBoundingClientRect()},t.prototype._getChildSize=function(){var e=this._containerRef.current;return function(e){if(e){var t=e.offsetWidth,n=e.offsetHeight;if(t&&n)return{width:t,height:n};var r=getComputedStyle(e),a=parseFloat(r.width),o=parseFloat(r.height);if(o&&a)return{width:a,height:o}}return{width:0,height:0}}(null==e?void 0:e.firstElementChild)},t.prototype._updateInitialZoomFactor=function(){var e=this._getContainerRect(),t=this._getChildSize(),n=e.width/t.width,r=e.height/t.height;this._initialZoomFactor=w(n,r)},t.prototype._bindEvents=function(){var e=this,t=this._containerRef.current;window.ResizeObserver?(this._containerObserver=new ResizeObserver(this._onResize),this._containerObserver.observe(t)):window.addEventListener("resize",this._onResize),this._handlers.forEach((function(e){var n=e[0],r=e[1];(e[2]||t).addEventListener(n,r,!0)})),Array.from(t.querySelectorAll("img")).forEach((function(t){return t.addEventListener("load",e._onResize)}))},t.prototype._unSubscribe=function(){var e=this,t=this._containerRef.current;this._containerObserver&&(this._containerObserver.disconnect(),this._containerObserver=null),window.removeEventListener("resize",this._onResize),this._handlers.forEach((function(e){var n=e[0],r=e[1];(e[2]||t).removeEventListener(n,r,!0)})),Array.from(t.querySelectorAll("img")).forEach((function(t){return t.removeEventListener("load",e._onResize)}))},t.prototype._update=function(e){var t=this;if(!this._updatePlaned){var n=function(){var e=t._getInitialZoomFactor()*t._zoomFactor,n=-t._offset.x/e,r=-t._offset.y/e;t.props.onUpdate({scale:e,x:n,y:r})};if(null==e?void 0:e.isAnimation)return n();this._updatePlaned=!0,requestAnimationFrame((function(){t._updatePlaned=!1,n()}))}},t.prototype._handlerIfEnable=function(e){var t=this;return function(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];t.props.enabled&&e.apply(void 0,n)}},t.prototype._setInteraction=function(e,t){var n=this._interaction;n!==e&&(n&&!e&&(S(n)?this._handleZoomEnd():E(n)&&this._handleDragEnd()),S(e)?this._handleZoomStart():E(e)&&this._handleDragStart(t)),this._interaction=e},t.prototype._distanceBetweenNumbers=function(e,t){return e>t?e-t:t-e},t.prototype._enoughToDrag=function(){return this._distanceBetweenNumbers(this._startOffset.x,this._draggingPoint.x)>5||this._distanceBetweenNumbers(this._startOffset.y,this._draggingPoint.y)>5},t.prototype._updateInteraction=function(e){var t=this._fingers;return 2===t?this._setInteraction("zoom",e):1===t&&this._canDrag()?this._setInteraction("drag",e):void this._setInteraction(null,e)},t.prototype._detectDoubleTap=function(e){var t=(new Date).getTime();this._fingers>1&&(this._lastTouchStart=0),t-this._lastTouchStart<300?(C(e),this._handleDoubleTap(e),S(this._interaction)?this._handleZoomEnd():E(this._interaction)&&this._handleDragEnd()):this._isDoubleTap=!1,1===this._fingers&&(this._lastTouchStart=t)},t.prototype.simulate=function(e){var t=this;return function(n){var r=n.pageX,a=n.pageY,o=n.type,i="mouseup"===o;"mousedown"===o&&(n.preventDefault(),t._listenMouseMove=!0),t._listenMouseMove&&(n.touches=i?[]:[{pageX:r,pageY:a}],e(n)),i&&(t._listenMouseMove=!1)}},t.prototype.componentDidMount=function(){this._bindEvents(),this._update()},t.prototype.componentWillUnmount=function(){this._stopAnimation(),this._unSubscribe()},t.prototype.render=function(){var e=this.props,t=e.children,n=e.containerProps,r=i.Children.only(t),a=n||{};return i.createElement(i.Fragment,null,i.createElement("style",null,u),i.createElement("div",o({},a,{ref:this._containerRef,className:b(l,a.className)}),i.cloneElement(r,{className:b(s,r.props.className)})))},t.defaultProps={animationDuration:250,draggableUnZoomed:!0,enforceBoundsDuringZoom:!1,centerContained:!1,enabled:!0,inertia:!0,inertiaFriction:.96,horizontalPadding:0,isTouch:d,lockDragAxis:!1,maxZoom:5,minZoom:.5,onDoubleTap:L,onDragEnd:L,onDragStart:L,onDragUpdate:L,onZoomEnd:L,onZoomStart:L,onZoomUpdate:L,setOffsetsOnce:!1,shouldInterceptWheel:A,shouldCancelHandledTouchEndEvents:!1,tapZoomFactor:1,verticalPadding:0,wheelScaleFactor:1500,zoomOutFactor:1.3,doubleTapZoomOutOnMaxScale:!1,doubleTapToggleZoom:!1,_document:k?null:window.document},t}(i.Component);const M=j},18790:(e,t,n)=>{"use strict";n.d(t,{H:()=>l,f:()=>i});var r=n(16550),a=n(87462),o=n(67294);function i(e,t,n){return void 0===n&&(n=[]),e.some((function(e){var a=e.path?(0,r.LX)(t,e):n.length?n[n.length-1].match:r.F0.computeRootMatch(t);return a&&(n.push({route:e,match:a}),e.routes&&i(e.routes,t,n)),a})),n}function l(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e?o.createElement(r.rs,n,e.map((function(e,n){return o.createElement(r.AW,{key:e.key||n,path:e.path,exact:e.exact,strict:e.strict,render:function(n){return e.render?e.render((0,a.Z)({},n,{},t,{route:e})):o.createElement(e.component,(0,a.Z)({},n,t,{route:e}))}})}))):null}},73727:(e,t,n)=>{"use strict";n.d(t,{OL:()=>y,VK:()=>c,rU:()=>g});var r=n(16550),a=n(75068),o=n(67294),i=n(42358),l=n(87462),s=n(63366),u=n(38776),c=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).history=(0,i.lX)(t.props),t}return(0,a.Z)(t,e),t.prototype.render=function(){return o.createElement(r.F0,{history:this.history,children:this.props.children})},t}(o.Component);o.Component;var d=function(e,t){return"function"==typeof e?e(t):e},f=function(e,t){return"string"==typeof e?(0,i.ob)(e,null,null,t):e},p=function(e){return e},h=o.forwardRef;void 0===h&&(h=p);var m=h((function(e,t){var n=e.innerRef,r=e.navigate,a=e.onClick,i=(0,s.Z)(e,["innerRef","navigate","onClick"]),u=i.target,c=(0,l.Z)({},i,{onClick:function(e){try{a&&a(e)}catch(t){throw e.preventDefault(),t}e.defaultPrevented||0!==e.button||u&&"_self"!==u||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)||(e.preventDefault(),r())}});return c.ref=p!==h&&t||n,o.createElement("a",c)}));var g=h((function(e,t){var n=e.component,a=void 0===n?m:n,c=e.replace,g=e.to,v=e.innerRef,b=(0,s.Z)(e,["component","replace","to","innerRef"]);return o.createElement(r.s6.Consumer,null,(function(e){e||(0,u.Z)(!1);var n=e.history,r=f(d(g,e.location),e.location),s=r?n.createHref(r):"",m=(0,l.Z)({},b,{href:s,navigate:function(){var t=d(g,e.location),r=(0,i.Ep)(e.location)===(0,i.Ep)(f(t));(c||r?n.replace:n.push)(t)}});return p!==h?m.ref=t||v:m.innerRef=v,o.createElement(a,m)}))})),v=function(e){return e},b=o.forwardRef;void 0===b&&(b=v);var y=b((function(e,t){var n=e["aria-current"],a=void 0===n?"page":n,i=e.activeClassName,c=void 0===i?"active":i,p=e.activeStyle,h=e.className,m=e.exact,y=e.isActive,w=e.location,x=e.sensitive,k=e.strict,_=e.style,E=e.to,S=e.innerRef,C=(0,s.Z)(e,["aria-current","activeClassName","activeStyle","className","exact","isActive","location","sensitive","strict","style","to","innerRef"]);return o.createElement(r.s6.Consumer,null,(function(e){e||(0,u.Z)(!1);var n=w||e.location,i=f(d(E,n),n),s=i.pathname,T=s&&s.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),O=T?(0,r.LX)(n.pathname,{path:T,exact:m,sensitive:x,strict:k}):null,D=!!(y?y(O,n):O),P="function"==typeof h?h(D):h,N="function"==typeof _?_(D):_;D&&(P=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter((function(e){return e})).join(" ")}(P,c),N=(0,l.Z)({},N,p));var I=(0,l.Z)({"aria-current":D&&a||null,className:P,style:N,to:i},C);return v!==b?I.ref=t||S:I.innerRef=S,o.createElement(g,I)}))}))},16550:(e,t,n)=>{"use strict";n.d(t,{AW:()=>P,F0:()=>y,LX:()=>D,TH:()=>B,k6:()=>F,l_:()=>S,rs:()=>j,s6:()=>b});var r=n(75068),a=n(67294),o=n(45697),i=n.n(o),l=n(42358),s=n(38776),u=n(87462),c=n(39658),d=n.n(c),f=(n(59864),n(63366)),p=(n(8679),1073741823),h="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:{};var m=a.createContext||function(e,t){var n,o,l="__create-react-context-"+function(){var e="__global_unique_id__";return h[e]=(h[e]||0)+1}()+"__",s=function(e){function n(){for(var t,n,r,a=arguments.length,o=new Array(a),i=0;i<a;i++)o[i]=arguments[i];return(t=e.call.apply(e,[this].concat(o))||this).emitter=(n=t.props.value,r=[],{on:function(e){r.push(e)},off:function(e){r=r.filter((function(t){return t!==e}))},get:function(){return n},set:function(e,t){n=e,r.forEach((function(e){return e(n,t)}))}}),t}(0,r.Z)(n,e);var a=n.prototype;return a.getChildContext=function(){var e;return(e={})[l]=this.emitter,e},a.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var n,r=this.props.value,a=e.value;((o=r)===(i=a)?0!==o||1/o==1/i:o!=o&&i!=i)?n=0:(n="function"==typeof t?t(r,a):p,0!==(n|=0)&&this.emitter.set(e.value,n))}var o,i},a.render=function(){return this.props.children},n}(a.Component);s.childContextTypes=((n={})[l]=i().object.isRequired,n);var u=function(t){function n(){for(var e,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(e=t.call.apply(t,[this].concat(r))||this).observedBits=void 0,e.state={value:e.getValue()},e.onUpdate=function(t,n){0!=((0|e.observedBits)&n)&&e.setState({value:e.getValue()})},e}(0,r.Z)(n,t);var a=n.prototype;return a.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=null==t?p:t},a.componentDidMount=function(){this.context[l]&&this.context[l].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?p:e},a.componentWillUnmount=function(){this.context[l]&&this.context[l].off(this.onUpdate)},a.getValue=function(){return this.context[l]?this.context[l].get():e},a.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(a.Component);return u.contextTypes=((o={})[l]=i().object,o),{Provider:s,Consumer:u}},g=function(e){var t=m();return t.displayName=e,t},v=g("Router-History"),b=g("Router"),y=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={location:t.history.location},n._isMounted=!1,n._pendingLocation=null,t.staticContext||(n.unlisten=t.history.listen((function(e){n._pendingLocation=e}))),n}(0,r.Z)(t,e),t.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var n=t.prototype;return n.componentDidMount=function(){var e=this;this._isMounted=!0,this.unlisten&&this.unlisten(),this.props.staticContext||(this.unlisten=this.props.history.listen((function(t){e._isMounted&&e.setState({location:t})}))),this._pendingLocation&&this.setState({location:this._pendingLocation})},n.componentWillUnmount=function(){this.unlisten&&(this.unlisten(),this._isMounted=!1,this._pendingLocation=null)},n.render=function(){return a.createElement(b.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},a.createElement(v.Provider,{children:this.props.children||null,value:this.props.history}))},t}(a.Component);a.Component;var w=function(e){function t(){return e.apply(this,arguments)||this}(0,r.Z)(t,e);var n=t.prototype;return n.componentDidMount=function(){this.props.onMount&&this.props.onMount.call(this,this)},n.componentDidUpdate=function(e){this.props.onUpdate&&this.props.onUpdate.call(this,this,e)},n.componentWillUnmount=function(){this.props.onUnmount&&this.props.onUnmount.call(this,this)},n.render=function(){return null},t}(a.Component);var x={},k=1e4,_=0;function E(e,t){return void 0===e&&(e="/"),void 0===t&&(t={}),"/"===e?e:function(e){if(x[e])return x[e];var t=d().compile(e);return _<k&&(x[e]=t,_++),t}(e)(t,{pretty:!0})}function S(e){var t=e.computedMatch,n=e.to,r=e.push,o=void 0!==r&&r;return a.createElement(b.Consumer,null,(function(e){e||(0,s.Z)(!1);var r=e.history,i=e.staticContext,c=o?r.push:r.replace,d=(0,l.ob)(t?"string"==typeof n?E(n,t.params):(0,u.Z)({},n,{pathname:E(n.pathname,t.params)}):n);return i?(c(d),null):a.createElement(w,{onMount:function(){c(d)},onUpdate:function(e,t){var n=(0,l.ob)(t.to);(0,l.Hp)(n,(0,u.Z)({},d,{key:n.key}))||c(d)},to:n})}))}var C={},T=1e4,O=0;function D(e,t){void 0===t&&(t={}),("string"==typeof t||Array.isArray(t))&&(t={path:t});var n=t,r=n.path,a=n.exact,o=void 0!==a&&a,i=n.strict,l=void 0!==i&&i,s=n.sensitive,u=void 0!==s&&s;return[].concat(r).reduce((function(t,n){if(!n&&""!==n)return null;if(t)return t;var r=function(e,t){var n=""+t.end+t.strict+t.sensitive,r=C[n]||(C[n]={});if(r[e])return r[e];var a=[],o={regexp:d()(e,a,t),keys:a};return O<T&&(r[e]=o,O++),o}(n,{end:o,strict:l,sensitive:u}),a=r.regexp,i=r.keys,s=a.exec(e);if(!s)return null;var c=s[0],f=s.slice(1),p=e===c;return o&&!p?null:{path:n,url:"/"===n&&""===c?"/":c,isExact:p,params:i.reduce((function(e,t,n){return e[t.name]=f[n],e}),{})}}),null)}var P=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return a.createElement(b.Consumer,null,(function(t){t||(0,s.Z)(!1);var n=e.props.location||t.location,r=e.props.computedMatch?e.props.computedMatch:e.props.path?D(n.pathname,e.props):t.match,o=(0,u.Z)({},t,{location:n,match:r}),i=e.props,l=i.children,c=i.component,d=i.render;return Array.isArray(l)&&function(e){return 0===a.Children.count(e)}(l)&&(l=null),a.createElement(b.Provider,{value:o},o.match?l?"function"==typeof l?l(o):l:c?a.createElement(c,o):d?d(o):null:"function"==typeof l?l(o):null)}))},t}(a.Component);function N(e){return"/"===e.charAt(0)?e:"/"+e}function I(e,t){if(!e)return t;var n=N(e);return 0!==t.pathname.indexOf(n)?t:(0,u.Z)({},t,{pathname:t.pathname.substr(n.length)})}function A(e){return"string"==typeof e?e:(0,l.Ep)(e)}function L(e){return function(){(0,s.Z)(!1)}}function R(){}a.Component;var j=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return a.createElement(b.Consumer,null,(function(t){t||(0,s.Z)(!1);var n,r,o=e.props.location||t.location;return a.Children.forEach(e.props.children,(function(e){if(null==r&&a.isValidElement(e)){n=e;var i=e.props.path||e.props.from;r=i?D(o.pathname,(0,u.Z)({},e.props,{path:i})):t.match}})),r?a.cloneElement(n,{location:o,computedMatch:r}):null}))},t}(a.Component);var M=a.useContext;function F(){return M(v)}function B(){return M(b).location}},39658:(e,t,n)=>{var r=n(5826);e.exports=p,e.exports.parse=o,e.exports.compile=function(e,t){return l(o(e,t),t)},e.exports.tokensToFunction=l,e.exports.tokensToRegExp=f;var a=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function o(e,t){for(var n,r=[],o=0,i=0,l="",c=t&&t.delimiter||"/";null!=(n=a.exec(e));){var d=n[0],f=n[1],p=n.index;if(l+=e.slice(i,p),i=p+d.length,f)l+=f[1];else{var h=e[i],m=n[2],g=n[3],v=n[4],b=n[5],y=n[6],w=n[7];l&&(r.push(l),l="");var x=null!=m&&null!=h&&h!==m,k="+"===y||"*"===y,_="?"===y||"*"===y,E=n[2]||c,S=v||b;r.push({name:g||o++,prefix:m||"",delimiter:E,optional:_,repeat:k,partial:x,asterisk:!!w,pattern:S?u(S):w?".*":"[^"+s(E)+"]+?"})}}return i<e.length&&(l+=e.substr(i)),l&&r.push(l),r}function i(e){return encodeURI(e).replace(/[\/?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function l(e,t){for(var n=new Array(e.length),a=0;a<e.length;a++)"object"==typeof e[a]&&(n[a]=new RegExp("^(?:"+e[a].pattern+")$",d(t)));return function(t,a){for(var o="",l=t||{},s=(a||{}).pretty?i:encodeURIComponent,u=0;u<e.length;u++){var c=e[u];if("string"!=typeof c){var d,f=l[c.name];if(null==f){if(c.optional){c.partial&&(o+=c.prefix);continue}throw new TypeError('Expected "'+c.name+'" to be defined')}if(r(f)){if(!c.repeat)throw new TypeError('Expected "'+c.name+'" to not repeat, but received `'+JSON.stringify(f)+"`");if(0===f.length){if(c.optional)continue;throw new TypeError('Expected "'+c.name+'" to not be empty')}for(var p=0;p<f.length;p++){if(d=s(f[p]),!n[u].test(d))throw new TypeError('Expected all "'+c.name+'" to match "'+c.pattern+'", but received `'+JSON.stringify(d)+"`");o+=(0===p?c.prefix:c.delimiter)+d}}else{if(d=c.asterisk?encodeURI(f).replace(/[?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})):s(f),!n[u].test(d))throw new TypeError('Expected "'+c.name+'" to match "'+c.pattern+'", but received "'+d+'"');o+=c.prefix+d}}else o+=c}return o}}function s(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function u(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function c(e,t){return e.keys=t,e}function d(e){return e&&e.sensitive?"":"i"}function f(e,t,n){r(t)||(n=t||n,t=[]);for(var a=(n=n||{}).strict,o=!1!==n.end,i="",l=0;l<e.length;l++){var u=e[l];if("string"==typeof u)i+=s(u);else{var f=s(u.prefix),p="(?:"+u.pattern+")";t.push(u),u.repeat&&(p+="(?:"+f+p+")*"),i+=p=u.optional?u.partial?f+"("+p+")?":"(?:"+f+"("+p+"))?":f+"("+p+")"}}var h=s(n.delimiter||"/"),m=i.slice(-h.length)===h;return a||(i=(m?i.slice(0,-h.length):i)+"(?:"+h+"(?=$))?"),i+=o?"$":a&&m?"":"(?="+h+"|$)",c(new RegExp("^"+i,d(n)),t)}function p(e,t,n){return r(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?function(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var r=0;r<n.length;r++)t.push({name:r,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return c(e,t)}(e,t):r(e)?function(e,t,n){for(var r=[],a=0;a<e.length;a++)r.push(p(e[a],t,n).source);return c(new RegExp("(?:"+r.join("|")+")",d(n)),t)}(e,t,n):function(e,t,n){return f(o(e,n),t,n)}(e,t,n)}},86718:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(70655).__importDefault(n(45503));t.default=function(e){return!e.prototype?r.default(e):e}},27162:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.divWrapper=void 0;var r=n(70655),a=r.__importStar(n(67294)),o=r.__importDefault(n(86718)),i=a.createElement,l=function(e,t,n,a){var o;return i(e,t?r.__assign(((o={})[t]=a,o),n):r.__assign(r.__assign({},a),n))};t.divWrapper=function(e,t,n,r){return i("div",null,l(e,t,n,r))};t.default=function(e,t,n){void 0===n&&(n=l);var r=function(a,l,s){void 0===l&&(l=t),void 0===s&&(s=null);var u="string"==typeof a;if(u)return function(e){return r(e,a||t,l)};var c=function(t){return i(e,s,(function(e){return n(a,l,t,e)}))};return u?o.default(c):c};return r}},3:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(70655).__importDefault(n(95364)),a=function(e){return[e]};t.default=function(e,t){return void 0===t&&(t=a),function(n){return r.default(n,e.apply(void 0,t(n)))}}},96260:(e,t,n)=>{"use strict";var r=n(70655);r.__importDefault(n(95364)).default,r.__importDefault(n(27162)).default,r.__importDefault(n(3)).default},95364:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(70655),a=n(67294),o=parseInt(a.version.substr(0,a.version.indexOf(".")))>15;t.default=function(e,t){for(var n=[],i=2;i<arguments.length;i++)n[i-2]=arguments[i];var l=e.render,s=e.children,u=void 0===s?l:s,c=e.component,d=e.comp,f=void 0===d?c:d;return"function"==typeof u?u.apply(void 0,r.__spreadArrays([t],n)):f?a.createElement(f,t):u instanceof Array?o?u:a.createElement.apply(void 0,r.__spreadArrays(["div",null],u)):u&&u instanceof Object?"string"==typeof u.type?u:a.cloneElement(u,Object.assign({},u.props,t)):u||null}},45503:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(70655),a=r.__importStar(n(67294));t.default=function(e){var t=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(n,t),n.prototype.render=function(){return e(this.props,this.context)},n}(a.Component);return t}},89164:(e,t,n)=>{"use strict";n.r(t),n.d(t,{createBreakpoint:()=>Ae,createGlobalState:()=>xn,createMemo:()=>o,createReducer:()=>u,createReducerContext:()=>i,createStateContext:()=>c,ensuredForwardRef:()=>ue,useAsync:()=>h,useAsyncFn:()=>p,useAsyncRetry:()=>m,useAudio:()=>y,useBattery:()=>O,useBeforeUnload:()=>D,useBoolean:()=>I,useClickAway:()=>L,useCookie:()=>M,useCopyToClipboard:()=>z,useCounter:()=>q,useCss:()=>J,useCustomCompareEffect:()=>ee,useDebounce:()=>ne,useDeepCompareEffect:()=>re,useDefault:()=>ae,useDrop:()=>oe,useDropArea:()=>ie,useEffectOnce:()=>le,useEnsuredForwardedRef:()=>se,useError:()=>he,useEvent:()=>pe,useFavicon:()=>me,useFirstMountState:()=>l,useFullscreen:()=>be,useGeolocation:()=>ye,useGetSet:()=>V,useGetSetState:()=>we,useHarmonicIntervalFn:()=>_e,useHash:()=>kn,useHover:()=>Se,useHoverDirty:()=>Ce,useIdle:()=>De,useIntersection:()=>Pe,useInterval:()=>Ne,useIsomorphicLayoutEffect:()=>Y,useKey:()=>Ie,useKeyPress:()=>Le,useKeyPressEvent:()=>Re,useLatest:()=>je,useLifecycles:()=>Me,useList:()=>Fe,useLocalStorage:()=>Be,useLocation:()=>He,useLockBodyScroll:()=>Ye,useLogger:()=>Xe,useLongPress:()=>Je,useMap:()=>et,useMeasure:()=>gn,useMedia:()=>tt,useMediaDevices:()=>nt,useMediatedState:()=>rt,useMethods:()=>at,useMotion:()=>it,useMount:()=>lt,useMountedState:()=>f,useMouse:()=>ct,useMouseHovered:()=>ft,useMouseWheel:()=>pt,useMultiStateValidator:()=>fn,useNetworkState:()=>vt,useNumber:()=>bt,useObservable:()=>yt,useOrientation:()=>xt,usePageLeave:()=>kt,usePermission:()=>_t,usePinchZoom:()=>bn,usePrevious:()=>Et,usePreviousDistinct:()=>Ct,usePromise:()=>Tt,useQueue:()=>Ot,useRaf:()=>Dt,useRafLoop:()=>Pt,useRafState:()=>ut,useRendersCount:()=>yn,useScratch:()=>Lt,useScroll:()=>Rt,useScrollbarWidth:()=>dn,useScrolling:()=>jt,useSearchParam:()=>It,useSessionStorage:()=>Mt,useSet:()=>wn,useSetState:()=>g,useShallowCompareEffect:()=>zt,useSize:()=>Vt,useSlider:()=>qt,useSpeech:()=>Gt,useStartTyping:()=>Zt,useStateList:()=>Yt,useStateValidator:()=>un,useStateWithHistory:()=>Qt,useThrottle:()=>Xt,useThrottleFn:()=>Kt,useTimeout:()=>Jt,useTimeoutFn:()=>te,useTitle:()=>tn,useToggle:()=>N,useTween:()=>rn,useUnmount:()=>st,useUnmountPromise:()=>an,useUpdate:()=>U,useUpdateEffect:()=>s,useUpsert:()=>on,useVibrate:()=>ln,useVideo:()=>sn,useWindowScroll:()=>pn,useWindowSize:()=>hn});var r=n(67294),a=n.t(r,2);const o=function(e){return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return(0,r.useMemo)((function(){return e.apply(void 0,t)}),t)}};const i=function(e,t){var n=(0,r.createContext)(void 0);return[function(){var e=(0,r.useContext)(n);if(null==e)throw new Error("useReducerContext must be used inside a ReducerProvider.");return e},function(a){var o=a.children,i=a.initialState;return function(e,t){return(0,r.createElement)(n.Provider,e,t)}({value:(0,r.useReducer)(e,void 0!==i?i:t)},o)},n]};function l(){var e=(0,r.useRef)(!0);return e.current?(e.current=!1,!0):e.current}const s=function(e,t){var n=l();(0,r.useEffect)((function(){if(!n)return e()}),t)};const u=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n,a=(n=e,function(e,t){return n.reduceRight((function(t,n){return n(e)(t)}),t)});return function(e,t,n){void 0===n&&(n=function(e){return e});var o=(0,r.useRef)(n(t)),i=(0,r.useState)(o.current)[1],l=(0,r.useCallback)((function(t){return o.current=e(o.current,t),i(o.current),t}),[e]),u=(0,r.useRef)(a({getState:function(){return o.current},dispatch:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return u.current.apply(u,e)}},l));return s((function(){u.current=a({getState:function(){return o.current},dispatch:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return u.current.apply(u,e)}},l)}),[l]),[o.current,u.current]}};const c=function(e){var t=(0,r.createContext)(void 0);return[function(){var e=(0,r.useContext)(t);if(null==e)throw new Error("useStateContext must be used inside a StateProvider.");return e},function(n){var a=n.children,o=n.initialValue;return function(e,n){return(0,r.createElement)(t.Provider,e,n)}({value:(0,r.useState)(void 0!==o?o:e)},a)},t]};var d=n(70655);function f(){var e=(0,r.useRef)(!1),t=(0,r.useCallback)((function(){return e.current}),[]);return(0,r.useEffect)((function(){return e.current=!0,function(){e.current=!1}}),[]),t}function p(e,t,n){void 0===t&&(t=[]),void 0===n&&(n={loading:!1});var a=(0,r.useRef)(0),o=f(),i=(0,r.useState)(n),l=i[0],s=i[1],u=(0,r.useCallback)((function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var r=++a.current;return l.loading||s((function(e){return(0,d.__assign)((0,d.__assign)({},e),{loading:!0})})),e.apply(void 0,t).then((function(e){return o()&&r===a.current&&s({value:e,loading:!1}),e}),(function(e){return o()&&r===a.current&&s({error:e,loading:!1}),e}))}),t);return[l,u]}function h(e,t){void 0===t&&(t=[]);var n=p(e,t,{loading:!0}),a=n[0],o=n[1];return(0,r.useEffect)((function(){o()}),[o]),a}const m=function(e,t){void 0===t&&(t=[]);var n=(0,r.useState)(0),a=n[0],o=n[1],i=h(e,(0,d.__spreadArrays)(t,[a])),l=i.loading,s=(0,r.useCallback)((function(){l||o((function(e){return e+1}))}),(0,d.__spreadArrays)(t,[l]));return(0,d.__assign)((0,d.__assign)({},i),{retry:s})};const g=function(e){void 0===e&&(e={});var t=(0,r.useState)(e),n=t[0],a=t[1];return[n,(0,r.useCallback)((function(e){a((function(t){return Object.assign({},t,e instanceof Function?e(t):e)}))}),[])]};function v(e){for(var t=[],n=0;n<e.length;n++)t.push({start:e.start(n),end:e.end(n)});return t}function b(e){return function(t){var n,a;a=r.isValidElement(t)?(n=t).props:t;var o=g({buffered:[],time:0,duration:0,paused:!0,muted:!1,volume:1,playing:!1}),i=o[0],l=o[1],s=(0,r.useRef)(null),u=function(e,t){return function(n){try{t&&t(n)}finally{e&&e(n)}}},c=function(){return l({paused:!1})},f=function(){return l({playing:!0})},p=function(){return l({playing:!1})},h=function(){return l({paused:!0,playing:!1})},m=function(){var e=s.current;e&&l({muted:e.muted,volume:e.volume})},b=function(){var e=s.current;if(e){var t=e.duration,n=e.buffered;l({duration:t,buffered:v(n)})}},y=function(){var e=s.current;e&&l({time:e.currentTime})},w=function(){var e=s.current;e&&l({buffered:v(e.buffered)})};n=n?r.cloneElement(n,(0,d.__assign)((0,d.__assign)({controls:!1},a),{ref:s,onPlay:u(a.onPlay,c),onPlaying:u(a.onPlaying,f),onWaiting:u(a.onWaiting,p),onPause:u(a.onPause,h),onVolumeChange:u(a.onVolumeChange,m),onDurationChange:u(a.onDurationChange,b),onTimeUpdate:u(a.onTimeUpdate,y),onProgress:u(a.onProgress,w)})):r.createElement(e,(0,d.__assign)((0,d.__assign)({controls:!1},a),{ref:s,onPlay:u(a.onPlay,c),onPlaying:u(a.onPlaying,f),onWaiting:u(a.onWaiting,p),onPause:u(a.onPause,h),onVolumeChange:u(a.onVolumeChange,m),onDurationChange:u(a.onDurationChange,b),onTimeUpdate:u(a.onTimeUpdate,y),onProgress:u(a.onProgress,w)}));var x=!1,k={play:function(){var e=s.current;if(e&&!x){var t=e.play();if("object"==typeof t){x=!0;var n=function(){x=!1};t.then(n,n)}return t}},pause:function(){var e=s.current;if(e&&!x)return e.pause()},seek:function(e){var t=s.current;t&&void 0!==i.duration&&(e=Math.min(i.duration,Math.max(0,e)),t.currentTime=e)},volume:function(e){var t=s.current;t&&(e=Math.min(1,Math.max(0,e)),t.volume=e,l({volume:e}))},mute:function(){var e=s.current;e&&(e.muted=!0)},unmute:function(){var e=s.current;e&&(e.muted=!1)}};return(0,r.useEffect)((function(){var e=s.current;e&&(l({volume:e.volume,muted:e.muted,paused:e.paused}),a.autoPlay&&e.paused&&k.play())}),[a.src]),[n,i,k,s]}}const y=b("audio");var w=function(){};function x(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];e&&e.addEventListener&&e.addEventListener.apply(e,t)}function k(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];e&&e.removeEventListener&&e.removeEventListener.apply(e,t)}var _="undefined"!=typeof window,E="undefined"!=typeof navigator,S=n(38252);const C=n.n(S)();var T=E?navigator:void 0;const O=T&&"function"==typeof T.getBattery?function(){var e=(0,r.useState)({isSupported:!0,fetched:!1}),t=e[0],n=e[1];return(0,r.useEffect)((function(){var e=!0,r=null,a=function(){if(e&&r){var a={isSupported:!0,fetched:!0,level:r.level,charging:r.charging,dischargingTime:r.dischargingTime,chargingTime:r.chargingTime};!C(t,a)&&n(a)}};return T.getBattery().then((function(t){e&&(x(r=t,"chargingchange",a),x(r,"chargingtimechange",a),x(r,"dischargingtimechange",a),x(r,"levelchange",a),a())})),function(){e=!1,r&&(k(r,"chargingchange",a),k(r,"chargingtimechange",a),k(r,"dischargingtimechange",a),k(r,"levelchange",a))}}),[]),t}:function(){return{isSupported:!1}};const D=function(e,t){void 0===e&&(e=!0);var n=(0,r.useCallback)((function(n){if("function"!=typeof e||e())return n.preventDefault(),t&&(n.returnValue=t),t}),[e,t]);(0,r.useEffect)((function(){if(e)return x(window,"beforeunload",n),function(){return k(window,"beforeunload",n)}}),[e,n])};var P=function(e,t){return"boolean"==typeof t?t:!e};const N=function(e){return(0,r.useReducer)(P,e)},I=N;var A=["mousedown","touchstart"];const L=function(e,t,n){void 0===n&&(n=A);var a=(0,r.useRef)(t);(0,r.useEffect)((function(){a.current=t}),[t]),(0,r.useEffect)((function(){for(var t=function(t){var n=e.current;n&&!n.contains(t.target)&&a.current(t)},r=0,o=n;r<o.length;r++){var i=o[r];x(document,i,t)}return function(){for(var e=0,r=n;e<r.length;e++){var a=r[e];k(document,a,t)}}}),[n,e])};var R=n(36808),j=n.n(R);const M=function(e){var t=(0,r.useState)((function(){return j().get(e)||null})),n=t[0],a=t[1];return[n,(0,r.useCallback)((function(t,n){j().set(e,t,n),a(t)}),[e]),(0,r.useCallback)((function(){j().remove(e),a(null)}),[e])]};var F=n(20640),B=n.n(F);const z=function(){var e=f(),t=g({value:void 0,error:void 0,noUserInteraction:!0}),n=t[0],a=t[1];return[n,(0,r.useCallback)((function(t){var n,r;if(e())try{if("string"!=typeof t&&"number"!=typeof t){var o=new Error("Cannot copy typeof "+typeof t+" to clipboard, must be a string");return void a({value:t,error:o,noUserInteraction:!0})}if(""===t){o=new Error("Cannot copy empty string to clipboard.");return void a({value:t,error:o,noUserInteraction:!0})}r=t.toString(),n=B()(r),a({value:r,error:void 0,noUserInteraction:n})}catch(o){a({value:r,error:o,noUserInteraction:n})}}),[])]};var $=function(e){return(e+1)%1e6};function U(){return(0,r.useReducer)($,0)[1]}function H(e,t){return"function"==typeof e?e.length?e(t):e():e}function V(e){var t=(0,r.useRef)(H(e)),n=U();return(0,r.useMemo)((function(){return[function(){return t.current},function(e){t.current=H(e,t.current),n()}]}),[])}function q(e,t,n){void 0===e&&(e=0),void 0===t&&(t=null),void 0===n&&(n=null);var a=H(e);"number"!=typeof a&&console.error("initialValue has to be a number, got "+typeof e),"number"==typeof n?a=Math.max(a,n):null!==n&&console.error("min has to be a number, got "+typeof n),"number"==typeof t?a=Math.min(a,t):null!==t&&console.error("max has to be a number, got "+typeof t);var o=V(a),i=o[0],l=o[1];return[i(),(0,r.useMemo)((function(){var e=function(e){var r=i(),a=H(e,r);r!==a&&("number"==typeof n&&(a=Math.max(a,n)),"number"==typeof t&&(a=Math.min(a,t)),r!==a&&l(a))};return{get:i,set:e,inc:function(t){void 0===t&&(t=1);var n=H(t,i());"number"!=typeof n&&console.error("delta has to be a number or function returning a number, got "+typeof n),e((function(e){return e+n}))},dec:function(t){void 0===t&&(t=1);var n=H(t,i());"number"!=typeof n&&console.error("delta has to be a number or function returning a number, got "+typeof n),e((function(e){return e-n}))},reset:function(t){void 0===t&&(t=a);var n=H(t,i());"number"!=typeof n&&console.error("value has to be a number or function returning a number, got "+typeof n),a=n,e(n)}}}),[a,n,t])]}var W=n(40818),G=n(97142),Z=n(52099),Q=n(87749);const Y=_?r.useLayoutEffect:r.useEffect;var X=(0,W.U)();(0,G.I)(X),(0,Z.I)(X);var K=0;const J=function(e){var t=(0,r.useMemo)((function(){return"react-use-css-"+(K++).toString(36)}),[]),n=(0,r.useMemo)((function(){return new X.VSheet}),[]);return Y((function(){var r={};return(0,Q.z)(r,e,"."+t,""),n.diff(r),function(){n.diff({})}})),t};const ee=function(e,t,n){var a=(0,r.useRef)(void 0);a.current&&n(t,a.current)||(a.current=t),(0,r.useEffect)(e,a.current)};function te(e,t){void 0===t&&(t=0);var n=(0,r.useRef)(!1),a=(0,r.useRef)(),o=(0,r.useRef)(e),i=(0,r.useCallback)((function(){return n.current}),[]),l=(0,r.useCallback)((function(){n.current=!1,a.current&&clearTimeout(a.current),a.current=setTimeout((function(){n.current=!0,o.current()}),t)}),[t]),s=(0,r.useCallback)((function(){n.current=null,a.current&&clearTimeout(a.current)}),[]);return(0,r.useEffect)((function(){o.current=e}),[e]),(0,r.useEffect)((function(){return l(),s}),[t]),[i,s,l]}function ne(e,t,n){void 0===t&&(t=0),void 0===n&&(n=[]);var a=te(e,t),o=a[0],i=a[1],l=a[2];return(0,r.useEffect)(l,n),[o,i]}const re=function(e,t){ee(e,t,C)};const ae=function(e,t){var n=(0,r.useState)(t),a=n[0],o=n[1];return null==a?[e,o]:[a,o]};const oe=function(e,t){void 0===e&&(e={}),void 0===t&&(t=[]);var n=e.onFiles,a=e.onText,o=e.onUri,i=(0,r.useState)(!1),l=i[0],s=i[1],u=(0,r.useCallback)(s,[]),c=(0,r.useMemo)((function(){return function(e){return function(t,n){var r=t.getData("text/uri-list");if(r)(e.onUri||w)(r,n);else if(t.files&&t.files.length)(e.onFiles||w)(Array.from(t.files),n);else if(n.clipboardData){var a=n.clipboardData.getData("text");(e.onText||w)(a,n)}}}(e)}),[n,a,o]);return(0,r.useEffect)((function(){var e=function(e){e.preventDefault(),u(!0)},t=function(e){e.preventDefault(),u(!0)},n=function(){u(!1)},r=function(){u(!1)},o=function(e){e.preventDefault(),u(!1),c(e.dataTransfer,e)},i=function(e){c(e.clipboardData,e)};return x(document,"dragover",e),x(document,"dragenter",t),x(document,"dragleave",n),x(document,"dragexit",r),x(document,"drop",o),a&&x(document,"paste",i),function(){k(document,"dragover",e),k(document,"dragenter",t),k(document,"dragleave",n),k(document,"dragexit",r),k(document,"drop",o),k(document,"paste",i)}}),(0,d.__spreadArrays)([c],t)),{over:l}};const ie=function(e){void 0===e&&(e={});var t=e.onFiles,n=e.onText,a=e.onUri,o=f(),i=(0,r.useState)(!1),l=i[0],s=i[1],u=(0,r.useMemo)((function(){return function(e,t){return function(n,r){var a=n.getData("text/uri-list");a?(e.onUri||w)(a,r):n.files&&n.files.length?(e.onFiles||w)(Array.from(n.files),r):n.items&&n.items.length&&n.items[0].getAsString((function(n){t&&(e.onText||w)(n,r)}))}}(e,o())}),[t,n,a]),c=(0,r.useMemo)((function(){return function(e,t){return{onDragOver:function(e){e.preventDefault()},onDragEnter:function(e){e.preventDefault(),t(!0)},onDragLeave:function(){t(!1)},onDrop:function(n){n.preventDefault(),n.persist(),t(!1),e(n.dataTransfer,n)},onPaste:function(t){t.persist(),e(t.clipboardData,t)}}}(u,s)}),[u,s]);return[c,{over:l}]};const le=function(e){(0,r.useEffect)(e,[])};function se(e){var t=(0,r.useRef)(e&&e.current);return(0,r.useEffect)((function(){e&&(e.current=t.current)}),[e]),t}function ue(e){return(0,r.forwardRef)((function(t,n){var r=se(n);return e(t,r)}))}var ce=_?window:null,de=function(e){return!!e.addEventListener},fe=function(e){return!!e.on};const pe=function(e,t,n,a){void 0===n&&(n=ce),(0,r.useEffect)((function(){if(t&&n)return de(n)?x(n,e,t,a):fe(n)&&n.on(e,t,a),function(){de(n)?k(n,e,t,a):fe(n)&&n.off(e,t,a)}}),[e,t,n,JSON.stringify(a)])};const he=function(){var e=(0,r.useState)(null),t=e[0],n=e[1];return(0,r.useEffect)((function(){if(t)throw t}),[t]),(0,r.useCallback)((function(e){n(e)}),[])};const me=function(e){(0,r.useEffect)((function(){var t=document.querySelector("link[rel*='icon']")||document.createElement("link");t.type="image/x-icon",t.rel="shortcut icon",t.href=e,document.getElementsByTagName("head")[0].appendChild(t)}),[e])};var ge=n(10577),ve=n.n(ge);const be=function(e,t,n){void 0===n&&(n={});var a=n.video,o=n.onClose,i=void 0===o?w:o,l=(0,r.useState)(t),s=l[0],u=l[1];return Y((function(){if(t&&e.current){var n=function(){(null==a?void 0:a.current)&&k(a.current,"webkitendfullscreen",n),i()},r=function(){if(ve().isEnabled){var e=ve().isFullscreen;u(e),e||i()}};if(ve().isEnabled){try{ve().request(e.current),u(!0)}catch(l){i(l),u(!1)}ve().on("change",r)}else a&&a.current&&a.current.webkitEnterFullscreen?(a.current.webkitEnterFullscreen(),x(a.current,"webkitendfullscreen",n),u(!0)):(i(),u(!1));return function(){if(u(!1),ve().isEnabled)try{ve().off("change",r),ve().exit()}catch(o){}else a&&a.current&&a.current.webkitExitFullscreen&&(k(a.current,"webkitendfullscreen",n),a.current.webkitExitFullscreen())}}}),[t,a,e]),s};const ye=function(e){var t,n=(0,r.useState)({loading:!0,accuracy:null,altitude:null,altitudeAccuracy:null,heading:null,latitude:null,longitude:null,speed:null,timestamp:Date.now()}),a=n[0],o=n[1],i=!0,l=function(e){i&&o({loading:!1,accuracy:e.coords.accuracy,altitude:e.coords.altitude,altitudeAccuracy:e.coords.altitudeAccuracy,heading:e.coords.heading,latitude:e.coords.latitude,longitude:e.coords.longitude,speed:e.coords.speed,timestamp:e.timestamp})},s=function(e){return i&&o((function(t){return(0,d.__assign)((0,d.__assign)({},t),{loading:!1,error:e})}))};return(0,r.useEffect)((function(){return navigator.geolocation.getCurrentPosition(l,s,e),t=navigator.geolocation.watchPosition(l,s,e),function(){i=!1,navigator.geolocation.clearWatch(t)}}),[]),a};const we=function(e){void 0===e&&(e={});var t=U(),n=(0,r.useRef)((0,d.__assign)({},e));return[(0,r.useCallback)((function(){return n.current}),[]),(0,r.useCallback)((function(e){e&&(Object.assign(n.current,e),t())}),[])]};var xe=0,ke={};const _e=function(e,t){void 0===t&&(t=0);var n=(0,r.useRef)((function(){}));(0,r.useEffect)((function(){n.current=e})),(0,r.useEffect)((function(){if(null!==t){var e=function(e,t){var n,r=xe++;if(ke[t])ke[t].listeners[r]=e;else{var a=setInterval((function(){for(var e,n=ke[t].listeners,r=!1,a=0,o=Object.values(n);a<o.length;a++){var i=o[a];try{i()}catch(l){r=!0,e=l}}if(r)throw e}),t);ke[t]={ms:t,timer:a,listeners:(n={},n[r]=e,n)}}return{bucket:ke[t],id:r}}((function(){return n.current()}),t);return function(){return function(e){var t=e.bucket,n=e.id;delete t.listeners[n];var r=!1;for(var a in t.listeners){r=!0;break}r||(clearInterval(t.timer),delete ke[t.ms])}(e)}}}),[t])};var Ee=r.useState;const Se=function(e){var t,n,a=Ee(!1),o=a[0],i=a[1];return"function"==typeof e&&(e=e(o)),[r.cloneElement(e,{onMouseEnter:(n=e.props.onMouseEnter,function(e){(n||w)(e),i(!0)}),onMouseLeave:(t=e.props.onMouseLeave,function(e){(t||w)(e),i(!1)})}),o]};const Ce=function(e,t){void 0===t&&(t=!0);var n=(0,r.useState)(!1),a=n[0],o=n[1];return(0,r.useEffect)((function(){var n=function(){return o(!0)},r=function(){return o(!1)};t&&e&&e.current&&(x(e.current,"mouseover",n),x(e.current,"mouseout",r));var a=e.current;return function(){t&&a&&(k(a,"mouseover",n),k(a,"mouseout",r))}}),[t,e]),a};function Te(e,t,n,r){var a,o=!1,i=0;function l(){a&&clearTimeout(a)}function s(){for(var s=arguments.length,u=new Array(s),c=0;c<s;c++)u[c]=arguments[c];var d=this,f=Date.now()-i;function p(){i=Date.now(),n.apply(d,u)}o||(r&&!a&&p(),l(),void 0===r&&f>e?p():!0!==t&&(a=setTimeout(r?function(){a=void 0}:p,void 0===r?e-f:e)))}return"boolean"!=typeof t&&(r=n,n=t,t=void 0),s.cancel=function(){l(),o=!0},s}var Oe=["mousemove","mousedown","resize","keydown","touchstart","wheel"];const De=function(e,t,n){void 0===e&&(e=6e4),void 0===t&&(t=!1),void 0===n&&(n=Oe);var a=(0,r.useState)(t),o=a[0],i=a[1];return(0,r.useEffect)((function(){for(var t,r=!0,a=o,l=function(e){r&&(a=e,i(e))},s=Te(50,(function(){a&&l(!1),clearTimeout(t),t=setTimeout((function(){return l(!0)}),e)})),u=function(){document.hidden||s()},c=0;c<n.length;c++)x(window,n[c],s);return x(document,"visibilitychange",u),t=setTimeout((function(){return l(!0)}),e),function(){r=!1;for(var e=0;e<n.length;e++)k(window,n[e],s);k(document,"visibilitychange",u)}}),[e,n]),o};const Pe=function(e,t){var n=(0,r.useState)(null),a=n[0],o=n[1];return(0,r.useEffect)((function(){if(e.current&&"function"==typeof IntersectionObserver){var n=new IntersectionObserver((function(e){o(e[0])}),t);return n.observe(e.current),function(){o(null),n.disconnect()}}return function(){}}),[e.current,t.threshold,t.root,t.rootMargin]),a};const Ne=function(e,t){var n=(0,r.useRef)((function(){}));(0,r.useEffect)((function(){n.current=e})),(0,r.useEffect)((function(){if(null!==t){var e=setInterval((function(){return n.current()}),t||0);return function(){return clearInterval(e)}}}),[t])};const Ie=function(e,t,n,a){void 0===t&&(t=w),void 0===n&&(n={}),void 0===a&&(a=[e]);var o=n.event,i=void 0===o?"keydown":o,l=n.target,s=n.options,u=(0,r.useMemo)((function(){var n,r="function"==typeof(n=e)?n:"string"==typeof n?function(e){return e.key===n}:n?function(){return!0}:function(){return!1};return function(e){if(r(e))return t(e)}}),a);pe(i,u,l,s)};const Ae=function(e){return void 0===e&&(e={laptopL:1440,laptop:1024,tablet:768}),function(){var t=(0,r.useState)(_?window.innerWidth:0),n=t[0],a=t[1];(0,r.useEffect)((function(){var e=function(){a(window.innerWidth)};return e(),x(window,"resize",e),function(){k(window,"resize",e)}}));var o=(0,r.useMemo)((function(){return Object.entries(e).sort((function(e,t){return e[1]>=t[1]?1:-1}))}),[e]),i=o.reduce((function(e,t){var r=t[0],a=t[1];return n>=a?r:e}),o[0][0]);return i}};const Le=function(e){var t=(0,r.useState)([!1,null]),n=t[0],a=t[1];return Ie(e,(function(e){return a([!0,e])}),{event:"keydown"},[n]),Ie(e,(function(e){return a([!1,e])}),{event:"keyup"},[n]),n};const Re=function(e,t,n,r){void 0===r&&(r=Le);var a=r(e),o=a[0],i=a[1];s((function(){!o&&n?n(i):o&&t&&t(i)}),[o])};const je=function(e){var t=(0,r.useRef)(e);return t.current=e,t};const Me=function(e,t){(0,r.useEffect)((function(){return e&&e(),function(){t&&t()}}),[])};const Fe=function(e){void 0===e&&(e=[]);var t=(0,r.useRef)(H(e)),n=U(),a=(0,r.useMemo)((function(){var r={set:function(e){t.current=H(e,t.current),n()},push:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];e.length&&a.set((function(t){return t.concat(e)}))},updateAt:function(e,t){a.set((function(n){var r=n.slice();return r[e]=t,r}))},insertAt:function(e,t){a.set((function(n){var r=n.slice();return e>r.length?r[e]=t:r.splice(e,0,t),r}))},update:function(e,t){a.set((function(n){return n.map((function(n){return e(n,t)?t:n}))}))},updateFirst:function(e,n){var r=t.current.findIndex((function(t){return e(t,n)}));r>=0&&a.updateAt(r,n)},upsert:function(e,n){var r=t.current.findIndex((function(t){return e(t,n)}));r>=0?a.updateAt(r,n):a.push(n)},sort:function(e){a.set((function(t){return t.slice().sort(e)}))},filter:function(e,t){a.set((function(n){return n.slice().filter(e,t)}))},removeAt:function(e){a.set((function(t){var n=t.slice();return n.splice(e,1),n}))},clear:function(){a.set([])},reset:function(){a.set(H(e).slice())}};return r.remove=r.removeAt,r}),[]);return[t.current,a]};const Be=function(e,t,n){if(!_)return[t,w,w];if(!e)throw new Error("useLocalStorage key may not be falsy");var a=n?n.raw?function(e){return e}:n.deserializer:JSON.parse,o=(0,r.useRef)((function(e){try{var r=n?n.raw?String:n.serializer:JSON.stringify,o=localStorage.getItem(e);return null!==o?a(o):(t&&localStorage.setItem(e,r(t)),t)}catch(i){return t}})),i=(0,r.useState)((function(){return o.current(e)})),l=i[0],s=i[1];(0,r.useLayoutEffect)((function(){return s(o.current(e))}),[e]);var u=(0,r.useCallback)((function(t){try{var r="function"==typeof t?t(l):t;if(void 0===r)return;var o=void 0;o=n?n.raw?"string"==typeof r?r:JSON.stringify(r):n.serializer?n.serializer(r):JSON.stringify(r):JSON.stringify(r),localStorage.setItem(e,o),s(a(o))}catch(i){}}),[e,s]),c=(0,r.useCallback)((function(){try{localStorage.removeItem(e),s(void 0)}catch(i){}}),[e,s]);return[l,u,c]};var ze=function(e){var t=window.history,n=t[e];t[e]=function(t){var r=n.apply(this,arguments),a=new Event(e.toLowerCase());return a.state=t,window.dispatchEvent(a),r}};_&&(ze("pushState"),ze("replaceState"));var $e=function(e){var t=window.history,n=t.state,r=t.length,a=window.location;return{trigger:e,state:n,length:r,hash:a.hash,host:a.host,hostname:a.hostname,href:a.href,origin:a.origin,pathname:a.pathname,port:a.port,protocol:a.protocol,search:a.search}},Ue="function"==typeof Event;const He=_&&Ue?function(){var e=(0,r.useState)($e("load")),t=e[0],n=e[1];return(0,r.useEffect)((function(){var e=function(){return n($e("popstate"))},t=function(){return n($e("pushstate"))},r=function(){return n($e("replacestate"))};return x(window,"popstate",e),x(window,"pushstate",t),x(window,"replacestate",r),function(){k(window,"popstate",e),k(window,"pushstate",t),k(window,"replacestate",r)}}),[]),t}:function(){return{trigger:"load",length:1}};function Ve(e){if(!e)return null;if("BODY"===e.tagName)return e;if("IFRAME"===e.tagName){var t=e.contentDocument;return t?t.body:null}return e.offsetParent?Ve(e.offsetParent):null}function qe(e){var t=e||window.event;return t.touches.length>1||(t.preventDefault&&t.preventDefault(),!1)}var We=_&&window.navigator&&window.navigator.platform&&/iP(ad|hone|od)/.test(window.navigator.platform),Ge=new Map,Ze="object"==typeof document?document:void 0,Qe=!1;const Ye=Ze?function(e,t){void 0===e&&(e=!0);var n=(0,r.useRef)(Ze.body);t=t||n;var a=function(e){var t=Ge.get(e);t&&(1===t.counter?(Ge.delete(e),We?(e.ontouchmove=null,Qe&&(k(document,"touchmove",qe),Qe=!1)):e.style.overflow=t.initialOverflow):Ge.set(e,{counter:t.counter-1,initialOverflow:t.initialOverflow}))};(0,r.useEffect)((function(){var n=Ve(t.current);n&&(e?function(e){var t=Ge.get(e);t?Ge.set(e,{counter:t.counter+1,initialOverflow:t.initialOverflow}):(Ge.set(e,{counter:1,initialOverflow:e.style.overflow}),We?Qe||(x(document,"touchmove",qe,{passive:!1}),Qe=!0):e.style.overflow="hidden")}(n):a(n))}),[e,t.current]),(0,r.useEffect)((function(){var e=Ve(t.current);if(e)return function(){a(e)}}),[])}:function(e,t){void 0===e&&(e=!0)};const Xe=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];le((function(){return console.log.apply(console,(0,d.__spreadArrays)([e+" mounted"],t)),function(){return console.log(e+" unmounted")}})),s((function(){console.log.apply(console,(0,d.__spreadArrays)([e+" updated"],t))}))};var Ke=function(e){(function(e){return"touches"in e})(e)&&e.touches.length<2&&e.preventDefault&&e.preventDefault()};const Je=function(e,t){var n=void 0===t?{}:t,a=n.isPreventDefault,o=void 0===a||a,i=n.delay,l=void 0===i?300:i,s=(0,r.useRef)(),u=(0,r.useRef)(),c=(0,r.useCallback)((function(t){o&&t.target&&(x(t.target,"touchend",Ke,{passive:!1}),u.current=t.target),s.current=setTimeout((function(){return e(t)}),l)}),[e,l,o]),d=(0,r.useCallback)((function(){s.current&&clearTimeout(s.current),o&&u.current&&k(u.current,"touchend",Ke)}),[o]);return{onMouseDown:function(e){return c(e)},onTouchStart:function(e){return c(e)},onMouseUp:d,onMouseLeave:d,onTouchEnd:d}};const et=function(e){void 0===e&&(e={});var t=(0,r.useState)(e),n=t[0],a=t[1],o=(0,r.useMemo)((function(){return{set:function(e,t){a((function(n){var r;return(0,d.__assign)((0,d.__assign)({},n),((r={})[e]=t,r))}))},setAll:function(e){a(e)},remove:function(e){a((function(t){var n=t,r=e;n[r];return(0,d.__rest)(n,["symbol"==typeof r?r:r+""])}))},reset:function(){return a(e)}}}),[a]),i=(0,d.__assign)({get:(0,r.useCallback)((function(e){return n[e]}),[n])},o);return[n,i]};const tt=function(e,t){var n=(0,r.useState)(function(e,t){return void 0!==t?t:!!_&&window.matchMedia(e).matches}(e,t)),a=n[0],o=n[1];return(0,r.useEffect)((function(){var t=!0,n=window.matchMedia(e),r=function(){t&&o(!!n.matches)};return n.addListener(r),o(n.matches),function(){t=!1,n.removeListener(r)}}),[e]),a};const nt=E&&navigator.mediaDevices?function(){var e=(0,r.useState)({}),t=e[0],n=e[1];return(0,r.useEffect)((function(){var e=!0,t=function(){navigator.mediaDevices.enumerateDevices().then((function(t){e&&n({devices:t.map((function(e){return{deviceId:e.deviceId,groupId:e.groupId,kind:e.kind,label:e.label}}))})})).catch(w)};return x(navigator.mediaDevices,"devicechange",t),t(),function(){e=!1,k(navigator.mediaDevices,"devicechange",t)}}),[]),t}:function(){return{}};function rt(e,t){var n=(0,r.useRef)(e),a=(0,r.useState)(t),o=a[0],i=a[1];return[o,(0,r.useCallback)((function(e){2===n.current.length?n.current(e,i):i(n.current(e))}),[o])]}const at=function(e,t){var n=(0,r.useMemo)((function(){return function(t,n){var r;return(r=e(t))[n.type].apply(r,n.payload)}}),[e]),a=(0,r.useReducer)(n,t),o=a[0],i=a[1],l=(0,r.useMemo)((function(){return Object.keys(e(t)).reduce((function(e,t){return e[t]=function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return i({type:t,payload:e})},e}),{})}),[e,t]);return[o,l]};var ot={acceleration:{x:null,y:null,z:null},accelerationIncludingGravity:{x:null,y:null,z:null},rotationRate:{alpha:null,beta:null,gamma:null},interval:16};const it=function(e){void 0===e&&(e=ot);var t=(0,r.useState)(e),n=t[0],a=t[1];return(0,r.useEffect)((function(){var e=function(e){var t=e.acceleration,n=e.accelerationIncludingGravity,r=e.rotationRate,o=e.interval;a({acceleration:{x:t.x,y:t.y,z:t.z},accelerationIncludingGravity:{x:n.x,y:n.y,z:n.z},rotationRate:{alpha:r.alpha,beta:r.beta,gamma:r.gamma},interval:o})};return x(window,"devicemotion",e),function(){k(window,"devicemotion",e)}}),[]),n};const lt=function(e){le((function(){e()}))};const st=function(e){var t=(0,r.useRef)(e);t.current=e,le((function(){return function(){return t.current()}}))};const ut=function(e){var t=(0,r.useRef)(0),n=(0,r.useState)(e),a=n[0],o=n[1],i=(0,r.useCallback)((function(e){cancelAnimationFrame(t.current),t.current=requestAnimationFrame((function(){o(e)}))}),[]);return st((function(){cancelAnimationFrame(t.current)})),[a,i]};const ct=function(e){var t=ut({docX:0,docY:0,posX:0,posY:0,elX:0,elY:0,elH:0,elW:0}),n=t[0],a=t[1];return(0,r.useEffect)((function(){var t=function(t){if(e&&e.current){var n=e.current.getBoundingClientRect(),r=n.left,o=n.top,i=n.width,l=n.height,s=r+window.pageXOffset,u=o+window.pageYOffset,c=t.pageX-s,d=t.pageY-u;a({docX:t.pageX,docY:t.pageY,posX:s,posY:u,elX:c,elY:d,elH:l,elW:i})}};return x(document,"mousemove",t),function(){k(document,"mousemove",t)}}),[e]),n};var dt={current:null};const ft=function(e,t){void 0===t&&(t={});var n=!!t.whenHovered,r=!!t.bound,a=Ce(e,n),o=ct(n&&!a?dt:e);return r&&(o.elX=Math.max(0,Math.min(o.elX,o.elW)),o.elY=Math.max(0,Math.min(o.elY,o.elH))),o},pt=function(){var e=(0,r.useState)(0),t=e[0],n=e[1];return(0,r.useEffect)((function(){var e=function(e){n(e.deltaY+t)};return x(window,"wheel",e,!1),function(){return k(window,"wheel",e)}})),t};var ht=E?navigator:void 0,mt=ht&&(ht.connection||ht.mozConnection||ht.webkitConnection);function gt(e){var t=null==ht?void 0:ht.onLine,n=null==e?void 0:e.online;return{online:t,previous:n,since:t!==n?new Date:null==e?void 0:e.since,downlink:null==mt?void 0:mt.downlink,downlinkMax:null==mt?void 0:mt.downlinkMax,effectiveType:null==mt?void 0:mt.effectiveType,rtt:null==mt?void 0:mt.rtt,saveData:null==mt?void 0:mt.saveData,type:null==mt?void 0:mt.type}}function vt(e){var t=(0,r.useState)(null!=e?e:gt),n=t[0],a=t[1];return(0,r.useEffect)((function(){var e=function(){a(gt)};return x(window,"online",e,{passive:!0}),x(window,"offline",e,{passive:!0}),mt&&x(mt,"change",e,{passive:!0}),function(){k(window,"online",e),k(window,"offline",e),mt&&k(mt,"change",e)}}),[]),n}const bt=q;const yt=function(e,t){var n=(0,r.useState)(t),a=n[0],o=n[1];return Y((function(){var t=e.subscribe(o);return function(){return t.unsubscribe()}}),[e]),a};var wt={angle:0,type:"landscape-primary"};const xt=function(e){void 0===e&&(e=wt);var t=(0,r.useState)(e),n=t[0],a=t[1];return(0,r.useEffect)((function(){var t=window.screen,n=!0,r=function(){if(n){var r=t.orientation;if(r){var o=r.angle,i=r.type;a({angle:o,type:i})}else void 0!==window.orientation?a({angle:"number"==typeof window.orientation?window.orientation:0,type:""}):a(e)}};return x(window,"orientationchange",r),r(),function(){n=!1,k(window,"orientationchange",r)}}),[]),n};const kt=function(e,t){void 0===t&&(t=[]),(0,r.useEffect)((function(){if(e){var t=function(t){var n=(t=t||window.event).relatedTarget||t.toElement;n&&"HTML"!==n.nodeName||e()};return x(document,"mouseout",t),function(){k(document,"mouseout",t)}}}),t)};const _t=function(e){var t=(0,r.useState)(""),n=t[0],a=t[1];return(0,r.useEffect)((function(){var t=!0,n=null,r=function(){t&&a((function(){var e;return null!==(e=null==n?void 0:n.state)&&void 0!==e?e:""}))};return navigator.permissions.query(e).then((function(e){x(n=e,"change",r),r()})).catch(w),function(){n&&k(n,"change",r),t=!1,n=null}}),[e]),n};function Et(e){var t=(0,r.useRef)();return(0,r.useEffect)((function(){t.current=e})),t.current}var St=function(e,t){return e===t};function Ct(e,t){void 0===t&&(t=St);var n=(0,r.useRef)(),a=(0,r.useRef)(e);return l()||t(a.current,e)||(n.current=a.current,a.current=e),n.current}const Tt=function(){var e=f();return(0,r.useCallback)((function(t){return new Promise((function(n,r){t.then((function(t){e()&&n(t)}),(function(t){e()&&r(t)}))}))}),[])};const Ot=function(e){void 0===e&&(e=[]);var t=(0,r.useState)(e),n=t[0],a=t[1];return{add:function(e){a((function(t){return(0,d.__spreadArrays)(t,[e])}))},remove:function(){var e;return a((function(t){var n=t[0],r=t.slice(1);return e=n,r})),e},get first(){return n[0]},get last(){return n[n.length-1]},get size(){return n.length}}};const Dt=function(e,t){void 0===e&&(e=1e12),void 0===t&&(t=0);var n=(0,r.useState)(0),a=n[0],o=n[1];return Y((function(){var n,r,a,i=function(){var t=Math.min(1,(Date.now()-a)/e);o(t),l()},l=function(){n=requestAnimationFrame(i)},s=setTimeout((function(){r=setTimeout((function(){cancelAnimationFrame(n),o(1)}),e),a=Date.now(),l()}),t);return function(){clearTimeout(r),clearTimeout(s),cancelAnimationFrame(n)}}),[e,t]),a};function Pt(e,t){void 0===t&&(t=!0);var n=(0,r.useRef)(null),a=(0,r.useRef)(!1),o=(0,r.useRef)(e);o.current=e;var i=(0,r.useCallback)((function(e){a.current&&(o.current(e),n.current=requestAnimationFrame(i))}),[]),l=(0,r.useMemo)((function(){return[function(){a.current&&(a.current=!1,n.current&&cancelAnimationFrame(n.current))},function(){a.current||(a.current=!0,n.current=requestAnimationFrame(i))},function(){return a.current}]}),[]);return(0,r.useEffect)((function(){return t&&l[1](),l[0]}),[]),l}var Nt=function(e,t){return new URLSearchParams(e).get(t)};const It=_?function(e){var t=window.location,n=(0,r.useState)((function(){return Nt(t.search,e)})),a=n[0],o=n[1];return(0,r.useEffect)((function(){var n=function(){o(Nt(t.search,e))};return x(window,"popstate",n),x(window,"pushstate",n),x(window,"replacestate",n),function(){k(window,"popstate",n),k(window,"pushstate",n),k(window,"replacestate",n)}}),[]),a}:function(){return null};n(96260);var At=function(e){void 0===e&&(e={});var t=e.disabled,n=je(e),a=(0,r.useState)({isScratching:!1}),o=a[0],i=a[1],l=(0,r.useRef)(o),s=(0,r.useRef)(!1),u=(0,r.useRef)(null),c=(0,r.useState)(null),f=c[0],p=c[1];return(0,r.useEffect)((function(){if(!t&&f){var e,r,a=function(e,t){cancelAnimationFrame(u.current),u.current=requestAnimationFrame((function(){var r=f.getBoundingClientRect(),a=r.left,o=r.top,s=a+window.scrollX,u=o+window.scrollY,c=e-s,p=t-u;i((function(e){var t=(0,d.__assign)((0,d.__assign)({},e),{dx:c-(e.x||0),dy:p-(e.y||0),end:Date.now(),isScratching:!0});return l.current=t,(n.current.onScratch||w)(t),t}))}))},o=function(e){a(e.pageX,e.pageY)},c=function(e){a(e.changedTouches[0].pageX,e.changedTouches[0].pageY)},p=function(){s.current&&(s.current=!1,l.current=(0,d.__assign)((0,d.__assign)({},l.current),{isScratching:!1}),(n.current.onScratchEnd||w)(l.current),i({isScratching:!1}),k(window,"mousemove",o),k(window,"touchmove",c),k(window,"mouseup",e),k(window,"touchend",r))};e=p,r=p;var h=function(t,a){if(s.current){var u=f.getBoundingClientRect(),d=u.left,p=u.top,h=d+window.scrollX,m=p+window.scrollY,g=t-h,v=a-m,b=Date.now(),y={isScratching:!0,start:b,end:b,docX:t,docY:a,x:g,y:v,dx:0,dy:0,elH:f.offsetHeight,elW:f.offsetWidth,elX:h,elY:m};l.current=y,(n.current.onScratchStart||w)(y),i(y),x(window,"mousemove",o),x(window,"touchmove",c),x(window,"mouseup",e),x(window,"touchend",r)}},m=function(e){s.current=!0,h(e.pageX,e.pageY)},g=function(e){s.current=!0,h(e.changedTouches[0].pageX,e.changedTouches[0].pageY)};return x(f,"mousedown",m),x(f,"touchstart",g),function(){k(f,"mousedown",m),k(f,"touchstart",g),k(window,"mousemove",o),k(window,"touchmove",c),k(window,"mouseup",e),k(window,"touchend",r),u.current&&cancelAnimationFrame(u.current),u.current=null,s.current=!1,l.current={isScratching:!1},i(l.current)}}}),[f,t,n]),[p,o]};const Lt=At;const Rt=function(e){var t=ut({x:0,y:0}),n=t[0],a=t[1];return(0,r.useEffect)((function(){var t=function(){e.current&&a({x:e.current.scrollLeft,y:e.current.scrollTop})};return e.current&&x(e.current,"scroll",t,{capture:!1,passive:!0}),function(){e.current&&k(e.current,"scroll",t)}}),[e]),n};const jt=function(e){var t=(0,r.useState)(!1),n=t[0],a=t[1];return(0,r.useEffect)((function(){if(e.current){var t,n=function(){a(!0),clearTimeout(t),t=setTimeout((function(){a(!1)}),150)};return x(e.current,"scroll",n,!1),function(){e.current&&k(e.current,"scroll",n,!1)}}return function(){}}),[e]),n};const Mt=function(e,t,n){if(!_)return[t,function(){}];var a=(0,r.useState)((function(){try{var r=sessionStorage.getItem(e);return"string"!=typeof r?(sessionStorage.setItem(e,n?String(t):JSON.stringify(t)),t):n?r:JSON.parse(r||"null")}catch(a){return t}})),o=a[0],i=a[1];return(0,r.useEffect)((function(){try{var t=n?String(o):JSON.stringify(o);sessionStorage.setItem(e,t)}catch(a){}})),[o,i]};var Ft=n(99376),Bt=function(e,t){return e.every((function(e,n){return(0,Ft.D)(e,t[n])}))};const zt=function(e,t){ee(e,t,Bt)};var $t=r.useState,Ut=r.useEffect,Ht=r.useRef;const Vt=function(e,t){var n=void 0===t?{}:t,o=n.width,i=void 0===o?1/0:o,l=n.height,s=void 0===l?1/0:l;if(!_)return["function"==typeof e?e({width:i,height:s}):e,{width:i,height:s}];var u=$t({width:i,height:s}),c=u[0],f=u[1];"function"==typeof e&&(e=e(c));var p=e.props.style||{},h=Ht(null),m=null,g=function(){var e=h.current,t=e?{width:e.offsetWidth,height:e.offsetHeight}:{width:i,height:s};f(t)},v=function(e){x(e,"resize",g),setTimeout(g,35)};return Ut((function(){var e=h.current;if(e){if(e.contentWindow)m=e.contentWindow,v(m);else{var t=function(){x(e,"load",t),m=e.contentWindow,v(m)};k(e,"load",t)}return function(){m&&m.removeEventListener&&k(m,"resize",g)}}}),[]),p.position="relative",[r.cloneElement.apply(a,(0,d.__spreadArrays)([e,{style:p}],(0,d.__spreadArrays)([r.createElement("iframe",{ref:h,style:{background:"transparent",border:"none",height:"100%",left:0,position:"absolute",top:0,width:"100%",zIndex:-1}})],r.Children.toArray(e.props.children)))),c]};const qt=function(e,t){void 0===t&&(t={});var n=f(),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useRef)(0),l=g({isSliding:!1,value:0}),s=l[0],u=l[1];return o.current=s.value,(0,r.useEffect)((function(){if(_){var r=void 0===t.styles||t.styles,l=void 0!==t.reverse&&t.reverse;e.current&&r&&(e.current.style.userSelect="none");var s=function(){!a.current&&n()&&((t.onScrubStart||w)(),a.current=!0,u({isSliding:!0}),m())},c=function(){a.current&&n()&&((t.onScrubStop||w)(o.current),a.current=!1,u({isSliding:!1}),g())},d=function(e){s(),f(e)},f=t.vertical?function(e){return v(e.clientY)}:function(e){return v(e.clientX)},p=function(e){s(),h(e)},h=t.vertical?function(e){return v(e.changedTouches[0].clientY)}:function(e){return v(e.changedTouches[0].clientX)},m=function(){x(document,"mousemove",f),x(document,"mouseup",c),x(document,"touchmove",h),x(document,"touchend",c)},g=function(){k(document,"mousemove",f),k(document,"mouseup",c),k(document,"touchmove",h),k(document,"touchend",c)},v=function(r){cancelAnimationFrame(i.current),i.current=requestAnimationFrame((function(){if(n()&&e.current){var a=e.current.getBoundingClientRect(),o=t.vertical?a.top:a.left,i=t.vertical?a.height:a.width;if(!i)return;var s=(r-o)/i;s>1?s=1:s<0&&(s=0),l&&(s=1-s),u({value:s}),(t.onScrub||w)(s)}}))};return x(e.current,"mousedown",d),x(e.current,"touchstart",p),function(){k(e.current,"mousedown",d),k(e.current,"touchstart",p)}}}),[e,t.vertical]),s};var Wt;!function(e){e[e.init=0]="init",e[e.play=1]="play",e[e.pause=2]="pause",e[e.end=3]="end"}(Wt||(Wt={}));const Gt=function(e,t){var n=(0,r.useRef)(!1),a=(0,r.useState)((function(){var e=t.voice||{},n=e.lang,r=void 0===n?"default":n,a=e.name,o=void 0===a?"":a;return{isPlaying:!1,status:Wt[Wt.init],lang:t.lang||"default",voiceInfo:{lang:r,name:o},rate:t.rate||1,pitch:t.pitch||1,volume:t.volume||1}})),o=a[0],i=a[1],l=(0,r.useCallback)((function(){n.current&&i((function(e){return(0,d.__assign)((0,d.__assign)({},e),{isPlaying:!0,status:Wt[Wt.play]})}))}),[]),s=(0,r.useCallback)((function(){n.current&&i((function(e){return(0,d.__assign)((0,d.__assign)({},e),{isPlaying:!1,status:Wt[Wt.pause]})}))}),[]),u=(0,r.useCallback)((function(){n.current&&i((function(e){return(0,d.__assign)((0,d.__assign)({},e),{isPlaying:!1,status:Wt[Wt.end]})}))}),[]);return(0,r.useEffect)((function(){n.current=!0;var r=new SpeechSynthesisUtterance(e);return t.lang&&(r.lang=t.lang),t.voice&&(r.voice=t.voice),r.rate=t.rate||1,r.pitch=t.pitch||1,r.volume=t.volume||1,r.onstart=l,r.onpause=s,r.onresume=l,r.onend=u,window.speechSynthesis.speak(r),function(){n.current=!1}}),[]),o};const Zt=function(e){Y((function(){var t=function(t){var n,r,a,o,i;!function(){var e=document.activeElement,t=document.body;if(!e)return!1;if(e===t)return!1;switch(e.tagName){case"INPUT":case"TEXTAREA":return!0}return e.hasAttribute("contenteditable")}()&&(r=(n=t).keyCode,a=n.metaKey,o=n.ctrlKey,i=n.altKey,!(a||o||i)&&(r>=48&&r<=57||r>=65&&r<=90))&&e(t)};return x(document,"keydown",t),function(){k(document,"keydown",t)}}),[])};function Qt(e,t,n){if(void 0===t&&(t=10),t<1)throw new Error("Capacity has to be greater than 1, got '"+t+"'");var a=l(),o=(0,r.useState)(e),i=o[0],s=o[1],u=(0,r.useRef)(null!=n?n:[]),c=(0,r.useRef)(0);return a&&(u.current.length?(u.current[u.current.length-1]!==e&&u.current.push(e),u.current.length>t&&(u.current=u.current.slice(u.current.length-t))):u.current.push(e),c.current=u.current.length&&u.current.length-1),[i,(0,r.useCallback)((function(e){s((function(n){return(e=H(e,n))!==n&&(c.current<u.current.length-1&&(u.current=u.current.slice(0,c.current+1)),c.current=u.current.push(e)-1,u.current.length>t&&(u.current=u.current.slice(u.current.length-t))),e}))}),[i,t]),(0,r.useMemo)((function(){return{history:u.current,position:c.current,capacity:t,back:function(e){void 0===e&&(e=1),c.current&&s((function(){return c.current-=Math.min(e,c.current),u.current[c.current]}))},forward:function(e){void 0===e&&(e=1),c.current!==u.current.length-1&&s((function(){return c.current=Math.min(c.current+e,u.current.length-1),u.current[c.current]}))},go:function(e){e!==c.current&&s((function(){return c.current=e<0?Math.max(u.current.length+e,0):Math.min(u.current.length-1,e),u.current[c.current]}))}}}),[i])]}function Yt(e){void 0===e&&(e=[]);var t=f(),n=U(),a=(0,r.useRef)(0);s((function(){e.length<=a.current&&(a.current=e.length-1,n())}),[e.length]);var o=(0,r.useMemo)((function(){return{next:function(){return o.setStateAt(a.current+1)},prev:function(){return o.setStateAt(a.current-1)},setStateAt:function(r){t()&&e.length&&r!==a.current&&(a.current=r>=0?r%e.length:e.length+r%e.length,n())},setState:function(r){if(t()){var o=e.length?e.indexOf(r):-1;if(-1===o)throw new Error("State '"+r+"' is not a valid state (does not exist in state list)");a.current=o,n()}}}}),[e]);return(0,d.__assign)({state:e[a.current],currentIndex:a.current},o)}const Xt=function(e,t){void 0===t&&(t=200);var n=(0,r.useState)(e),a=n[0],o=n[1],i=(0,r.useRef)(),l=(0,r.useRef)(null),s=(0,r.useRef)(0);return(0,r.useEffect)((function(){if(i.current)l.current=e,s.current=!0;else{o(e);var n=function(){s.current?(s.current=!1,o(l.current),i.current=setTimeout(n,t)):i.current=void 0};i.current=setTimeout(n,t)}}),[e]),st((function(){i.current&&clearTimeout(i.current)})),a};const Kt=function(e,t,n){void 0===t&&(t=200);var a=(0,r.useState)(null),o=a[0],i=a[1],l=(0,r.useRef)(),s=(0,r.useRef)();return(0,r.useEffect)((function(){if(l.current)s.current=n;else{i(e.apply(void 0,n));var r=function(){s.current?(i(e.apply(void 0,s.current)),s.current=void 0,l.current=setTimeout(r,t)):l.current=void 0};l.current=setTimeout(r,t)}}),n),st((function(){l.current&&clearTimeout(l.current)})),o};function Jt(e){return void 0===e&&(e=0),te(U(),e)}var en={restoreOnUnmount:!1};const tn="undefined"!=typeof document?function(e,t){void 0===t&&(t=en);var n=(0,r.useRef)(document.title);document.title!==e&&(document.title=e),(0,r.useEffect)((function(){return t&&t.restoreOnUnmount?function(){document.title=n.current}:void 0}),[])}:function(e){};var nn=n(75534);const rn=function(e,t,n){return void 0===e&&(e="inCirc"),void 0===t&&(t=200),void 0===n&&(n=0),(0,nn.U[e])(Dt(t,n))};const an=function(){var e=(0,r.useRef)(!1);return le((function(){return function(){e.current=!0}})),(0,r.useMemo)((function(){return function(t,n){return new Promise((function(r,a){t.then((function(t){e.current||r(t)}),(function(t){e.current?n?n(t):console.error("useUnmountPromise",t):a(t)}))}))}}),[])};function on(e,t){void 0===t&&(t=[]);var n=Fe(t),r=n[0],a=n[1];return[r,(0,d.__assign)((0,d.__assign)({},a),{upsert:function(t){a.upsert(e,t)}})]}const ln=E&&"vibrate"in navigator?function(e,t,n){void 0===e&&(e=!0),void 0===t&&(t=[1e3,1e3]),void 0===n&&(n=!0),(0,r.useEffect)((function(){var r;if(e&&(navigator.vibrate(t),n)){var a=t instanceof Array?t.reduce((function(e,t){return e+t})):t;r=setInterval((function(){navigator.vibrate(t)}),a)}return function(){e&&(navigator.vibrate(0),n&&clearInterval(r))}}),[e])}:w;const sn=b("video");function un(e,t,n){void 0===n&&(n=[void 0]);var a=(0,r.useRef)(t),o=(0,r.useRef)(e);a.current=t,o.current=e;var i=(0,r.useState)(n),l=i[0],s=i[1],u=(0,r.useCallback)((function(){a.current.length>=2?a.current(o.current,s):s(a.current(o.current))}),[s]);return(0,r.useEffect)((function(){u()}),[e]),[l,u]}var cn=function(e){if("undefined"==typeof document)return 0;if(document.body&&(!document.readyState||"loading"!==document.readyState)){if(!0!==e&&"number"==typeof cn.__cache)return cn.__cache;var t=document.createElement("div"),n=t.style;n.display="block",n.position="absolute",n.width="100px",n.height="100px",n.left="-999px",n.top="-999px",n.overflow="scroll",document.body.insertBefore(t,null);var r=t.clientWidth;if(0!==r)return cn.__cache=100-r,document.body.removeChild(t),cn.__cache;document.body.removeChild(t)}};function dn(){var e=(0,r.useState)(cn()),t=e[0],n=e[1];return(0,r.useEffect)((function(){if(void 0===t){var e=requestAnimationFrame((function(){n(cn())}));return function(){return cancelAnimationFrame(e)}}}),[]),t}function fn(e,t,n){if(void 0===n&&(n=[void 0]),"object"!=typeof e)throw new Error("states expected to be an object or array, got "+typeof e);var a=(0,r.useRef)(t),o=(0,r.useRef)(e);a.current=t,o.current=e;var i=(0,r.useState)(n),l=i[0],s=i[1],u=(0,r.useCallback)((function(){a.current.length>=2?a.current(o.current,s):s(a.current(o.current))}),[s]);return(0,r.useEffect)((function(){u()}),Object.values(e)),[l,u]}const pn=function(){var e=ut((function(){return{x:_?window.pageXOffset:0,y:_?window.pageYOffset:0}})),t=e[0],n=e[1];return(0,r.useEffect)((function(){var e=function(){n((function(e){var t=window.pageXOffset,n=window.pageYOffset;return e.x!==t||e.y!==n?{x:t,y:n}:e}))};return e(),x(window,"scroll",e,{capture:!1,passive:!0}),function(){k(window,"scroll",e)}}),[]),t};const hn=function(e,t){void 0===e&&(e=1/0),void 0===t&&(t=1/0);var n=ut({width:_?window.innerWidth:e,height:_?window.innerHeight:t}),a=n[0],o=n[1];return(0,r.useEffect)((function(){if(_){var e=function(){o({width:window.innerWidth,height:window.innerHeight})};return x(window,"resize",e),function(){k(window,"resize",e)}}}),[]),a};var mn={x:0,y:0,width:0,height:0,top:0,left:0,bottom:0,right:0};const gn=_&&void 0!==window.ResizeObserver?function(){var e=(0,r.useState)(null),t=e[0],n=e[1],a=(0,r.useState)(mn),o=a[0],i=a[1],l=(0,r.useMemo)((function(){return new window.ResizeObserver((function(e){if(e[0]){var t=e[0].contentRect,n=t.x,r=t.y,a=t.width,o=t.height,l=t.top,s=t.left,u=t.bottom,c=t.right;i({x:n,y:r,width:a,height:o,top:l,left:s,bottom:u,right:c})}}))}),[]);return Y((function(){if(t)return l.observe(t),function(){l.disconnect()}}),[t]),[n,o]}:function(){return[w,mn]};var vn;!function(e){e.ZOOMING_IN="ZOOMING_IN",e.ZOOMING_OUT="ZOOMING_OUT"}(vn||(vn={}));const bn=function(e){var t=(0,r.useMemo)((function(){return{evCache:[],prevDiff:-1}}),[e.current]),n=(0,r.useState)(),a=n[0],o=n[1],i=function(e){for(var n=0;n<t.evCache.length;n++)if(e.pointerId==t.evCache[n].pointerId){t.evCache[n]=e;break}if(2==t.evCache.length){var r=Math.abs(t.evCache[0].clientX-t.evCache[1].clientX);t.prevDiff>0&&(r>t.prevDiff&&o([vn.ZOOMING_IN,r]),r<t.prevDiff&&o([vn.ZOOMING_OUT,r])),t.prevDiff=r}},l=function(e){t.evCache.push(e)},s=function(e){u(e),t.evCache.length<2&&(t.prevDiff=-1)},u=function(e){for(var n=0;n<t.evCache.length;n++)if(t.evCache[n].pointerId==e.pointerId){t.evCache.splice(n,1);break}};return(0,r.useEffect)((function(){(null==e?void 0:e.current)&&(e.current.onpointerdown=l,e.current.onpointermove=i,e.current.onpointerup=s,e.current.onpointercancel=s,e.current.onpointerout=s,e.current.onpointerleave=s)}),[null==e?void 0:e.current]),a?{zoomingState:a[0],pinchState:a[1]}:{zoomingState:null,pinchState:0}};function yn(){return++(0,r.useRef)(0).current}const wn=function(e){void 0===e&&(e=new Set);var t=(0,r.useState)(e),n=t[0],a=t[1],o=(0,r.useMemo)((function(){return{add:function(e){return a((function(t){return new Set((0,d.__spreadArrays)(Array.from(t),[e]))}))},remove:function(e){return a((function(t){return new Set(Array.from(t).filter((function(t){return t!==e})))}))},toggle:function(e){return a((function(t){return t.has(e)?new Set(Array.from(t).filter((function(t){return t!==e}))):new Set((0,d.__spreadArrays)(Array.from(t),[e]))}))},reset:function(){return a(e)}}}),[a]),i=(0,d.__assign)({has:(0,r.useCallback)((function(e){return n.has(e)}),[n])},o);return[n,i]};function xn(e){var t={state:e instanceof Function?e():e,setState:function(e){t.state=H(e,t.state),t.setters.forEach((function(e){return e(t.state)}))},setters:[]};return function(){var e=(0,r.useState)(t.state),n=e[0],a=e[1];return le((function(){return function(){t.setters=t.setters.filter((function(e){return e!==a}))}})),Y((function(){t.setters.includes(a)||t.setters.push(a)})),[n,t.setState]}}var kn=function(){var e=(0,r.useState)((function(){return window.location.hash})),t=e[0],n=e[1],a=(0,r.useCallback)((function(){n(window.location.hash)}),[]);Me((function(){x(window,"hashchange",a)}),(function(){k(window,"hashchange",a)}));var o=(0,r.useCallback)((function(e){e!==t&&(window.location.hash=e)}),[t]);return[t,o]}},72408:(e,t,n)=>{"use strict";var r=n(27418),a=60103,o=60106;t.Fragment=60107,t.StrictMode=60108,t.Profiler=60114;var i=60109,l=60110,s=60112;t.Suspense=60113;var u=60115,c=60116;if("function"==typeof Symbol&&Symbol.for){var d=Symbol.for;a=d("react.element"),o=d("react.portal"),t.Fragment=d("react.fragment"),t.StrictMode=d("react.strict_mode"),t.Profiler=d("react.profiler"),i=d("react.provider"),l=d("react.context"),s=d("react.forward_ref"),t.Suspense=d("react.suspense"),u=d("react.memo"),c=d("react.lazy")}var f="function"==typeof Symbol&&Symbol.iterator;function p(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},m={};function g(e,t,n){this.props=e,this.context=t,this.refs=m,this.updater=n||h}function v(){}function b(e,t,n){this.props=e,this.context=t,this.refs=m,this.updater=n||h}g.prototype.isReactComponent={},g.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error(p(85));this.updater.enqueueSetState(this,e,t,"setState")},g.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},v.prototype=g.prototype;var y=b.prototype=new v;y.constructor=b,r(y,g.prototype),y.isPureReactComponent=!0;var w={current:null},x=Object.prototype.hasOwnProperty,k={key:!0,ref:!0,__self:!0,__source:!0};function _(e,t,n){var r,o={},i=null,l=null;if(null!=t)for(r in void 0!==t.ref&&(l=t.ref),void 0!==t.key&&(i=""+t.key),t)x.call(t,r)&&!k.hasOwnProperty(r)&&(o[r]=t[r]);var s=arguments.length-2;if(1===s)o.children=n;else if(1<s){for(var u=Array(s),c=0;c<s;c++)u[c]=arguments[c+2];o.children=u}if(e&&e.defaultProps)for(r in s=e.defaultProps)void 0===o[r]&&(o[r]=s[r]);return{$$typeof:a,type:e,key:i,ref:l,props:o,_owner:w.current}}function E(e){return"object"==typeof e&&null!==e&&e.$$typeof===a}var S=/\/+/g;function C(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,(function(e){return t[e]}))}(""+e.key):t.toString(36)}function T(e,t,n,r,i){var l=typeof e;"undefined"!==l&&"boolean"!==l||(e=null);var s=!1;if(null===e)s=!0;else switch(l){case"string":case"number":s=!0;break;case"object":switch(e.$$typeof){case a:case o:s=!0}}if(s)return i=i(s=e),e=""===r?"."+C(s,0):r,Array.isArray(i)?(n="",null!=e&&(n=e.replace(S,"$&/")+"/"),T(i,t,n,"",(function(e){return e}))):null!=i&&(E(i)&&(i=function(e,t){return{$$typeof:a,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(i,n+(!i.key||s&&s.key===i.key?"":(""+i.key).replace(S,"$&/")+"/")+e)),t.push(i)),1;if(s=0,r=""===r?".":r+":",Array.isArray(e))for(var u=0;u<e.length;u++){var c=r+C(l=e[u],u);s+=T(l,t,n,c,i)}else if(c=function(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=f&&e[f]||e["@@iterator"])?e:null}(e),"function"==typeof c)for(e=c.call(e),u=0;!(l=e.next()).done;)s+=T(l=l.value,t,n,c=r+C(l,u++),i);else if("object"===l)throw t=""+e,Error(p(31,"[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t));return s}function O(e,t,n){if(null==e)return e;var r=[],a=0;return T(e,r,"","",(function(e){return t.call(n,e,a++)})),r}function D(e){if(-1===e._status){var t=e._result;t=t(),e._status=0,e._result=t,t.then((function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)}),(function(t){0===e._status&&(e._status=2,e._result=t)}))}if(1===e._status)return e._result;throw e._result}var P={current:null};function N(){var e=P.current;if(null===e)throw Error(p(321));return e}var I={ReactCurrentDispatcher:P,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:w,IsSomeRendererActing:{current:!1},assign:r};t.Children={map:O,forEach:function(e,t,n){O(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return O(e,(function(){t++})),t},toArray:function(e){return O(e,(function(e){return e}))||[]},only:function(e){if(!E(e))throw Error(p(143));return e}},t.Component=g,t.PureComponent=b,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=I,t.cloneElement=function(e,t,n){if(null==e)throw Error(p(267,e));var o=r({},e.props),i=e.key,l=e.ref,s=e._owner;if(null!=t){if(void 0!==t.ref&&(l=t.ref,s=w.current),void 0!==t.key&&(i=""+t.key),e.type&&e.type.defaultProps)var u=e.type.defaultProps;for(c in t)x.call(t,c)&&!k.hasOwnProperty(c)&&(o[c]=void 0===t[c]&&void 0!==u?u[c]:t[c])}var c=arguments.length-2;if(1===c)o.children=n;else if(1<c){u=Array(c);for(var d=0;d<c;d++)u[d]=arguments[d+2];o.children=u}return{$$typeof:a,type:e.type,key:i,ref:l,props:o,_owner:s}},t.createContext=function(e,t){return void 0===t&&(t=null),(e={$$typeof:l,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:i,_context:e},e.Consumer=e},t.createElement=_,t.createFactory=function(e){var t=_.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:s,render:e}},t.isValidElement=E,t.lazy=function(e){return{$$typeof:c,_payload:{_status:-1,_result:e},_init:D}},t.memo=function(e,t){return{$$typeof:u,type:e,compare:void 0===t?null:t}},t.useCallback=function(e,t){return N().useCallback(e,t)},t.useContext=function(e,t){return N().useContext(e,t)},t.useDebugValue=function(){},t.useEffect=function(e,t){return N().useEffect(e,t)},t.useImperativeHandle=function(e,t,n){return N().useImperativeHandle(e,t,n)},t.useLayoutEffect=function(e,t){return N().useLayoutEffect(e,t)},t.useMemo=function(e,t){return N().useMemo(e,t)},t.useReducer=function(e,t,n){return N().useReducer(e,t,n)},t.useRef=function(e){return N().useRef(e)},t.useState=function(e){return N().useState(e)},t.version="17.0.2"},67294:(e,t,n)=>{"use strict";e.exports=n(72408)},60053:(e,t)=>{"use strict";var n,r,a,o;if("object"==typeof performance&&"function"==typeof performance.now){var i=performance;t.unstable_now=function(){return i.now()}}else{var l=Date,s=l.now();t.unstable_now=function(){return l.now()-s}}if("undefined"==typeof window||"function"!=typeof MessageChannel){var u=null,c=null,d=function(){if(null!==u)try{var e=t.unstable_now();u(!0,e),u=null}catch(n){throw setTimeout(d,0),n}};n=function(e){null!==u?setTimeout(n,0,e):(u=e,setTimeout(d,0))},r=function(e,t){c=setTimeout(e,t)},a=function(){clearTimeout(c)},t.unstable_shouldYield=function(){return!1},o=t.unstable_forceFrameRate=function(){}}else{var f=window.setTimeout,p=window.clearTimeout;if("undefined"!=typeof console){var h=window.cancelAnimationFrame;"function"!=typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),"function"!=typeof h&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")}var m=!1,g=null,v=-1,b=5,y=0;t.unstable_shouldYield=function(){return t.unstable_now()>=y},o=function(){},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):b=0<e?Math.floor(1e3/e):5};var w=new MessageChannel,x=w.port2;w.port1.onmessage=function(){if(null!==g){var e=t.unstable_now();y=e+b;try{g(!0,e)?x.postMessage(null):(m=!1,g=null)}catch(n){throw x.postMessage(null),n}}else m=!1},n=function(e){g=e,m||(m=!0,x.postMessage(null))},r=function(e,n){v=f((function(){e(t.unstable_now())}),n)},a=function(){p(v),v=-1}}function k(e,t){var n=e.length;e.push(t);e:for(;;){var r=n-1>>>1,a=e[r];if(!(void 0!==a&&0<S(a,t)))break e;e[r]=t,e[n]=a,n=r}}function _(e){return void 0===(e=e[0])?null:e}function E(e){var t=e[0];if(void 0!==t){var n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,a=e.length;r<a;){var o=2*(r+1)-1,i=e[o],l=o+1,s=e[l];if(void 0!==i&&0>S(i,n))void 0!==s&&0>S(s,i)?(e[r]=s,e[l]=n,r=l):(e[r]=i,e[o]=n,r=o);else{if(!(void 0!==s&&0>S(s,n)))break e;e[r]=s,e[l]=n,r=l}}}return t}return null}function S(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var C=[],T=[],O=1,D=null,P=3,N=!1,I=!1,A=!1;function L(e){for(var t=_(T);null!==t;){if(null===t.callback)E(T);else{if(!(t.startTime<=e))break;E(T),t.sortIndex=t.expirationTime,k(C,t)}t=_(T)}}function R(e){if(A=!1,L(e),!I)if(null!==_(C))I=!0,n(j);else{var t=_(T);null!==t&&r(R,t.startTime-e)}}function j(e,n){I=!1,A&&(A=!1,a()),N=!0;var o=P;try{for(L(n),D=_(C);null!==D&&(!(D.expirationTime>n)||e&&!t.unstable_shouldYield());){var i=D.callback;if("function"==typeof i){D.callback=null,P=D.priorityLevel;var l=i(D.expirationTime<=n);n=t.unstable_now(),"function"==typeof l?D.callback=l:D===_(C)&&E(C),L(n)}else E(C);D=_(C)}if(null!==D)var s=!0;else{var u=_(T);null!==u&&r(R,u.startTime-n),s=!1}return s}finally{D=null,P=o,N=!1}}var M=o;t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){I||N||(I=!0,n(j))},t.unstable_getCurrentPriorityLevel=function(){return P},t.unstable_getFirstCallbackNode=function(){return _(C)},t.unstable_next=function(e){switch(P){case 1:case 2:case 3:var t=3;break;default:t=P}var n=P;P=t;try{return e()}finally{P=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=M,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=P;P=e;try{return t()}finally{P=n}},t.unstable_scheduleCallback=function(e,o,i){var l=t.unstable_now();switch("object"==typeof i&&null!==i?i="number"==typeof(i=i.delay)&&0<i?l+i:l:i=l,e){case 1:var s=-1;break;case 2:s=250;break;case 5:s=1073741823;break;case 4:s=1e4;break;default:s=5e3}return e={id:O++,callback:o,priorityLevel:e,startTime:i,expirationTime:s=i+s,sortIndex:-1},i>l?(e.sortIndex=i,k(T,e),null===_(C)&&e===_(T)&&(A?a():A=!0,r(R,i-l))):(e.sortIndex=s,k(C,e),I||N||(I=!0,n(j))),e},t.unstable_wrapCallback=function(e){var t=P;return function(){var n=P;P=t;try{return e.apply(this,arguments)}finally{P=n}}}},63840:(e,t,n)=>{"use strict";e.exports=n(60053)},10577:e=>{!function(){"use strict";var t="undefined"!=typeof window&&void 0!==window.document?window.document:{},n=e.exports,r=function(){for(var e,n=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],r=0,a=n.length,o={};r<a;r++)if((e=n[r])&&e[1]in t){for(r=0;r<e.length;r++)o[n[0][r]]=e[r];return o}return!1}(),a={change:r.fullscreenchange,error:r.fullscreenerror},o={request:function(e,n){return new Promise(function(a,o){var i=function(){this.off("change",i),a()}.bind(this);this.on("change",i);var l=(e=e||t.documentElement)[r.requestFullscreen](n);l instanceof Promise&&l.then(i).catch(o)}.bind(this))},exit:function(){return new Promise(function(e,n){if(this.isFullscreen){var a=function(){this.off("change",a),e()}.bind(this);this.on("change",a);var o=t[r.exitFullscreen]();o instanceof Promise&&o.then(a).catch(n)}else e()}.bind(this))},toggle:function(e,t){return this.isFullscreen?this.exit():this.request(e,t)},onchange:function(e){this.on("change",e)},onerror:function(e){this.on("error",e)},on:function(e,n){var r=a[e];r&&t.addEventListener(r,n,!1)},off:function(e,n){var r=a[e];r&&t.removeEventListener(r,n,!1)},raw:r};r?(Object.defineProperties(o,{isFullscreen:{get:function(){return Boolean(t[r.fullscreenElement])}},element:{enumerable:!0,get:function(){return t[r.fullscreenElement]}},isEnabled:{enumerable:!0,get:function(){return Boolean(t[r.fullscreenEnabled])}}}),n?e.exports=o:window.screenfull=o):n?e.exports={isEnabled:!1}:window.screenfull={isEnabled:!1}}()},96774:e=>{e.exports=function(e,t,n,r){var a=n?n.call(r,e,t):void 0;if(void 0!==a)return!!a;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var o=Object.keys(e),i=Object.keys(t);if(o.length!==i.length)return!1;for(var l=Object.prototype.hasOwnProperty.bind(t),s=0;s<o.length;s++){var u=o[s];if(!l(u))return!1;var c=e[u],d=t[u];if(!1===(a=n?n.call(r,c,d,u):void 0)||void 0===a&&c!==d)return!1}return!0}},11742:e=>{e.exports=function(){var e=document.getSelection();if(!e.rangeCount)return function(){};for(var t=document.activeElement,n=[],r=0;r<e.rangeCount;r++)n.push(e.getRangeAt(r));switch(t.tagName.toUpperCase()){case"INPUT":case"TEXTAREA":t.blur();break;default:t=null}return e.removeAllRanges(),function(){"Caret"===e.type&&e.removeAllRanges(),e.rangeCount||n.forEach((function(t){e.addRange(t)})),t&&t.focus()}}},75534:(e,t)=>{"use strict";t.U={linear:function(e){return e},quadratic:function(e){return e*(-e*e*e+4*e*e-6*e+4)},cubic:function(e){return e*(4*e*e-9*e+6)},elastic:function(e){return e*(33*e*e*e*e-106*e*e*e+126*e*e-67*e+15)},inQuad:function(e){return e*e},outQuad:function(e){return e*(2-e)},inOutQuad:function(e){return e<.5?2*e*e:(4-2*e)*e-1},inCubic:function(e){return e*e*e},outCubic:function(e){return--e*e*e+1},inOutCubic:function(e){return e<.5?4*e*e*e:(e-1)*(2*e-2)*(2*e-2)+1},inQuart:function(e){return e*e*e*e},outQuart:function(e){return 1- --e*e*e*e},inOutQuart:function(e){return e<.5?8*e*e*e*e:1-8*--e*e*e*e},inQuint:function(e){return e*e*e*e*e},outQuint:function(e){return 1+--e*e*e*e*e},inOutQuint:function(e){return e<.5?16*e*e*e*e*e:1+16*--e*e*e*e*e},inSine:function(e){return 1-Math.cos(e*(Math.PI/2))},outSine:function(e){return Math.sin(e*(Math.PI/2))},inOutSine:function(e){return-(Math.cos(Math.PI*e)-1)/2},inExpo:function(e){return Math.pow(2,10*(e-1))},outExpo:function(e){return 1-Math.pow(2,-10*e)},inOutExpo:function(e){return(e/=.5)<1?Math.pow(2,10*(e-1))/2:(e--,(2-Math.pow(2,-10*e))/2)},inCirc:function(e){return 1-Math.sqrt(1-e*e)},outCirc:function(e){return Math.sqrt(1-(e-=1)*e)},inOutCirc:function(e){return(e/=.5)<1?-(Math.sqrt(1-e*e)-1)/2:(e-=2,(Math.sqrt(1-e*e)+1)/2)}}},70655:(e,t,n)=>{"use strict";n.r(t),n.d(t,{__assign:()=>o,__asyncDelegator:()=>S,__asyncGenerator:()=>E,__asyncValues:()=>C,__await:()=>_,__awaiter:()=>h,__classPrivateFieldGet:()=>N,__classPrivateFieldIn:()=>A,__classPrivateFieldSet:()=>I,__createBinding:()=>g,__decorate:()=>l,__esDecorate:()=>u,__exportStar:()=>v,__extends:()=>a,__generator:()=>m,__importDefault:()=>P,__importStar:()=>D,__makeTemplateObject:()=>T,__metadata:()=>p,__param:()=>s,__propKey:()=>d,__read:()=>y,__rest:()=>i,__runInitializers:()=>c,__setFunctionName:()=>f,__spread:()=>w,__spreadArray:()=>k,__spreadArrays:()=>x,__values:()=>b});var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)};function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var o=function(){return o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e},o.apply(this,arguments)};function i(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n}function l(e,t,n,r){var a,o=arguments.length,i=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(i=(o<3?a(i):o>3?a(t,n,i):a(t,n))||i);return o>3&&i&&Object.defineProperty(t,n,i),i}function s(e,t){return function(n,r){t(n,r,e)}}function u(e,t,n,r,a,o){function i(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var l,s=r.kind,u="getter"===s?"get":"setter"===s?"set":"value",c=!t&&e?r.static?e:e.prototype:null,d=t||(c?Object.getOwnPropertyDescriptor(c,r.name):{}),f=!1,p=n.length-1;p>=0;p--){var h={};for(var m in r)h[m]="access"===m?{}:r[m];for(var m in r.access)h.access[m]=r.access[m];h.addInitializer=function(e){if(f)throw new TypeError("Cannot add initializers after decoration has completed");o.push(i(e||null))};var g=(0,n[p])("accessor"===s?{get:d.get,set:d.set}:d[u],h);if("accessor"===s){if(void 0===g)continue;if(null===g||"object"!=typeof g)throw new TypeError("Object expected");(l=i(g.get))&&(d.get=l),(l=i(g.set))&&(d.set=l),(l=i(g.init))&&a.push(l)}else(l=i(g))&&("field"===s?a.push(l):d[u]=l)}c&&Object.defineProperty(c,r.name,d),f=!0}function c(e,t,n){for(var r=arguments.length>2,a=0;a<t.length;a++)n=r?t[a].call(e,n):t[a].call(e);return r?n:void 0}function d(e){return"symbol"==typeof e?e:"".concat(e)}function f(e,t,n){return"symbol"==typeof t&&(t=t.description?"[".concat(t.description,"]"):""),Object.defineProperty(e,"name",{configurable:!0,value:n?"".concat(n," ",t):t})}function p(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function h(e,t,n,r){return new(n||(n=Promise))((function(a,o){function i(e){try{s(r.next(e))}catch(t){o(t)}}function l(e){try{s(r.throw(e))}catch(t){o(t)}}function s(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,l)}s((r=r.apply(e,t||[])).next())}))}function m(e,t){var n,r,a,o,i={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return o={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function l(l){return function(s){return function(l){if(n)throw new TypeError("Generator is already executing.");for(;o&&(o=0,l[0]&&(i=0)),i;)try{if(n=1,r&&(a=2&l[0]?r.return:l[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,l[1])).done)return a;switch(r=0,a&&(l=[2&l[0],a.value]),l[0]){case 0:case 1:a=l;break;case 4:return i.label++,{value:l[1],done:!1};case 5:i.label++,r=l[1],l=[0];continue;case 7:l=i.ops.pop(),i.trys.pop();continue;default:if(!(a=i.trys,(a=a.length>0&&a[a.length-1])||6!==l[0]&&2!==l[0])){i=0;continue}if(3===l[0]&&(!a||l[1]>a[0]&&l[1]<a[3])){i.label=l[1];break}if(6===l[0]&&i.label<a[1]){i.label=a[1],a=l;break}if(a&&i.label<a[2]){i.label=a[2],i.ops.push(l);break}a[2]&&i.ops.pop(),i.trys.pop();continue}l=t.call(e,i)}catch(s){l=[6,s],r=0}finally{n=a=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}([l,s])}}}var g=Object.create?function(e,t,n,r){void 0===r&&(r=n);var a=Object.getOwnPropertyDescriptor(t,n);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,a)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]};function v(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||g(t,e,n)}function b(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function y(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,a,o=n.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)i.push(r.value)}catch(l){a={error:l}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(a)throw a.error}}return i}function w(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(y(arguments[t]));return e}function x(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var r=Array(e),a=0;for(t=0;t<n;t++)for(var o=arguments[t],i=0,l=o.length;i<l;i++,a++)r[a]=o[i];return r}function k(e,t,n){if(n||2===arguments.length)for(var r,a=0,o=t.length;a<o;a++)!r&&a in t||(r||(r=Array.prototype.slice.call(t,0,a)),r[a]=t[a]);return e.concat(r||Array.prototype.slice.call(t))}function _(e){return this instanceof _?(this.v=e,this):new _(e)}function E(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r,a=n.apply(e,t||[]),o=[];return r={},i("next"),i("throw"),i("return"),r[Symbol.asyncIterator]=function(){return this},r;function i(e){a[e]&&(r[e]=function(t){return new Promise((function(n,r){o.push([e,t,n,r])>1||l(e,t)}))})}function l(e,t){try{(n=a[e](t)).value instanceof _?Promise.resolve(n.value.v).then(s,u):c(o[0][2],n)}catch(r){c(o[0][3],r)}var n}function s(e){l("next",e)}function u(e){l("throw",e)}function c(e,t){e(t),o.shift(),o.length&&l(o[0][0],o[0][1])}}function S(e){var t,n;return t={},r("next"),r("throw",(function(e){throw e})),r("return"),t[Symbol.iterator]=function(){return this},t;function r(r,a){t[r]=e[r]?function(t){return(n=!n)?{value:_(e[r](t)),done:!1}:a?a(t):t}:a}}function C(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=b(e),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise((function(r,a){(function(e,t,n,r){Promise.resolve(r).then((function(t){e({value:t,done:n})}),t)})(r,a,(t=e[n](t)).done,t.value)}))}}}function T(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}var O=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t};function D(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&g(t,e,n);return O(t,e),t}function P(e){return e&&e.__esModule?e:{default:e}}function N(e,t,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(e):r?r.value:t.get(e)}function I(e,t,n,r,a){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!a)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!a:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?a.call(e,n):a?a.value=n:t.set(e,n),n}function A(e,t){if(null===t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("Cannot use 'in' operator on non-object");return"function"==typeof e?t===e:e.has(t)}},53250:(e,t,n)=>{"use strict";var r=n(67294);var a="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},o=r.useState,i=r.useEffect,l=r.useLayoutEffect,s=r.useDebugValue;function u(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!a(e,n)}catch(r){return!0}}var c="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var n=t(),r=o({inst:{value:n,getSnapshot:t}}),a=r[0].inst,c=r[1];return l((function(){a.value=n,a.getSnapshot=t,u(a)&&c({inst:a})}),[e,n,t]),i((function(){return u(a)&&c({inst:a}),e((function(){u(a)&&c({inst:a})}))}),[e]),s(n),n};t.useSyncExternalStore=void 0!==r.useSyncExternalStore?r.useSyncExternalStore:c},61688:(e,t,n)=>{"use strict";e.exports=n(53250)},36809:(e,t,n)=>{"use strict";n.d(t,{default:()=>r});const r={title:"Waku Documentation",url:"https://docs.waku.org",baseUrl:"/",onBrokenLinks:"throw",onBrokenMarkdownLinks:"warn",i18n:{defaultLocale:"en-GB",locales:["en-GB"],path:"i18n",localeConfigs:{}},presets:[["@acid-info/logos-docusaurus-preset",{businessUnit:"Waku",customSiteConfig:!0,docs:{routeBasePath:"/",path:"docs",sidebarPath:"/home/jenkins/workspace/website/dev-docs.waku.org/sidebars.js",editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/",showLastUpdateTime:!0,breadcrumbs:!1},theme:{name:"default",options:{customCss:["/home/jenkins/workspace/website/dev-docs.waku.org/src/css/custom.scss"]}}}]],staticDirectories:["static","/home/jenkins/workspace/website/dev-docs.waku.org/node_modules/@acid-info/logos-docusaurus-preset/static/common","/home/jenkins/workspace/website/dev-docs.waku.org/node_modules/@acid-info/logos-docusaurus-preset/static/Waku","/home/jenkins/workspace/website/dev-docs.waku.org/node_modules/@acid-info/logos-docusaurus-theme/lib/client/static/"],plugins:[["@acid-info/docusaurus-fathom",{siteId:"FUTMI",scriptUrl:"https://fathom.status.im/tracker.js"}]],themeConfig:{docs:{sidebar:{hideable:!1,autoCollapseCategories:!1},versionPersistence:"localStorage"},metadata:[{name:"keywords",content:"waku, web3"},{name:"description",content:"Waku is the communication layer for Web3. Decentralized communication that scales."},{name:"image",content:"theme/image/preview-image.png"}],colorMode:{disableSwitch:!1,defaultMode:"dark",respectPrefersColorScheme:!0},navbar:{title:"",logo:{alt:"Waku",src:"theme/image/logo-black.svg",srcDark:"theme/image/logo.svg",height:26},hideOnScroll:!0,items:[{type:"search",position:"left"},{type:"docSidebar",position:"left",sidebarId:"guides",label:"Guides"},{type:"docSidebar",position:"left",sidebarId:"learn",label:"Learn"},{type:"docSidebar",position:"left",sidebarId:"research",label:"Research"},{href:"https://discord.waku.org",position:"left",label:"Discord"},{href:"https://github.com/waku-org",position:"right",className:"header-github-link",title:"Waku GitHub repository"}]},footer:{logo:{alt:"Waku",src:"theme/image/logo.svg",href:"/",width:22},links:[{title:"Guides",items:[{to:"/",label:"Getting Started"},{to:"/guides/nwaku/run-node",label:"Run a Nwaku Node"},{to:"/guides/js-waku/",label:"JavaScript Waku SDK"}]},{title:"Community",items:[{href:"https://discord.waku.org/",label:"Discord"},{href:"https://twitter.com/waku_org/",label:"X"},{href:"https://t.me/waku_org/",label:"Telegram"},{href:"https://forum.vac.dev/",label:"Vac Forum"},{href:"https://github.com/waku-org/bounties/",label:"Bounties"}]},{title:"Resources",items:[{href:"https://github.com/waku-org/",label:"GitHub"},{href:"https://blog.waku.org/",label:"Blog"},{href:"https://rfc.vac.dev/",label:"Vac RFCs"},{href:"https://github.com/waku-org/awesome-waku/",label:"Awesome Waku"}]},{title:"Legal",items:[{href:"/terms",label:"Terms of Use"},{href:"/privacy-policy",label:"Privacy Policy"},{href:"/rules-of-engagement",label:"Rules of Engagement"}]},{title:"shared:Research",items:[{href:"https://vac.dev",label:"VacP2P"},{href:"https://afaik.institute",label:"AFAIK"}]},{title:"shared:Infrastructure",items:[{href:"https://waku.org/",label:"Waku"},{href:"https://nimbus.team/",label:"Nimbus"},{href:"https://codex.storage",label:"Codex"},{href:"https://nomos.tech",label:"Nomos"}]},{title:"shared:Creative Studio",items:[{href:"https://acid.info",label:"Acid.info"}]},{title:"shared:Movement",items:[{href:"https://logos.co",label:"Logos"}]},{title:"shared:User-facing products",items:[{href:"https://status.im",label:"Status"},{href:"https://keycard.tech",label:"Keycard"}]}],copyright:"Waku \xa9 2024<br/>All rights reserved.",style:"light"},prism:{theme:{plain:{color:"#000000",backgroundColor:"rgba(var(--lsd-surface-secondary), 0.08)"},styles:[{types:["comment"],style:{color:"rgb(0, 128, 0)"}},{types:["builtin"],style:{color:"rgb(0, 112, 193)"}},{types:["number","variable","inserted"],style:{color:"rgb(9, 134, 88)"}},{types:["operator"],style:{color:"rgb(0, 0, 0)"}},{types:["constant","char"],style:{color:"rgb(129, 31, 63)"}},{types:["tag"],style:{color:"rgb(128, 0, 0)"}},{types:["attr-name"],style:{color:"rgb(255, 0, 0)"}},{types:["deleted","string"],style:{color:"rgb(163, 21, 21)"}},{types:["changed","punctuation"],style:{color:"rgb(4, 81, 165)"}},{types:["function","keyword"],style:{color:"rgb(0, 0, 255)"}},{types:["class-name"],style:{color:"rgb(38, 127, 153)"}}]},darkTheme:{plain:{color:"#F8F8F2",backgroundColor:"rgba(var(--lsd-surface-secondary), 0.08)"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},additionalLanguages:[],magicComments:[{className:"theme-code-block-highlighted-line",line:"highlight-next-line",block:{start:"highlight-start",end:"highlight-end"}}]},tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3},mermaid:{theme:{dark:"dark",light:"default"},options:{}}},markdown:{mermaid:!0},baseUrlIssueBanner:!0,onDuplicateRoutes:"warn",customFields:{businessUnits:"Waku","logos-docusaurus-theme":{customCss:["/home/jenkins/workspace/website/dev-docs.waku.org/src/css/custom.scss"],docs:{},id:"default"}},themes:[],scripts:[],headTags:[],stylesheets:[],clientModules:[],tagline:"",titleDelimiter:"|",noIndex:!1,favicon:"theme/image/favicon.ico"}},87462:(e,t,n)=>{"use strict";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},r.apply(this,arguments)}n.d(t,{Z:()=>r})},75068:(e,t,n)=>{"use strict";function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}function a(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)}n.d(t,{Z:()=>a})},63366:(e,t,n)=>{"use strict";function r(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}n.d(t,{Z:()=>r})},38776:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=!0,a="Invariant failed";function o(e,t){if(!e){if(r)throw new Error(a);var n="function"==typeof t?t():t,o=n?"".concat(a,": ").concat(n):a;throw new Error(o)}}},57529:e=>{"use strict";e.exports={}},16887:e=>{"use strict";e.exports=JSON.parse('{"/-e04":{"__comp":"1be78505","__context":{"plugin":"3b0eafbc"},"versionMetadata":"935f2afb"},"/-0f1":{"__comp":"17896441","content":"c9ea0dcf"},"/guides/js-waku/-9af":{"__comp":"17896441","content":"488ca57d"},"/guides/js-waku/configure-discovery-dfe":{"__comp":"17896441","content":"4bb5c570"},"/guides/js-waku/debug-waku-dapp-c0d":{"__comp":"17896441","content":"e610d71e"},"/guides/js-waku/faq-1ad":{"__comp":"17896441","content":"a494bfbc"},"/guides/js-waku/light-send-receive-77b":{"__comp":"17896441","content":"c57f3997"},"/guides/js-waku/manage-filter-d72":{"__comp":"17896441","content":"0444839e"},"/guides/js-waku/message-encryption-d96":{"__comp":"17896441","content":"df28445d"},"/guides/js-waku/run-waku-nodejs-30f":{"__comp":"17896441","content":"0f1b9a4a"},"/guides/js-waku/store-retrieve-messages-1c5":{"__comp":"17896441","content":"1f1f54c7"},"/guides/js-waku/use-waku-create-app-76f":{"__comp":"17896441","content":"5277fe18"},"/guides/js-waku/use-waku-react-ed9":{"__comp":"17896441","content":"3b240eda"},"/guides/nwaku/build-source-995":{"__comp":"17896441","content":"f2470003"},"/guides/nwaku/config-methods-c44":{"__comp":"17896441","content":"80ec2a43"},"/guides/nwaku/config-options-def":{"__comp":"17896441","content":"8eff6037"},"/guides/nwaku/configure-discovery-a6b":{"__comp":"17896441","content":"8a655033"},"/guides/nwaku/configure-nwaku-a95":{"__comp":"17896441","content":"60832973"},"/guides/nwaku/faq-ad1":{"__comp":"17896441","content":"20987266"},"/guides/nwaku/run-docker-d03":{"__comp":"17896441","content":"6e8bfb6f"},"/guides/nwaku/run-docker-compose-ca4":{"__comp":"17896441","content":"7c28fd94"},"/guides/nwaku/run-node-9f1":{"__comp":"17896441","content":"406e0176"},"/learn/concepts/content-topics-45b":{"__comp":"17896441","content":"c764ec94"},"/learn/concepts/discv5-01f":{"__comp":"17896441","content":"2f51beae"},"/learn/concepts/dns-discovery-c5b":{"__comp":"17896441","content":"a44b8792"},"/learn/concepts/network-domains-5d8":{"__comp":"17896441","content":"b54b2767"},"/learn/concepts/peer-discovery-913":{"__comp":"17896441","content":"6778e957"},"/learn/concepts/peer-exchange-e58":{"__comp":"17896441","content":"80a3009a"},"/learn/concepts/protocols-13a":{"__comp":"17896441","content":"fb5ea66b"},"/learn/concepts/static-peers-9c6":{"__comp":"17896441","content":"e63bb37c"},"/learn/concepts/transports-6fb":{"__comp":"17896441","content":"ef85d46a"},"/learn/faq-74d":{"__comp":"17896441","content":"1067bd84"},"/learn/glossary-cf5":{"__comp":"17896441","content":"4aba8864"},"/learn/research-13c":{"__comp":"17896441","content":"6c6e315a"},"/learn/security-features-72b":{"__comp":"17896441","content":"606377f0"},"/learn/waku-network-f0c":{"__comp":"17896441","content":"b99d0044"},"/learn/waku-vs-libp2p-c45":{"__comp":"17896441","content":"41a4e09e"},"/privacy-policy-4cd":{"__comp":"17896441","content":"8c5da4da"},"/research/-e8b":{"__comp":"17896441","content":"f7974e9c"},"/research/benchmarks/postgres-adoption-563":{"__comp":"17896441","content":"e168415d"},"/research/research-and-studies/capped-bandwidth-ee6":{"__comp":"17896441","content":"97983a7b"},"/research/research-and-studies/incentivisation-d49":{"__comp":"17896441","content":"4e726341"},"/research/research-and-studies/maximum-bandwidth-80a":{"__comp":"17896441","content":"df0a719b"},"/research/research-and-studies/message-propagation-46a":{"__comp":"17896441","content":"3fbcf129"},"/research/research-and-studies/rln-key-benchmarks-5d8":{"__comp":"17896441","content":"1236ce69"},"/rules-of-engagement-0fc":{"__comp":"17896441","content":"d53fc737"},"/terms-37d":{"__comp":"17896441","content":"500a151f"}}')}},e=>{e.O(0,[532],(()=>{return t=91091,e(e.s=t);var t}));e.O()}]); \ No newline at end of file diff --git a/assets/js/runtime~main.1ad26c97.js b/assets/js/runtime~main.1ad26c97.js deleted file mode 100644 index 48c7cec..0000000 --- a/assets/js/runtime~main.1ad26c97.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";var e,a,f,t,r,d={},b={};function c(e){var a=b[e];if(void 0!==a)return a.exports;var f=b[e]={id:e,loaded:!1,exports:{}};return d[e].call(f.exports,f,f.exports,c),f.loaded=!0,f.exports}c.m=d,c.c=b,e=[],c.O=(a,f,t,r)=>{if(!f){var d=1/0;for(i=0;i<e.length;i++){f=e[i][0],t=e[i][1],r=e[i][2];for(var b=!0,o=0;o<f.length;o++)(!1&r||d>=r)&&Object.keys(c.O).every((e=>c.O[e](f[o])))?f.splice(o--,1):(b=!1,r<d&&(d=r));if(b){e.splice(i--,1);var n=t();void 0!==n&&(a=n)}}return a}r=r||0;for(var i=e.length;i>0&&e[i-1][2]>r;i--)e[i]=e[i-1];e[i]=[f,t,r]},c.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return c.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,c.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var r=Object.create(null);c.r(r);var d={};a=a||[null,f({}),f([]),f(f)];for(var b=2&t&&e;"object"==typeof b&&!~a.indexOf(b);b=f(b))Object.getOwnPropertyNames(b).forEach((a=>d[a]=()=>e[a]));return d.default=()=>e,c.d(r,d),r},c.d=(e,a)=>{for(var f in a)c.o(a,f)&&!c.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},c.f={},c.e=e=>Promise.all(Object.keys(c.f).reduce(((a,f)=>(c.f[f](e,a),a)),[])),c.u=e=>"assets/js/"+({53:"935f2afb",161:"4bb5c570",175:"0444839e",231:"2f51beae",357:"4aba8864",617:"e610d71e",727:"b54b2767",906:"7c28fd94",1201:"b99d0044",1374:"5277fe18",1385:"8a655033",1923:"8c5da4da",1937:"97983a7b",2285:"1f1f54c7",2355:"df28445d",2588:"4e726341",2675:"a494bfbc",2811:"f2470003",2941:"c9ea0dcf",3076:"c764ec94",3116:"80a3009a",3178:"3b240eda",3235:"1236ce69",3292:"6778e957",3634:"80ec2a43",3855:"406e0176",4545:"500a151f",5158:"0f1b9a4a",5306:"e168415d",5447:"1067bd84",5740:"fb5ea66b",5787:"a44b8792",5832:"606377f0",5838:"f7974e9c",5844:"8eff6037",6059:"df0a719b",6167:"3b0eafbc",6321:"e63bb37c",6471:"d53fc737",6512:"6e8bfb6f",6618:"ef85d46a",6839:"488ca57d",7304:"60832973",7442:"20987266",7683:"c57f3997",7918:"17896441",8173:"3fbcf129",8319:"6c6e315a",9169:"41a4e09e",9514:"1be78505"}[e]||e)+"."+{53:"8b3c9a0d",161:"9aea5de5",175:"e93ff02a",231:"30097b0e",357:"2a78a1c0",617:"365aa55a",727:"cefd340c",906:"0e9f43e3",1201:"2d548166",1374:"12068a2f",1385:"e68ea003",1923:"4d4d7c9b",1937:"214ae4ba",2285:"3e32bfbb",2355:"fe682b5d",2568:"2380ad9e",2588:"f7167ffc",2675:"625a47e1",2811:"7d961fa4",2941:"f1cadf12",3076:"5884ee09",3116:"cbca04d0",3178:"95c52b37",3235:"9e98a0a1",3292:"17e97b76",3634:"8724ba59",3855:"52445de5",4545:"01e42fd8",4881:"a6f0238e",5158:"3c262cd0",5306:"3521b498",5447:"850bfa0d",5740:"c3732c53",5787:"24d52410",5832:"580ec420",5838:"d07c54f9",5844:"5028817a",6059:"d07d3a9d",6167:"8d8cfda4",6316:"3369c858",6321:"a162a954",6471:"9a7348b2",6512:"fc30110e",6618:"d78ec69c",6839:"84c615b3",7304:"4d77b4c2",7442:"5ff7d2d6",7683:"2d36c3b2",7724:"3b85eed4",7918:"37881d61",8173:"95c152b1",8319:"0aae848c",9169:"b0acfbee",9487:"434e6b9b",9514:"f2d7708f"}[e]+".js",c.miniCssF=e=>{},c.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),c.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),t={},r="waku-guide:",c.l=(e,a,f,d)=>{if(t[e])t[e].push(a);else{var b,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i<n.length;i++){var u=n[i];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==r+f){b=u;break}}b||(o=!0,(b=document.createElement("script")).charset="utf-8",b.timeout=120,c.nc&&b.setAttribute("nonce",c.nc),b.setAttribute("data-webpack",r+f),b.src=e),t[e]=[a];var l=(a,f)=>{b.onerror=b.onload=null,clearTimeout(s);var r=t[e];if(delete t[e],b.parentNode&&b.parentNode.removeChild(b),r&&r.forEach((e=>e(f))),a)return a(f)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:b}),12e4);b.onerror=l.bind(null,b.onerror),b.onload=l.bind(null,b.onload),o&&document.head.appendChild(b)}},c.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},c.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),c.p="/",c.gca=function(e){return e={17896441:"7918",20987266:"7442",60832973:"7304","935f2afb":"53","4bb5c570":"161","0444839e":"175","2f51beae":"231","4aba8864":"357",e610d71e:"617",b54b2767:"727","7c28fd94":"906",b99d0044:"1201","5277fe18":"1374","8a655033":"1385","8c5da4da":"1923","97983a7b":"1937","1f1f54c7":"2285",df28445d:"2355","4e726341":"2588",a494bfbc:"2675",f2470003:"2811",c9ea0dcf:"2941",c764ec94:"3076","80a3009a":"3116","3b240eda":"3178","1236ce69":"3235","6778e957":"3292","80ec2a43":"3634","406e0176":"3855","500a151f":"4545","0f1b9a4a":"5158",e168415d:"5306","1067bd84":"5447",fb5ea66b:"5740",a44b8792:"5787","606377f0":"5832",f7974e9c:"5838","8eff6037":"5844",df0a719b:"6059","3b0eafbc":"6167",e63bb37c:"6321",d53fc737:"6471","6e8bfb6f":"6512",ef85d46a:"6618","488ca57d":"6839",c57f3997:"7683","3fbcf129":"8173","6c6e315a":"8319","41a4e09e":"9169","1be78505":"9514"}[e]||e,c.p+c.u(e)},(()=>{var e={1303:0,532:0};c.f.j=(a,f)=>{var t=c.o(e,a)?e[a]:void 0;if(0!==t)if(t)f.push(t[2]);else if(/^(1303|532)$/.test(a))e[a]=0;else{var r=new Promise(((f,r)=>t=e[a]=[f,r]));f.push(t[2]=r);var d=c.p+c.u(a),b=new Error;c.l(d,(f=>{if(c.o(e,a)&&(0!==(t=e[a])&&(e[a]=void 0),t)){var r=f&&("load"===f.type?"missing":f.type),d=f&&f.target&&f.target.src;b.message="Loading chunk "+a+" failed.\n("+r+": "+d+")",b.name="ChunkLoadError",b.type=r,b.request=d,t[1](b)}}),"chunk-"+a,a)}},c.O.j=a=>0===e[a];var a=(a,f)=>{var t,r,d=f[0],b=f[1],o=f[2],n=0;if(d.some((a=>0!==e[a]))){for(t in b)c.o(b,t)&&(c.m[t]=b[t]);if(o)var i=o(c)}for(a&&a(f);n<d.length;n++)r=d[n],c.o(e,r)&&e[r]&&e[r][0](),e[r]=0;return c.O(i)},f=self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[];f.forEach(a.bind(null,0)),f.push=a.bind(null,f.push.bind(f))})()})(); \ No newline at end of file diff --git a/assets/js/runtime~main.49e12451.js b/assets/js/runtime~main.49e12451.js new file mode 100644 index 0000000..517946b --- /dev/null +++ b/assets/js/runtime~main.49e12451.js @@ -0,0 +1 @@ +(()=>{"use strict";var e,a,f,t,r,b={},c={};function d(e){var a=c[e];if(void 0!==a)return a.exports;var f=c[e]={id:e,loaded:!1,exports:{}};return b[e].call(f.exports,f,f.exports,d),f.loaded=!0,f.exports}d.m=b,d.c=c,e=[],d.O=(a,f,t,r)=>{if(!f){var b=1/0;for(i=0;i<e.length;i++){f=e[i][0],t=e[i][1],r=e[i][2];for(var c=!0,o=0;o<f.length;o++)(!1&r||b>=r)&&Object.keys(d.O).every((e=>d.O[e](f[o])))?f.splice(o--,1):(c=!1,r<b&&(b=r));if(c){e.splice(i--,1);var n=t();void 0!==n&&(a=n)}}return a}r=r||0;for(var i=e.length;i>0&&e[i-1][2]>r;i--)e[i]=e[i-1];e[i]=[f,t,r]},d.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return d.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,d.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var r=Object.create(null);d.r(r);var b={};a=a||[null,f({}),f([]),f(f)];for(var c=2&t&&e;"object"==typeof c&&!~a.indexOf(c);c=f(c))Object.getOwnPropertyNames(c).forEach((a=>b[a]=()=>e[a]));return b.default=()=>e,d.d(r,b),r},d.d=(e,a)=>{for(var f in a)d.o(a,f)&&!d.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},d.f={},d.e=e=>Promise.all(Object.keys(d.f).reduce(((a,f)=>(d.f[f](e,a),a)),[])),d.u=e=>"assets/js/"+({53:"935f2afb",101:"b551b2b5",161:"4bb5c570",175:"0444839e",231:"2f51beae",357:"4aba8864",617:"e610d71e",727:"b54b2767",906:"7c28fd94",1201:"b99d0044",1374:"5277fe18",1385:"8a655033",1923:"8c5da4da",1937:"97983a7b",2285:"1f1f54c7",2355:"df28445d",2588:"4e726341",2675:"a494bfbc",2811:"f2470003",2941:"c9ea0dcf",3076:"c764ec94",3116:"80a3009a",3178:"3b240eda",3235:"1236ce69",3292:"6778e957",3634:"80ec2a43",3855:"406e0176",4545:"500a151f",5158:"0f1b9a4a",5306:"e168415d",5447:"1067bd84",5740:"fb5ea66b",5787:"a44b8792",5832:"606377f0",5838:"f7974e9c",5844:"8eff6037",6059:"df0a719b",6167:"3b0eafbc",6321:"e63bb37c",6471:"d53fc737",6512:"6e8bfb6f",6618:"ef85d46a",6839:"488ca57d",7304:"60832973",7442:"20987266",7683:"c57f3997",7918:"17896441",8173:"3fbcf129",8319:"6c6e315a",9169:"41a4e09e",9514:"1be78505"}[e]||e)+"."+{53:"6b05d487",101:"0fbd8316",161:"9aea5de5",175:"e93ff02a",231:"805c3453",357:"449560fb",617:"365aa55a",727:"cefd340c",906:"b39bfc8f",1201:"8e944340",1374:"12068a2f",1385:"0ca2bbe1",1923:"4d4d7c9b",1937:"214ae4ba",2285:"5f12efa7",2355:"fe682b5d",2568:"2380ad9e",2588:"f7167ffc",2675:"625a47e1",2811:"7d961fa4",2941:"0032e3c1",3076:"db763f0f",3116:"a9c45f09",3178:"95c52b37",3235:"9e98a0a1",3292:"17e97b76",3634:"411fafd5",3855:"849f2378",4545:"01e42fd8",4881:"a6f0238e",5158:"3c262cd0",5306:"3521b498",5447:"850bfa0d",5740:"59c6536a",5787:"283e071b",5832:"753fc738",5838:"92d2b8a1",5844:"5028817a",6059:"d07d3a9d",6167:"8d8cfda4",6316:"3369c858",6321:"a162a954",6471:"9a7348b2",6512:"bf5d76ca",6618:"d78ec69c",6839:"84c615b3",7304:"4d77b4c2",7442:"5ff7d2d6",7683:"2d36c3b2",7724:"3b85eed4",7918:"37881d61",8173:"95c152b1",8319:"741b14f0",9169:"b0acfbee",9487:"434e6b9b",9514:"f2d7708f"}[e]+".js",d.miniCssF=e=>{},d.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),d.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),t={},r="waku-guide:",d.l=(e,a,f,b)=>{if(t[e])t[e].push(a);else{var c,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i<n.length;i++){var u=n[i];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==r+f){c=u;break}}c||(o=!0,(c=document.createElement("script")).charset="utf-8",c.timeout=120,d.nc&&c.setAttribute("nonce",d.nc),c.setAttribute("data-webpack",r+f),c.src=e),t[e]=[a];var l=(a,f)=>{c.onerror=c.onload=null,clearTimeout(s);var r=t[e];if(delete t[e],c.parentNode&&c.parentNode.removeChild(c),r&&r.forEach((e=>e(f))),a)return a(f)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=l.bind(null,c.onerror),c.onload=l.bind(null,c.onload),o&&document.head.appendChild(c)}},d.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},d.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),d.p="/",d.gca=function(e){return e={17896441:"7918",20987266:"7442",60832973:"7304","935f2afb":"53",b551b2b5:"101","4bb5c570":"161","0444839e":"175","2f51beae":"231","4aba8864":"357",e610d71e:"617",b54b2767:"727","7c28fd94":"906",b99d0044:"1201","5277fe18":"1374","8a655033":"1385","8c5da4da":"1923","97983a7b":"1937","1f1f54c7":"2285",df28445d:"2355","4e726341":"2588",a494bfbc:"2675",f2470003:"2811",c9ea0dcf:"2941",c764ec94:"3076","80a3009a":"3116","3b240eda":"3178","1236ce69":"3235","6778e957":"3292","80ec2a43":"3634","406e0176":"3855","500a151f":"4545","0f1b9a4a":"5158",e168415d:"5306","1067bd84":"5447",fb5ea66b:"5740",a44b8792:"5787","606377f0":"5832",f7974e9c:"5838","8eff6037":"5844",df0a719b:"6059","3b0eafbc":"6167",e63bb37c:"6321",d53fc737:"6471","6e8bfb6f":"6512",ef85d46a:"6618","488ca57d":"6839",c57f3997:"7683","3fbcf129":"8173","6c6e315a":"8319","41a4e09e":"9169","1be78505":"9514"}[e]||e,d.p+d.u(e)},(()=>{var e={1303:0,532:0};d.f.j=(a,f)=>{var t=d.o(e,a)?e[a]:void 0;if(0!==t)if(t)f.push(t[2]);else if(/^(1303|532)$/.test(a))e[a]=0;else{var r=new Promise(((f,r)=>t=e[a]=[f,r]));f.push(t[2]=r);var b=d.p+d.u(a),c=new Error;d.l(b,(f=>{if(d.o(e,a)&&(0!==(t=e[a])&&(e[a]=void 0),t)){var r=f&&("load"===f.type?"missing":f.type),b=f&&f.target&&f.target.src;c.message="Loading chunk "+a+" failed.\n("+r+": "+b+")",c.name="ChunkLoadError",c.type=r,c.request=b,t[1](c)}}),"chunk-"+a,a)}},d.O.j=a=>0===e[a];var a=(a,f)=>{var t,r,b=f[0],c=f[1],o=f[2],n=0;if(b.some((a=>0!==e[a]))){for(t in c)d.o(c,t)&&(d.m[t]=c[t]);if(o)var i=o(d)}for(a&&a(f);n<b.length;n++)r=b[n],d.o(e,r)&&e[r]&&e[r][0](),e[r]=0;return d.O(i)},f=self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[];f.forEach(a.bind(null,0)),f.push=a.bind(null,f.push.bind(f))})()})(); \ No newline at end of file diff --git a/build.json b/build.json index d985795..558d893 100644 --- a/build.json +++ b/build.json @@ -1,15 +1,15 @@ { - "timestamp": "2024-05-16T14:26:53Z", + "timestamp": "2024-05-16T17:24:12Z", "git": { - "commit": "ff5464b7d3ac3562416b90ba327ec2a9a5508dd3", + "commit": "1107ac3ae13c3099716bca21b62721e762e2d2a7", "branch": "origin/develop", "url": "git@github.com:waku-org/docs.waku.org.git" }, "build": { - "id": "141", - "number": "141", + "id": "142", + "number": "142", "name": "website/dev-docs.waku.org", "slave": "linux-02", - "url": "https://ci.infra.status.im/job/website/job/dev-docs.waku.org/141/" + "url": "https://ci.infra.status.im/job/website/job/dev-docs.waku.org/142/" } } \ No newline at end of file diff --git a/guides/js-waku/configure-discovery/index.html b/guides/js-waku/configure-discovery/index.html index f8984bc..c6a28e6 100644 --- a/guides/js-waku/configure-discovery/index.html +++ b/guides/js-waku/configure-discovery/index.html @@ -4,9 +4,9 @@ <meta charset="UTF-8"> <meta name="generator" content="Docusaurus v2.4.1"> <title data-rh="true">Bootstrap Nodes and Discover Peers | Waku Documentation - - - + + +
@@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Bootstrap Nodes and Discover Peers

This guide provides detailed steps to bootstrap your your node using Static Peers and discover peers in the Waku Network using DNS Discovery.

info

If you do not set up a bootstrap node or discovery mechanism, your node will not connect to any remote peer.

tip

Until node incentivisation is in place, you should operate extra nodes alongside the ones provided by the Waku Network. When running a node, we recommend using the DNS Discovery and Static Peers configuration to connect to both the Waku Network and your node.

Default bootstrap method

The @waku/sdk package provides a built-in bootstrapping method that uses DNS Discovery to locate peers from the waku v2.prod ENR tree.

import { createLightNode } from "@waku/sdk";

// Bootstrap node using the default bootstrap method
const node = await createLightNode({ defaultBootstrap: true });

Configure static peers

To set static peers, a list of multiaddr to bootstrap the node should be passed to the bootstrapPeers parameter of the createLightNode() function:

import { createLightNode } from "@waku/sdk";

// Bootstrap node using static peers
const node = await createLightNode({
bootstrapPeers: ["[PEER MULTIADDR]"],
});

For example, consider a node that connects to two static peers on the same local host (IP: 0.0.0.0) using TCP ports 60002 and 60003 with WebSocket enabled:

// Define the list of static peers to bootstrap
const peers = [
"/ip4/0.0.0.0/tcp/60002/ws/p2p/16Uiu2HAkzjwwgEAXfeGNMKFPSpc6vGBRqCdTLG5q3Gmk2v4pQw7H",
"/ip4/0.0.0.0/tcp/60003/ws/p2p/16Uiu2HAmFBA7LGtwY5WVVikdmXVo3cKLqkmvVtuDu63fe8safeQJ",
];

// Bootstrap node using the static peers
const node = await createLightNode({
bootstrapPeers: peers,
});
tip

For local development using a nwaku node, use a ws address instead of wss. Remember that this setup is functional only when your web server is running locally.

Configure DNS discovery

To bootstrap a node using DNS Discovery, first install the @waku/dns-discovery package:

npm install @waku/dns-discovery
yarn add @waku/dns-discovery

Then, use the wakuDnsDiscovery() function to provide a list of URLs for DNS node list in the format enrtree://<key>@<fqdn>:

import { createLightNode } from "@waku/sdk";
import { wakuDnsDiscovery } from "@waku/dns-discovery";

// Define DNS node list
const enrTree = "enrtree://[PUBLIC KEY]@[DOMAIN NAME]";

// Define node requirements
const NODE_REQUIREMENTS = {
store: 3,
lightPush: 3,
filter: 3,
};

// Bootstrap node using DNS Discovery
const node = await createLightNode({
libp2p: {
peerDiscovery: [
wakuDnsDiscovery(
[enrTree],
NODE_REQUIREMENTS,
),
],
},
});

For example, consider a node that uses the waku v2.prod and waku v2.test ENR trees for DNS Discovery:

import { enrTree } from "@waku/dns-discovery";

// Bootstrap node using DNS Discovery
const node = await createLightNode({
libp2p: {
peerDiscovery: [
wakuDnsDiscovery(
[enrTree["PROD"], enrTree["TEST"]],
NODE_REQUIREMENTS,
),
],
},
});

Configure DNS discovery and static peers

You can also bootstrap your node using DNS Discovery and Static Peers simultaneously:

import { createLightNode } from "@waku/sdk";
import { bootstrap } from "@libp2p/bootstrap";
import { enrTree, wakuDnsDiscovery } from "@waku/dns-discovery";

// Define the list of static peers to bootstrap
const peers = [
"/ip4/0.0.0.0/tcp/60002/ws/p2p/16Uiu2HAkzjwwgEAXfeGNMKFPSpc6vGBRqCdTLG5q3Gmk2v4pQw7H",
"/ip4/0.0.0.0/tcp/60003/ws/p2p/16Uiu2HAmFBA7LGtwY5WVVikdmXVo3cKLqkmvVtuDu63fe8safeQJ",
];

// Define node requirements
const NODE_REQUIREMENTS = {
store: 3,
lightPush: 3,
filter: 3,
};

// Bootstrap node using DNS Discovery and static peers
const node = await createLightNode({
libp2p: {
bootstrapPeers: peers,
peerDiscovery: [
wakuDnsDiscovery(
[enrTree["PROD"]],
NODE_REQUIREMENTS,
),
],
},
});

Retrieving connected peers

You can retrieve the array of peers connected to a node using the libp2p.getPeers() function within the @waku/sdk package:

import { createLightNode, waitForRemotePeer } from "@waku/sdk";

const node = await createLightNode({ defaultBootstrap: true });
await waitForRemotePeer(node);

// Retrieve array of peers connected to the node
console.log(node.libp2p.getPeers());
- - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Bootstrap Nodes and Discover Peers

This guide provides detailed steps to bootstrap your your node using Static Peers and discover peers in the Waku Network using DNS Discovery.

info

If you do not set up a bootstrap node or discovery mechanism, your node will not connect to any remote peer.

tip

Until node incentivisation is in place, you should operate extra nodes alongside the ones provided by the Waku Network. When running a node, we recommend using the DNS Discovery and Static Peers configuration to connect to both the Waku Network and your node.

Default bootstrap method

The @waku/sdk package provides a built-in bootstrapping method that uses DNS Discovery to locate peers from the waku v2.prod ENR tree.

import { createLightNode } from "@waku/sdk";

// Bootstrap node using the default bootstrap method
const node = await createLightNode({ defaultBootstrap: true });

Configure static peers

To set static peers, a list of multiaddr to bootstrap the node should be passed to the bootstrapPeers parameter of the createLightNode() function:

import { createLightNode } from "@waku/sdk";

// Bootstrap node using static peers
const node = await createLightNode({
bootstrapPeers: ["[PEER MULTIADDR]"],
});

For example, consider a node that connects to two static peers on the same local host (IP: 0.0.0.0) using TCP ports 60002 and 60003 with WebSocket enabled:

// Define the list of static peers to bootstrap
const peers = [
"/ip4/0.0.0.0/tcp/60002/ws/p2p/16Uiu2HAkzjwwgEAXfeGNMKFPSpc6vGBRqCdTLG5q3Gmk2v4pQw7H",
"/ip4/0.0.0.0/tcp/60003/ws/p2p/16Uiu2HAmFBA7LGtwY5WVVikdmXVo3cKLqkmvVtuDu63fe8safeQJ",
];

// Bootstrap node using the static peers
const node = await createLightNode({
bootstrapPeers: peers,
});
tip

For local development using a nwaku node, use a ws address instead of wss. Remember that this setup is functional only when your web server is running locally.

Configure DNS discovery

To bootstrap a node using DNS Discovery, first install the @waku/dns-discovery package:

npm install @waku/dns-discovery
yarn add @waku/dns-discovery

Then, use the wakuDnsDiscovery() function to provide a list of URLs for DNS node list in the format enrtree://<key>@<fqdn>:

import { createLightNode } from "@waku/sdk";
import { wakuDnsDiscovery } from "@waku/dns-discovery";

// Define DNS node list
const enrTree = "enrtree://[PUBLIC KEY]@[DOMAIN NAME]";

// Define node requirements
const NODE_REQUIREMENTS = {
store: 3,
lightPush: 3,
filter: 3,
};

// Bootstrap node using DNS Discovery
const node = await createLightNode({
libp2p: {
peerDiscovery: [
wakuDnsDiscovery(
[enrTree],
NODE_REQUIREMENTS,
),
],
},
});

For example, consider a node that uses the waku v2.prod and waku v2.test ENR trees for DNS Discovery:

import { enrTree } from "@waku/dns-discovery";

// Bootstrap node using DNS Discovery
const node = await createLightNode({
libp2p: {
peerDiscovery: [
wakuDnsDiscovery(
[enrTree["PROD"], enrTree["TEST"]],
NODE_REQUIREMENTS,
),
],
},
});

Configure DNS discovery and static peers

You can also bootstrap your node using DNS Discovery and Static Peers simultaneously:

import { createLightNode } from "@waku/sdk";
import { bootstrap } from "@libp2p/bootstrap";
import { enrTree, wakuDnsDiscovery } from "@waku/dns-discovery";

// Define the list of static peers to bootstrap
const peers = [
"/ip4/0.0.0.0/tcp/60002/ws/p2p/16Uiu2HAkzjwwgEAXfeGNMKFPSpc6vGBRqCdTLG5q3Gmk2v4pQw7H",
"/ip4/0.0.0.0/tcp/60003/ws/p2p/16Uiu2HAmFBA7LGtwY5WVVikdmXVo3cKLqkmvVtuDu63fe8safeQJ",
];

// Define node requirements
const NODE_REQUIREMENTS = {
store: 3,
lightPush: 3,
filter: 3,
};

// Bootstrap node using DNS Discovery and static peers
const node = await createLightNode({
libp2p: {
bootstrapPeers: peers,
peerDiscovery: [
wakuDnsDiscovery(
[enrTree["PROD"]],
NODE_REQUIREMENTS,
),
],
},
});

Retrieving connected peers

You can retrieve the array of peers connected to a node using the libp2p.getPeers() function within the @waku/sdk package:

import { createLightNode, waitForRemotePeer } from "@waku/sdk";

const node = await createLightNode({ defaultBootstrap: true });
await waitForRemotePeer(node);

// Retrieve array of peers connected to the node
console.log(node.libp2p.getPeers());
+ + \ No newline at end of file diff --git a/guides/js-waku/debug-waku-dapp/index.html b/guides/js-waku/debug-waku-dapp/index.html index 903033a..82ef6b5 100644 --- a/guides/js-waku/debug-waku-dapp/index.html +++ b/guides/js-waku/debug-waku-dapp/index.html @@ -4,9 +4,9 @@ Debug Your Waku DApp and WebSocket | Waku Documentation - - - + + +
@@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Debug Your Waku DApp and WebSocket

This guide provides detailed steps to enable and use debug logs to troubleshoot your Waku DApp, whether in a NodeJS or browser environment and check your WebSocket connections in nwaku.

Enabling debug logs

When resolving issues in your Waku DApp, debug logs can be helpful. The @waku/sdk and libp2p packages use the debug tool to handle and show logs that help you debug effectively.

NodeJS environments

To enable debug logs for @waku/sdk on NodeJS, you must set the DEBUG environment variable. To only enable debug logs for @waku/sdk:

export DEBUG=waku*

To enable debug logs for both @waku/sdk and libp2p:

export DEBUG=waku*,libp2p*

To enable debug logs for all components:

export DEBUG=*

Browser environments

To view debug logs in your browser's console, modify the local storage and add the debug key. Here are guides for various modern browsers:

KEYVALUEDESCRIPTION
debugwaku*Enables @waku/sdk debug logs
debugwaku*,libp2p*Enables @waku/sdk and libp2p debug logs
debug*Enables all debug logs

Checking WebSocket setup

Nwaku provides native support for WebSocket (ws) and WebSocket Secure (wss) protocols. These are the only transports supported for connecting to the Waku Network via browsers.

It's important to note that browsers impose certain limitations on WebSocket usage:

  • Secure Context Requirement: Insecure subroutines are prohibited in secure contexts. On an https:// webpage, only wss connections are permitted, while ws connections are not allowed. This restriction does not apply if the webpage is served locally, like on localhost or 127.0.0.1.
  • Certificate Validation: Certificate validation rules are consistent for https and wss connections. Certificates must not be expired, issued by a recognized Certificate Authority (CA), and match the domain name, among other criteria.
  • User Feedback on Errors: Web browsers do not display errors related to subroutines to the user. If a WebSocket connection encounters an issue, users won't be alerted directly; you'll need to check the browser's console for error details.

If you encounter difficulties when connecting to a remote node using wss, follow these steps:

Try Websocat for connection

Attempt to connect using websocat, a tool for WebSocket interactions. Test the WebSocket port using the command:

websocat -v wss://[WEBSOCKET HOST]:[WEBSOCKET PORT]

For example, consider a nwaku node with the multiaddr as /dns4/nwakunode.com/tcp/1234/wss/p2p/16...:

$ websocat -v wss://nwakunode.com:1234
# ...
[INFO websocat::ws_client_peer] Connected to ws

The connection works if the [INFO websocat::ws_client_peer] Connected to ws log entry appears. If not, check that the certificate is valid

Check certificate validity

Verify the certificate's validity by passing the -k or --insecure flag to handle invalid certificates in websocat:

websocat -v -k wss://nwakunode.com:1234

If this works, the certificate's invalidity is the problem, and you should investigate the cause of the error if not, check if the WebSocket port is accessible.

Check WebSocket port accessibility

Use telnet or another networking tool to verify if the WebSocket port is open and accessible. For example, if the multiaddr is /dns4/nwakunode.com/tcp/1234/wss/p2p/16..., use the command:

$ telnet nwakunode.com 1234
Trying 123.123.123.123...
Connected to nwakunode.com.
# ...

If the connection succeeds, there might be an issue with nwaku. Consider seeking support on the Waku Discord or raise an issue. If the connection fails, ensure that the WebSocket port is open.

- - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Debug Your Waku DApp and WebSocket

This guide provides detailed steps to enable and use debug logs to troubleshoot your Waku DApp, whether in a NodeJS or browser environment and check your WebSocket connections in nwaku.

Enabling debug logs

When resolving issues in your Waku DApp, debug logs can be helpful. The @waku/sdk and libp2p packages use the debug tool to handle and show logs that help you debug effectively.

NodeJS environments

To enable debug logs for @waku/sdk on NodeJS, you must set the DEBUG environment variable. To only enable debug logs for @waku/sdk:

export DEBUG=waku*

To enable debug logs for both @waku/sdk and libp2p:

export DEBUG=waku*,libp2p*

To enable debug logs for all components:

export DEBUG=*

Browser environments

To view debug logs in your browser's console, modify the local storage and add the debug key. Here are guides for various modern browsers:

KEYVALUEDESCRIPTION
debugwaku*Enables @waku/sdk debug logs
debugwaku*,libp2p*Enables @waku/sdk and libp2p debug logs
debug*Enables all debug logs

Checking WebSocket setup

Nwaku provides native support for WebSocket (ws) and WebSocket Secure (wss) protocols. These are the only transports supported for connecting to the Waku Network via browsers.

It's important to note that browsers impose certain limitations on WebSocket usage:

  • Secure Context Requirement: Insecure subroutines are prohibited in secure contexts. On an https:// webpage, only wss connections are permitted, while ws connections are not allowed. This restriction does not apply if the webpage is served locally, like on localhost or 127.0.0.1.
  • Certificate Validation: Certificate validation rules are consistent for https and wss connections. Certificates must not be expired, issued by a recognized Certificate Authority (CA), and match the domain name, among other criteria.
  • User Feedback on Errors: Web browsers do not display errors related to subroutines to the user. If a WebSocket connection encounters an issue, users won't be alerted directly; you'll need to check the browser's console for error details.

If you encounter difficulties when connecting to a remote node using wss, follow these steps:

Try Websocat for connection

Attempt to connect using websocat, a tool for WebSocket interactions. Test the WebSocket port using the command:

websocat -v wss://[WEBSOCKET HOST]:[WEBSOCKET PORT]

For example, consider a nwaku node with the multiaddr as /dns4/nwakunode.com/tcp/1234/wss/p2p/16...:

$ websocat -v wss://nwakunode.com:1234
# ...
[INFO websocat::ws_client_peer] Connected to ws

The connection works if the [INFO websocat::ws_client_peer] Connected to ws log entry appears. If not, check that the certificate is valid

Check certificate validity

Verify the certificate's validity by passing the -k or --insecure flag to handle invalid certificates in websocat:

websocat -v -k wss://nwakunode.com:1234

If this works, the certificate's invalidity is the problem, and you should investigate the cause of the error if not, check if the WebSocket port is accessible.

Check WebSocket port accessibility

Use telnet or another networking tool to verify if the WebSocket port is open and accessible. For example, if the multiaddr is /dns4/nwakunode.com/tcp/1234/wss/p2p/16..., use the command:

$ telnet nwakunode.com 1234
Trying 123.123.123.123...
Connected to nwakunode.com.
# ...

If the connection succeeds, there might be an issue with nwaku. Consider seeking support on the Waku Discord or raise an issue. If the connection fails, ensure that the WebSocket port is open.

+ + \ No newline at end of file diff --git a/guides/js-waku/faq/index.html b/guides/js-waku/faq/index.html index 10142d4..7d68eeb 100644 --- a/guides/js-waku/faq/index.html +++ b/guides/js-waku/faq/index.html @@ -4,9 +4,9 @@ JavaScript SDK FAQ | Waku Documentation - - - + + +
@@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

JavaScript SDK FAQ

You can add the JavaScript SDK to your project using NPM, Yarn, or a CDN. Check out the installation guide to get started.
Protocol Buffers ensure consistent formatting, interoperability, and backward compatibility for your application's messages, with a smaller payload size than JSON. Check out the installation guide and Protobuf documentation to learn more.
Check out the Retrieve Messages Using Store Protocol guide to learn how to retrieve and filter historical messages using the Store protocol.
When creating your message encoder, you can configure the ephemeral option to prevent Store peers from keeping your messages on the Waku Network.
You can encrypt and decrypt your messages using symmetric, ECIES, and noise encryption methods. Check out the Encrypt, Decrypt, and Sign Your Messages guide to get started.
Waku has a specialized SDK designed for building React applications. Check out the Build React DApps Using @waku/react guide for instructions on installation and usage.
The JavaScript SDK has a default bootstrap method that can be configured with Static Peers and DNS Discovery. Check out the Bootstrap Nodes and Discover Peers guide for setting up peer discovery for your node.
Though the JavaScript SDK isn't directly usable in NodeJS due to certain limitations, we recommend running nwaku in a Docker container and consuming its REST API in a NodeJS application.
Check out the Debug Your Waku DApp and WebSocket guide to discover how to use debug logs to troubleshoot your Waku DApp and resolve connection issues with nwaku WebSockets.
We recommend regularly pinging peers to check for an active connection and reinitiating the subscription when it disconnects. Check out the Manage Your Filter Subscriptions guide for a detailed explanation and step-by-step instructions.
While it's possible to transmit media such as images as bytes on Waku, we recommend uploading your media to a CDN or a file system like IPFS and then sharing the corresponding URL via Waku.
- - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

JavaScript SDK FAQ

You can add the JavaScript SDK to your project using NPM, Yarn, or a CDN. Check out the installation guide to get started.
Protocol Buffers ensure consistent formatting, interoperability, and backward compatibility for your application's messages, with a smaller payload size than JSON. Check out the installation guide and Protobuf documentation to learn more.
Check out the Retrieve Messages Using Store Protocol guide to learn how to retrieve and filter historical messages using the Store protocol.
When creating your message encoder, you can configure the ephemeral option to prevent Store peers from keeping your messages on the Waku Network.
You can encrypt and decrypt your messages using symmetric, ECIES, and noise encryption methods. Check out the Encrypt, Decrypt, and Sign Your Messages guide to get started.
Waku has a specialized SDK designed for building React applications. Check out the Build React DApps Using @waku/react guide for instructions on installation and usage.
The JavaScript SDK has a default bootstrap method that can be configured with Static Peers and DNS Discovery. Check out the Bootstrap Nodes and Discover Peers guide for setting up peer discovery for your node.
Though the JavaScript SDK isn't directly usable in NodeJS due to certain limitations, we recommend running nwaku in a Docker container and consuming its REST API in a NodeJS application.
Check out the Debug Your Waku DApp and WebSocket guide to discover how to use debug logs to troubleshoot your Waku DApp and resolve connection issues with nwaku WebSockets.
We recommend regularly pinging peers to check for an active connection and reinitiating the subscription when it disconnects. Check out the Manage Your Filter Subscriptions guide for a detailed explanation and step-by-step instructions.
While it's possible to transmit media such as images as bytes on Waku, we recommend uploading your media to a CDN or a file system like IPFS and then sharing the corresponding URL via Waku.
+ + \ No newline at end of file diff --git a/guides/js-waku/index.html b/guides/js-waku/index.html index 4edff28..9a5f2da 100644 --- a/guides/js-waku/index.html +++ b/guides/js-waku/index.html @@ -4,9 +4,9 @@ JavaScript Waku SDK | Waku Documentation - - - + + +
@@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

JavaScript Waku SDK

caution

Currently, the JavaScript Waku SDK (@waku/sdk) is NOT compatible with React Native. We plan to add support for React Native in the future.

The JavaScript Waku SDK (@waku/sdk) provides a TypeScript implementation of the Waku protocol designed for web browser environments. Developers can seamlessly integrate Waku functionalities into web applications, enabling efficient communication and collaboration among users using the @waku/sdk package.

Installation

Install the @waku/sdk package using your preferred package manager:

npm install @waku/sdk

You can also use the @waku/sdk package via a CDN without installing it on your system:

import * as waku from "https://unpkg.com/@waku/sdk@latest/bundle/index.js";

Message structure

We recommend creating a message structure for your application using Protocol Buffers for the following reasons:

  1. Consistency: Ensures uniform message format for easy parsing and processing.
  2. Interoperability: Facilitates effective communication between different parts of your application.
  3. Compatibility: Allows smooth communication between older and newer app versions.
  4. Payload Size: Minimizes payload overhead, especially for byte arrays, unlike JSON which adds significant overhead.

To get started, install the protobufjs package using your preferred package manager:

npm install protobufjs

You can also use the protobufjs package via a CDN without installing it on your system:

// Import the CDN
import "https://cdn.jsdelivr.net/npm/protobufjs@latest/dist/protobuf.min.js";
<!-- Or include the protobufjs script -->
<script src="https://cdn.jsdelivr.net/npm/protobufjs@latest/dist/protobuf.min.js"></script>

Getting started

Have a look at the quick start guide and comprehensive tutorials to learn how to build applications using @waku/sdk:

GuideDescription
Send and Receive Messages Using Light Push and FilterLearn how to send and receive messages on light nodes using the Light Push and Filter protocols
Retrieve Messages Using Store ProtocolLearn how to retrieve and filter historical messages on light nodes using the Store protocol
Encrypt, Decrypt, and Sign Your MessagesLearn how to use the @waku/message-encryption package to encrypt, decrypt, and sign your messages
Build React DApps Using @waku/reactLearn how to use the @waku/react package seamlessly integrate @waku/sdk into a React application
Scaffold DApps Using @waku/create-appLearn how to use the @waku/create-app package to bootstrap your next @waku/sdk project from various example templates
Bootstrap Nodes and Discover PeersLearn how to bootstrap your node using Static Peers and discover peers using DNS Discovery
Run @waku/sdk in a NodeJS ApplicationLearn our suggested approach for using the @waku/sdk package within a NodeJS application
Debug Your Waku DApp and WebSocketLearn how to troubleshoot your Waku DApp using debug logs and check WebSocket connections in nwaku
Manage Your Filter SubscriptionsLearn how to manage filter subscriptions and handle node disconnections in your application
tip

Until node incentivisation is in place, you should operate extra nodes alongside the ones provided by the Waku Network. When running a node, we recommend using the DNS Discovery and Static Peers configuration to connect to both the Waku Network and your node.

Get help and report issues

To engage in general discussions, seek assistance, or stay updated with the latest news, visit the #support and #js-waku-contribute channels on the Waku Discord.

If you discover bugs or want to suggest new features, do not hesitate to open an issue in the js-waku repository. Your feedback and contributions are highly valued and will help improve the @waku/sdk package.

- - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

JavaScript Waku SDK

caution

Currently, the JavaScript Waku SDK (@waku/sdk) is NOT compatible with React Native. We plan to add support for React Native in the future.

The JavaScript Waku SDK (@waku/sdk) provides a TypeScript implementation of the Waku protocol designed for web browser environments. Developers can seamlessly integrate Waku functionalities into web applications, enabling efficient communication and collaboration among users using the @waku/sdk package.

Installation

Install the @waku/sdk package using your preferred package manager:

npm install @waku/sdk

You can also use the @waku/sdk package via a CDN without installing it on your system:

import * as waku from "https://unpkg.com/@waku/sdk@latest/bundle/index.js";

Message structure

We recommend creating a message structure for your application using Protocol Buffers for the following reasons:

  1. Consistency: Ensures uniform message format for easy parsing and processing.
  2. Interoperability: Facilitates effective communication between different parts of your application.
  3. Compatibility: Allows smooth communication between older and newer app versions.
  4. Payload Size: Minimizes payload overhead, especially for byte arrays, unlike JSON which adds significant overhead.

To get started, install the protobufjs package using your preferred package manager:

npm install protobufjs

You can also use the protobufjs package via a CDN without installing it on your system:

// Import the CDN
import "https://cdn.jsdelivr.net/npm/protobufjs@latest/dist/protobuf.min.js";
<!-- Or include the protobufjs script -->
<script src="https://cdn.jsdelivr.net/npm/protobufjs@latest/dist/protobuf.min.js"></script>

Getting started

Have a look at the quick start guide and comprehensive tutorials to learn how to build applications using @waku/sdk:

GuideDescription
Send and Receive Messages Using Light Push and FilterLearn how to send and receive messages on light nodes using the Light Push and Filter protocols
Retrieve Messages Using Store ProtocolLearn how to retrieve and filter historical messages on light nodes using the Store protocol
Encrypt, Decrypt, and Sign Your MessagesLearn how to use the @waku/message-encryption package to encrypt, decrypt, and sign your messages
Build React DApps Using @waku/reactLearn how to use the @waku/react package seamlessly integrate @waku/sdk into a React application
Scaffold DApps Using @waku/create-appLearn how to use the @waku/create-app package to bootstrap your next @waku/sdk project from various example templates
Bootstrap Nodes and Discover PeersLearn how to bootstrap your node using Static Peers and discover peers using DNS Discovery
Run @waku/sdk in a NodeJS ApplicationLearn our suggested approach for using the @waku/sdk package within a NodeJS application
Debug Your Waku DApp and WebSocketLearn how to troubleshoot your Waku DApp using debug logs and check WebSocket connections in nwaku
Manage Your Filter SubscriptionsLearn how to manage filter subscriptions and handle node disconnections in your application
tip

Until node incentivisation is in place, you should operate extra nodes alongside the ones provided by the Waku Network. When running a node, we recommend using the DNS Discovery and Static Peers configuration to connect to both the Waku Network and your node.

Get help and report issues

To engage in general discussions, seek assistance, or stay updated with the latest news, visit the #support and #js-waku-contribute channels on the Waku Discord.

If you discover bugs or want to suggest new features, do not hesitate to open an issue in the js-waku repository. Your feedback and contributions are highly valued and will help improve the @waku/sdk package.

+ + \ No newline at end of file diff --git a/guides/js-waku/light-send-receive/index.html b/guides/js-waku/light-send-receive/index.html index 8532640..7e4da05 100644 --- a/guides/js-waku/light-send-receive/index.html +++ b/guides/js-waku/light-send-receive/index.html @@ -4,9 +4,9 @@ Send and Receive Messages Using Light Push and Filter | Waku Documentation - - - + + +
@@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Send and Receive Messages Using Light Push and Filter

This guide provides detailed steps to start using the @waku/sdk package by setting up a Light Node to send messages using the Light Push protocol, and receive messages using the Filter protocol. Have a look at the installation guide for steps on adding @waku/sdk to your project.

Create a light node

Use the createLightNode() function to create a Light Node and interact with the Waku Network:

import { createLightNode } from "@waku/sdk";

// Create and start a Light Node
const node = await createLightNode({ defaultBootstrap: true });
await node.start();

// Use the stop() function to stop a running node
// await node.stop();
info

When the defaultBootstrap parameter is set to true, your node will be bootstrapped using the default bootstrap method. Have a look at the Bootstrap Nodes and Discover Peers guide to learn more methods to bootstrap nodes.

Connect to remote peers

Use the waitForRemotePeer() function to wait for the node to connect with peers on the Waku Network:

import { waitForRemotePeer } from "@waku/sdk";

// Wait for a successful peer connection
await waitForRemotePeer(node);

The protocols parameter allows you to specify the protocols that the remote peers should have enabled:

import { waitForRemotePeer, Protocols } from "@waku/sdk";

// Wait for peer connections with specific protocols
await waitForRemotePeer(node, [
Protocols.LightPush,
Protocols.Filter,
]);

Choose a content topic

Choose a content topic for your application and create a message encoder and decoder:

import { createEncoder, createDecoder } from "@waku/sdk";

// Choose a content topic
const contentTopic = "/light-guide/1/message/proto";

// Create a message encoder and decoder
const encoder = createEncoder({ contentTopic });
const decoder = createDecoder(contentTopic);

The ephemeral parameter allows you to specify whether messages should NOT be stored by Store peers:

const encoder = createEncoder({
contentTopic: contentTopic, // message content topic
ephemeral: true, // allows messages NOT be stored on the network
});
info

In this example, users send and receive messages on a shared content topic. However, real applications may have users broadcasting messages while others listen or only have 1:1 exchanges. Waku supports all these use cases.

Create a message structure

Create your application's message structure using Protobuf's valid message fields:

import protobuf from "protobufjs";

// Create a message structure using Protobuf
const ChatMessage = new protobuf.Type("ChatMessage")
.add(new protobuf.Field("timestamp", 1, "uint64"))
.add(new protobuf.Field("sender", 2, "string"))
.add(new protobuf.Field("message", 3, "string"));
info

Have a look at the Protobuf installation guide for adding the protobufjs package to your project.

Send messages using light push

To send messages over the Waku Network using the Light Push protocol, create a new message object and use the lightPush.send() function:

// Create a new message object
const protoMessage = ChatMessage.create({
timestamp: Date.now(),
sender: "Alice",
message: "Hello, World!",
});

// Serialise the message using Protobuf
const serialisedMessage = ChatMessage.encode(protoMessage).finish();

// Send the message using Light Push
await node.lightPush.send(encoder, {
payload: serialisedMessage,
});

Receive messages using filter

To receive messages using the Filter protocol, create a callback function for message processing, then use the filter.subscribe() function to subscribe to a content topic:

// Create the callback function
const callback = (wakuMessage) => {
// Check if there is a payload on the message
if (!wakuMessage.payload) return;
// Render the messageObj as desired in your application
const messageObj = ChatMessage.decode(wakuMessage.payload);
console.log(messageObj);
};

// Create a Filter subscription
const subscription = await node.filter.createSubscription();

// Subscribe to content topics and process new messages
await subscription.subscribe([decoder], callback);

You can use the subscription.unsubscribe() function to stop receiving messages from a content topic:

await subscription.unsubscribe([contentTopic]);
Congratulations!

You have successfully sent and received messages over the Waku Network using the Light Push and Filter protocols. Have a look at the light-js and light-chat examples for working demos.

- - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Send and Receive Messages Using Light Push and Filter

This guide provides detailed steps to start using the @waku/sdk package by setting up a Light Node to send messages using the Light Push protocol, and receive messages using the Filter protocol. Have a look at the installation guide for steps on adding @waku/sdk to your project.

Create a light node

Use the createLightNode() function to create a Light Node and interact with the Waku Network:

import { createLightNode } from "@waku/sdk";

// Create and start a Light Node
const node = await createLightNode({ defaultBootstrap: true });
await node.start();

// Use the stop() function to stop a running node
// await node.stop();
info

When the defaultBootstrap parameter is set to true, your node will be bootstrapped using the default bootstrap method. Have a look at the Bootstrap Nodes and Discover Peers guide to learn more methods to bootstrap nodes.

Connect to remote peers

Use the waitForRemotePeer() function to wait for the node to connect with peers on the Waku Network:

import { waitForRemotePeer } from "@waku/sdk";

// Wait for a successful peer connection
await waitForRemotePeer(node);

The protocols parameter allows you to specify the protocols that the remote peers should have enabled:

import { waitForRemotePeer, Protocols } from "@waku/sdk";

// Wait for peer connections with specific protocols
await waitForRemotePeer(node, [
Protocols.LightPush,
Protocols.Filter,
]);

Choose a content topic

Choose a content topic for your application and create a message encoder and decoder:

import { createEncoder, createDecoder } from "@waku/sdk";

// Choose a content topic
const contentTopic = "/light-guide/1/message/proto";

// Create a message encoder and decoder
const encoder = createEncoder({ contentTopic });
const decoder = createDecoder(contentTopic);

The ephemeral parameter allows you to specify whether messages should NOT be stored by Store peers:

const encoder = createEncoder({
contentTopic: contentTopic, // message content topic
ephemeral: true, // allows messages NOT be stored on the network
});
info

In this example, users send and receive messages on a shared content topic. However, real applications may have users broadcasting messages while others listen or only have 1:1 exchanges. Waku supports all these use cases.

Create a message structure

Create your application's message structure using Protobuf's valid message fields:

import protobuf from "protobufjs";

// Create a message structure using Protobuf
const ChatMessage = new protobuf.Type("ChatMessage")
.add(new protobuf.Field("timestamp", 1, "uint64"))
.add(new protobuf.Field("sender", 2, "string"))
.add(new protobuf.Field("message", 3, "string"));
info

Have a look at the Protobuf installation guide for adding the protobufjs package to your project.

Send messages using light push

To send messages over the Waku Network using the Light Push protocol, create a new message object and use the lightPush.send() function:

// Create a new message object
const protoMessage = ChatMessage.create({
timestamp: Date.now(),
sender: "Alice",
message: "Hello, World!",
});

// Serialise the message using Protobuf
const serialisedMessage = ChatMessage.encode(protoMessage).finish();

// Send the message using Light Push
await node.lightPush.send(encoder, {
payload: serialisedMessage,
});

Receive messages using filter

To receive messages using the Filter protocol, create a callback function for message processing, then use the filter.subscribe() function to subscribe to a content topic:

// Create the callback function
const callback = (wakuMessage) => {
// Check if there is a payload on the message
if (!wakuMessage.payload) return;
// Render the messageObj as desired in your application
const messageObj = ChatMessage.decode(wakuMessage.payload);
console.log(messageObj);
};

// Create a Filter subscription
const subscription = await node.filter.createSubscription();

// Subscribe to content topics and process new messages
await subscription.subscribe([decoder], callback);

You can use the subscription.unsubscribe() function to stop receiving messages from a content topic:

await subscription.unsubscribe([contentTopic]);
Congratulations!

You have successfully sent and received messages over the Waku Network using the Light Push and Filter protocols. Have a look at the light-js and light-chat examples for working demos.

+ + \ No newline at end of file diff --git a/guides/js-waku/manage-filter/index.html b/guides/js-waku/manage-filter/index.html index 66d2e02..885595c 100644 --- a/guides/js-waku/manage-filter/index.html +++ b/guides/js-waku/manage-filter/index.html @@ -4,9 +4,9 @@ Manage Your Filter Subscriptions | Waku Documentation - - - + + +
@@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Manage Your Filter Subscriptions

This guide provides detailed steps to manage Filter subscriptions and handle node disconnections in your application. Have a look at the Send and Receive Messages Using Light Push and Filter guide for using the Light Push and Filter protocols.

Overview

Occasionally, your Filter subscriptions might disconnect from the Waku Network, resulting in messages not being received by your application. To manage your subscriptions, periodically ping peers to check for an active connection. The error message "peer has no subscriptions" indicates a failed ping due to disconnection. You can stop the pings if the disconnection/unsubscription is deliberate.

Pinging filter subscriptions

The @waku/sdk package provides a Filter.ping() function to ping subscriptions and check for an active connection. To begin, create a Filter subscription:

// Create a Filter subscription
const subscription = await node.filter.createSubscription();

// Subscribe to content topics and process new messages
await subscription.subscribe([decoder], callback);

Next, create a function to ping and reinitiate the subscription:

const pingAndReinitiateSubscription = async () => {
try {
// Ping the subscription
await subscription.ping();
} catch (error) {
if (
// Check if the error message includes "peer has no subscriptions"
error instanceof Error &&
error.message.includes("peer has no subscriptions")
) {
// Reinitiate the subscription if the ping fails
await subscription.subscribe([decoder], callback);
} else {
throw error;
}
}
};

// Periodically ping the subscription
await pingAndReinitiateSubscription();
info

Pings will fail when there are temporary network degradations or reachability issues. This does not mean that the underlying connection has been closed.

Congratulations!

You have successfully managed your Filter subscriptions to handle node disconnections in your application.

- - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Manage Your Filter Subscriptions

This guide provides detailed steps to manage Filter subscriptions and handle node disconnections in your application. Have a look at the Send and Receive Messages Using Light Push and Filter guide for using the Light Push and Filter protocols.

Overview

Occasionally, your Filter subscriptions might disconnect from the Waku Network, resulting in messages not being received by your application. To manage your subscriptions, periodically ping peers to check for an active connection. The error message "peer has no subscriptions" indicates a failed ping due to disconnection. You can stop the pings if the disconnection/unsubscription is deliberate.

Pinging filter subscriptions

The @waku/sdk package provides a Filter.ping() function to ping subscriptions and check for an active connection. To begin, create a Filter subscription:

// Create a Filter subscription
const subscription = await node.filter.createSubscription();

// Subscribe to content topics and process new messages
await subscription.subscribe([decoder], callback);

Next, create a function to ping and reinitiate the subscription:

const pingAndReinitiateSubscription = async () => {
try {
// Ping the subscription
await subscription.ping();
} catch (error) {
if (
// Check if the error message includes "peer has no subscriptions"
error instanceof Error &&
error.message.includes("peer has no subscriptions")
) {
// Reinitiate the subscription if the ping fails
await subscription.subscribe([decoder], callback);
} else {
throw error;
}
}
};

// Periodically ping the subscription
await pingAndReinitiateSubscription();
info

Pings will fail when there are temporary network degradations or reachability issues. This does not mean that the underlying connection has been closed.

Congratulations!

You have successfully managed your Filter subscriptions to handle node disconnections in your application.

+ + \ No newline at end of file diff --git a/guides/js-waku/message-encryption/index.html b/guides/js-waku/message-encryption/index.html index a7278ab..c53f930 100644 --- a/guides/js-waku/message-encryption/index.html +++ b/guides/js-waku/message-encryption/index.html @@ -4,9 +4,9 @@ Encrypt, Decrypt, and Sign Your Messages | Waku Documentation - - - + + +
@@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Encrypt, Decrypt, and Sign Your Messages

This guide provides detailed steps to use the @waku/message-encryption package to encrypt, decrypt, and sign your messages using Waku message payload encryption methods.

info

Waku uses libp2p noise encryption for node-to-node connections. However, no default encryption method is applied to the data sent over the network. This design choice enhances Waku's encryption flexibility, encouraging developers to freely use custom protocols or Waku message payload encryption methods.

Installation

Install the required packages for integrating @waku/message-encryption using your preferred package manager:

npm install @waku/message-encryption @waku/utils

Symmetric encryption

Symmetric encryption uses a single, shared key for message encryption and decryption. Use the generateSymmetricKey() function to generate a random symmetric key:

import { generateSymmetricKey } from "@waku/message-encryption";

// Generate a random symmetric key
const symmetricKey = generateSymmetricKey();

To send encrypted messages, create a Symmetric message encoder and send the message as usual:

Sender client
import { createEncoder } from "@waku/message-encryption/symmetric";

// Create a symmetric message encoder
const encoder = createEncoder({
contentTopic: contentTopic, // message content topic
symKey: symmetricKey, // symmetric key for encrypting messages
});

// Send the message using Light Push
await node.lightPush.send(encoder, { payload });

To decrypt the messages you receive, create a symmetric message decoder and process the messages as usual:

Receiver client
import { createDecoder } from "@waku/message-encryption/symmetric";

// Create a symmetric message decoder
const decoder = createDecoder(contentTopic, symmetricKey);

// Receive messages from a Filter subscription
await subscription.subscribe([decoder], callback);

// Retrieve messages from Store peers
await node.store.queryWithOrderedCallback([decoder], callback);
tip

The symmetric key exchange between users can happen through an out-of-band method. For example, where the key is embedded within the URL shared by a user to access a specific resource.

ECIES encryption

ECIES encryption uses a public key for encryption and a private key for decryption. Use the generatePrivateKey() function to generate a random ECDSA private key:

import { generatePrivateKey, getPublicKey } from "@waku/message-encryption";

// Generate a random ECDSA private key, keep secure
const privateKey = generatePrivateKey();

// Generate a public key from the private key, provide to the sender
const publicKey = getPublicKey(privateKey);

To send encrypted messages, create an ECIES message encoder with the public key and send the message as usual:

Sender client
import { createEncoder } from "@waku/message-encryption/ecies";

// Create an ECIES message encoder
const encoder = createEncoder({
contentTopic: contentTopic, // message content topic
publicKey: publicKey, // ECIES public key for encrypting messages
});

// Send the message using Light Push
await node.lightPush.send(encoder, { payload });

To decrypt the messages you receive, create an ECIES message decoder with the private key and process the messages as usual:

Receiver client
import { createDecoder } from "@waku/message-encryption/ecies";

// Create an ECIES message decoder
const decoder = createDecoder(contentTopic, privateKey);

// Receive messages from a Filter subscription
await subscription.subscribe([decoder], callback);

// Retrieve messages from Store peers
await node.store.queryWithOrderedCallback([decoder], callback);
tip

Users can share their public key through broadcasting or out-of-band methods, such as embedding it in a URL or sending an unencrypted message on another content topic for others to retrieve.

Signing encrypted messages

Message signing helps in proving the authenticity of received messages. By attaching a signature to a message, you can verify its origin and integrity with absolute certainty.

info

Signing messages is only possible when encrypted, but if your application does not require encryption, you can generate a symmetric key through hardcoded or deterministic methods using information available to all users.

The sigPrivKey parameter allows the Symmetric and ECIES message encoders to sign the message before encryption using an ECDSA private key:

Alice (sender) client
import { generatePrivateKey, getPublicKey } from "@waku/message-encryption";
import { createEncoder as createSymmetricEncoder } from "@waku/message-encryption/symmetric";
import { createEncoder as createECIESEncoder } from "@waku/message-encryption/ecies";

// Generate a random ECDSA private key for signing messages
// ECIES encryption and message signing both use ECDSA keys
// For this example, we'll call the sender of the message Alice
const alicePrivateKey = generatePrivateKey();
const alicePublicKey = getPublicKey(alicePrivateKey);

// Create a symmetric encoder that signs messages
const symmetricEncoder = createSymmetricEncoder({
contentTopic: contentTopic, // message content topic
symKey: symmetricKey, // symmetric key for encrypting messages
sigPrivKey: alicePrivateKey, // private key for signing messages before encryption
});

// Create an ECIES encoder that signs messages
const ECIESEncoder = createECIESEncoder({
contentTopic: contentTopic, // message content topic
publicKey: publicKey, // ECIES public key for encrypting messages
sigPrivKey: alicePrivateKey, // private key for signing messages before encryption
});

// Send and receive your messages as usual with Light Push and Filter
await subscription.subscribe([symmetricEncoder], callback);
await node.lightPush.send(symmetricEncoder, { payload });

await subscription.subscribe([ECIESEncoder], callback);
await node.lightPush.send(ECIESEncoder, { payload });

You can extract the signature and its public key (signaturePublicKey) from the DecodedMessage and compare it with the expected public key or use the verifySignature() function to verify the message origin:

Bob (receiver) client
import { generatePrivateKey } from "@waku/message-encryption";
import { createEncoder } from "@waku/message-encryption/symmetric";

// Generate a random private key for signing messages
// For this example, we'll call the receiver of the message Bob
const bobPrivateKey = generatePrivateKey();

// Create an encoder that signs messages
const encoder = createEncoder({
contentTopic: contentTopic,
symKey: symmetricKey,
sigPrivKey: bobPrivateKey,
});

// Modify the callback function to verify message signature
const callback = (wakuMessage) => {
// Extract the message signature and public key of the signature
// You can compare the signaturePublicKey with Alice public key
const signature = wakuMessage.signature;
const signaturePublicKey = wakuMessage.signaturePublicKey;

// Verify the message was actually signed and sent by Alice
// Alice's public key can be gotten from broadcasting or out-of-band methods
if (wakuMessage.verifySignature(alicePublicKey)) {
console.log("This message was signed by Alice");
} else {
console.log("This message was NOT signed by Alice");
}
};

await subscription.subscribe([encoder], callback);

Storing encryption keys

We used randomly generated keys for encryption and message signing in the provided examples, but real-world applications require consistent keys among client restarts. Have a look at the Key Pair Handling example, which demonstrates the secure storage and retrieval of key information from local storage using Subtle Crypto.

If you need a simple way to store your keys in hexadecimal format across your application, you can use the @waku/utils package:

import { bytesToHex, hexToBytes } from "@waku/utils/bytes";

// Generate random symmetric and private keys
const symmetricKey = generateSymmetricKey();
const privateKey = generatePrivateKey();

// Store the keys in hexadecimal format
const symmetricKeyHex = bytesToHex(symmetricKey);
const privateKeyHex = bytesToHex(privateKey);

// Restore the keys from hexadecimal format
const restoredSymmetricKey = hexToBytes(symmetricKeyHex);
const restoredPrivateKey = hexToBytes(privateKeyHex);
Congratulations!

You have successfully encrypted, decrypted, and signed your messages using Symmetric and ECIES encryption methods. Have a look at the eth-pm example for a working demo.

- - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Encrypt, Decrypt, and Sign Your Messages

This guide provides detailed steps to use the @waku/message-encryption package to encrypt, decrypt, and sign your messages using Waku message payload encryption methods.

info

Waku uses libp2p noise encryption for node-to-node connections. However, no default encryption method is applied to the data sent over the network. This design choice enhances Waku's encryption flexibility, encouraging developers to freely use custom protocols or Waku message payload encryption methods.

Installation

Install the required packages for integrating @waku/message-encryption using your preferred package manager:

npm install @waku/message-encryption @waku/utils

Symmetric encryption

Symmetric encryption uses a single, shared key for message encryption and decryption. Use the generateSymmetricKey() function to generate a random symmetric key:

import { generateSymmetricKey } from "@waku/message-encryption";

// Generate a random symmetric key
const symmetricKey = generateSymmetricKey();

To send encrypted messages, create a Symmetric message encoder and send the message as usual:

Sender client
import { createEncoder } from "@waku/message-encryption/symmetric";

// Create a symmetric message encoder
const encoder = createEncoder({
contentTopic: contentTopic, // message content topic
symKey: symmetricKey, // symmetric key for encrypting messages
});

// Send the message using Light Push
await node.lightPush.send(encoder, { payload });

To decrypt the messages you receive, create a symmetric message decoder and process the messages as usual:

Receiver client
import { createDecoder } from "@waku/message-encryption/symmetric";

// Create a symmetric message decoder
const decoder = createDecoder(contentTopic, symmetricKey);

// Receive messages from a Filter subscription
await subscription.subscribe([decoder], callback);

// Retrieve messages from Store peers
await node.store.queryWithOrderedCallback([decoder], callback);
tip

The symmetric key exchange between users can happen through an out-of-band method. For example, where the key is embedded within the URL shared by a user to access a specific resource.

ECIES encryption

ECIES encryption uses a public key for encryption and a private key for decryption. Use the generatePrivateKey() function to generate a random ECDSA private key:

import { generatePrivateKey, getPublicKey } from "@waku/message-encryption";

// Generate a random ECDSA private key, keep secure
const privateKey = generatePrivateKey();

// Generate a public key from the private key, provide to the sender
const publicKey = getPublicKey(privateKey);

To send encrypted messages, create an ECIES message encoder with the public key and send the message as usual:

Sender client
import { createEncoder } from "@waku/message-encryption/ecies";

// Create an ECIES message encoder
const encoder = createEncoder({
contentTopic: contentTopic, // message content topic
publicKey: publicKey, // ECIES public key for encrypting messages
});

// Send the message using Light Push
await node.lightPush.send(encoder, { payload });

To decrypt the messages you receive, create an ECIES message decoder with the private key and process the messages as usual:

Receiver client
import { createDecoder } from "@waku/message-encryption/ecies";

// Create an ECIES message decoder
const decoder = createDecoder(contentTopic, privateKey);

// Receive messages from a Filter subscription
await subscription.subscribe([decoder], callback);

// Retrieve messages from Store peers
await node.store.queryWithOrderedCallback([decoder], callback);
tip

Users can share their public key through broadcasting or out-of-band methods, such as embedding it in a URL or sending an unencrypted message on another content topic for others to retrieve.

Signing encrypted messages

Message signing helps in proving the authenticity of received messages. By attaching a signature to a message, you can verify its origin and integrity with absolute certainty.

info

Signing messages is only possible when encrypted, but if your application does not require encryption, you can generate a symmetric key through hardcoded or deterministic methods using information available to all users.

The sigPrivKey parameter allows the Symmetric and ECIES message encoders to sign the message before encryption using an ECDSA private key:

Alice (sender) client
import { generatePrivateKey, getPublicKey } from "@waku/message-encryption";
import { createEncoder as createSymmetricEncoder } from "@waku/message-encryption/symmetric";
import { createEncoder as createECIESEncoder } from "@waku/message-encryption/ecies";

// Generate a random ECDSA private key for signing messages
// ECIES encryption and message signing both use ECDSA keys
// For this example, we'll call the sender of the message Alice
const alicePrivateKey = generatePrivateKey();
const alicePublicKey = getPublicKey(alicePrivateKey);

// Create a symmetric encoder that signs messages
const symmetricEncoder = createSymmetricEncoder({
contentTopic: contentTopic, // message content topic
symKey: symmetricKey, // symmetric key for encrypting messages
sigPrivKey: alicePrivateKey, // private key for signing messages before encryption
});

// Create an ECIES encoder that signs messages
const ECIESEncoder = createECIESEncoder({
contentTopic: contentTopic, // message content topic
publicKey: publicKey, // ECIES public key for encrypting messages
sigPrivKey: alicePrivateKey, // private key for signing messages before encryption
});

// Send and receive your messages as usual with Light Push and Filter
await subscription.subscribe([symmetricEncoder], callback);
await node.lightPush.send(symmetricEncoder, { payload });

await subscription.subscribe([ECIESEncoder], callback);
await node.lightPush.send(ECIESEncoder, { payload });

You can extract the signature and its public key (signaturePublicKey) from the DecodedMessage and compare it with the expected public key or use the verifySignature() function to verify the message origin:

Bob (receiver) client
import { generatePrivateKey } from "@waku/message-encryption";
import { createEncoder } from "@waku/message-encryption/symmetric";

// Generate a random private key for signing messages
// For this example, we'll call the receiver of the message Bob
const bobPrivateKey = generatePrivateKey();

// Create an encoder that signs messages
const encoder = createEncoder({
contentTopic: contentTopic,
symKey: symmetricKey,
sigPrivKey: bobPrivateKey,
});

// Modify the callback function to verify message signature
const callback = (wakuMessage) => {
// Extract the message signature and public key of the signature
// You can compare the signaturePublicKey with Alice public key
const signature = wakuMessage.signature;
const signaturePublicKey = wakuMessage.signaturePublicKey;

// Verify the message was actually signed and sent by Alice
// Alice's public key can be gotten from broadcasting or out-of-band methods
if (wakuMessage.verifySignature(alicePublicKey)) {
console.log("This message was signed by Alice");
} else {
console.log("This message was NOT signed by Alice");
}
};

await subscription.subscribe([encoder], callback);

Storing encryption keys

We used randomly generated keys for encryption and message signing in the provided examples, but real-world applications require consistent keys among client restarts. Have a look at the Key Pair Handling example, which demonstrates the secure storage and retrieval of key information from local storage using Subtle Crypto.

If you need a simple way to store your keys in hexadecimal format across your application, you can use the @waku/utils package:

import { bytesToHex, hexToBytes } from "@waku/utils/bytes";

// Generate random symmetric and private keys
const symmetricKey = generateSymmetricKey();
const privateKey = generatePrivateKey();

// Store the keys in hexadecimal format
const symmetricKeyHex = bytesToHex(symmetricKey);
const privateKeyHex = bytesToHex(privateKey);

// Restore the keys from hexadecimal format
const restoredSymmetricKey = hexToBytes(symmetricKeyHex);
const restoredPrivateKey = hexToBytes(privateKeyHex);
Congratulations!

You have successfully encrypted, decrypted, and signed your messages using Symmetric and ECIES encryption methods. Have a look at the eth-pm example for a working demo.

+ + \ No newline at end of file diff --git a/guides/js-waku/run-waku-nodejs/index.html b/guides/js-waku/run-waku-nodejs/index.html index e51d604..6aafaad 100644 --- a/guides/js-waku/run-waku-nodejs/index.html +++ b/guides/js-waku/run-waku-nodejs/index.html @@ -4,9 +4,9 @@ Run @waku/sdk in a NodeJS Application | Waku Documentation - - - + + +
@@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Run @waku/sdk in a NodeJS Application

While the @waku/sdk package is primarily designed for browser environments, you can use it in a NodeJS application. However, there are certain limitations and considerations to keep in mind. This guide provides a comprehensive overview of using @waku/sdk in NodeJS.

Limitations

API compatibility

@waku/sdk prioritises browser compatibility, avoiding NodeJS APIs for simpler bundling. This design choice enhances browser API compatibility but sacrifices NodeJS optimisation. While many browser APIs work in NodeJS, they might need better optimisation.

Protocol implementation

@waku/sdk focuses on the client side of the Request/Response protocol. We'll have to replicate all the functionalities added to nwaku to implement extra features.

Codebase complexity

@waku/sdk aims to provide optimal default for the browser, striking a balance between browser and NodeJS compatibility while ensuring simplicity will add complexity.

Browser-specific protocols

Certain features in @waku/sdk are tailored for browsers and might not translate seamlessly to NodeJS. For example, only WebSocket is supported in the browser, whereas a NodeJS application can benefit from using transport methods like TCP.

@waku/sdk default peer management caters to the browser's ephemeral nature, which is different for NodeJS. This is why DNS Discovery and Peer Exchange are the default discovery mechanisms for the browser but not for NodeJS and desktop applications.

Recommendations

Before using @waku/sdk in a NodeJS environment, take into account these limitations. For a more optimised solution, we recommend running nwaku in a Docker container and consuming its REST API.

Future developments

There are plans to release a NodeJS package based on nwaku to streamline the process of using Waku Network features in NodeJS applications. You can track the progress and updates here: https://github.com/waku-org/nwaku/issues/1332.

- - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Run @waku/sdk in a NodeJS Application

While the @waku/sdk package is primarily designed for browser environments, you can use it in a NodeJS application. However, there are certain limitations and considerations to keep in mind. This guide provides a comprehensive overview of using @waku/sdk in NodeJS.

Limitations

API compatibility

@waku/sdk prioritises browser compatibility, avoiding NodeJS APIs for simpler bundling. This design choice enhances browser API compatibility but sacrifices NodeJS optimisation. While many browser APIs work in NodeJS, they might need better optimisation.

Protocol implementation

@waku/sdk focuses on the client side of the Request/Response protocol. We'll have to replicate all the functionalities added to nwaku to implement extra features.

Codebase complexity

@waku/sdk aims to provide optimal default for the browser, striking a balance between browser and NodeJS compatibility while ensuring simplicity will add complexity.

Browser-specific protocols

Certain features in @waku/sdk are tailored for browsers and might not translate seamlessly to NodeJS. For example, only WebSocket is supported in the browser, whereas a NodeJS application can benefit from using transport methods like TCP.

@waku/sdk default peer management caters to the browser's ephemeral nature, which is different for NodeJS. This is why DNS Discovery and Peer Exchange are the default discovery mechanisms for the browser but not for NodeJS and desktop applications.

Recommendations

Before using @waku/sdk in a NodeJS environment, take into account these limitations. For a more optimised solution, we recommend running nwaku in a Docker container and consuming its REST API.

Future developments

There are plans to release a NodeJS package based on nwaku to streamline the process of using Waku Network features in NodeJS applications. You can track the progress and updates here: https://github.com/waku-org/nwaku/issues/1332.

+ + \ No newline at end of file diff --git a/guides/js-waku/store-retrieve-messages/index.html b/guides/js-waku/store-retrieve-messages/index.html index 007a0ee..53fc300 100644 --- a/guides/js-waku/store-retrieve-messages/index.html +++ b/guides/js-waku/store-retrieve-messages/index.html @@ -4,9 +4,9 @@ Retrieve Messages Using Store Protocol | Waku Documentation - - - + + +
@@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Retrieve Messages Using Store Protocol

This guide provides detailed steps to create a Light Node for retrieving and filtering historical messages using the Store protocol.

Create a light node

Use the createLightNode() function to create a Light Node and interact with the Waku Network:

import { createLightNode } from "@waku/sdk";

// Create and start a Light Node
const node = await createLightNode({ defaultBootstrap: true });
await node.start();

Connect to store peers

Use the waitForRemotePeer() function to wait for the node to connect with Store peers:

import { waitForRemotePeer, Protocols } from "@waku/sdk";

// Wait for a successful peer connection
await waitForRemotePeer(node, [Protocols.Store]);

Choose a content topic

Choose a content topic for filtering the messages to retrieve and create a message decoder:

import { createDecoder } from "@waku/sdk";

// Choose a content topic
const contentTopic = "/store-guide/1/message/proto";

// Create a message decoder
const decoder = createDecoder(contentTopic);

Retrieve messages

@waku/sdk provides the queryWithOrderedCallback() and queryGenerator() functions for querying Store nodes and retrieving historical or missed messages. The responses from Store nodes are paginated and require you to process each page sequentially.

queryWithOrderedCallback

The store.queryWithOrderedCallback() function provides a straightforward method for querying Store nodes and processing messages in chronological order through a callback function. It accepts these parameters:

  • decoders: List of decoders that specify the content topic to query for and their message decryption methods.
  • callback: The callback function for processing the retrieved messages.
  • options (optional): Query options to filter the retrieved messages.
// Create the callback function
const callback = (wakuMessage) => {
// Render the message/payload in your application
console.log(wakuMessage);
};

// Query the Store peer
await node.store.queryWithOrderedCallback(
[decoder],
callback,
);
info

The queryWithOrderedCallback() function always returns the most recent messages in a page first.

queryGenerator

The store.queryGenerator() function provides more control and flexibility over processing messages retrieved from Store nodes through Async Generators. It accepts these parameters:

  • decoders: List of decoders that specify the content topic to query for and their message decryption methods.
  • options (optional): Query options to filter the retrieved messages.
// Create the store query
const storeQuery = node.store.queryGenerator([decoder]);

// Process the messages
for await (const messagesPromises of storeQuery) {
// Fulfil the messages promises
const messages = await Promise.all(messagesPromises
.map(async (p) => {
const msg = await p;
// Render the message/payload in your application
console.log(msg);
})
);
}
info

The queryGenerator() function always returns the oldest messages in a page first.

Store query options

pageDirection

The pageDirection option specifies the direction in which pages are retrieved:

  • BACKWARD (default): Most recent page first.
  • FORWARD: Oldest page first.
import { PageDirection } from "@waku/sdk";

// Retrieve recent messages first
const queryOptions = {
pageDirection: PageDirection.BACKWARD,
};

// Retrieve oldest messages first
const queryOptions = {
pageDirection: PageDirection.FORWARD,
};

// Query the Store peer with options
await node.store.queryWithOrderedCallback([decoder], callback, options);
const storeQuery = node.store.queryGenerator([decoder, options]);

cursor

The cursor option specifies the starting index for retrieving messages. For example, consider a query that retrieves the first page messages and then continues with the next page:

import { waku } from "@waku/sdk";

// Create the callback function
const messages = [];
const callback = (wakuMessage) => {
messages.push(wakuMessage);
// Return "true" to stop retrieving pages
// Here, it retrieves only the first page
return true;
};

// Retrieve the first page of messages
// This retrieves all the messages if "return true" is not present
await node.store.queryWithOrderedCallback(
[decoder],
callback,
);

// Create the cursor
const lastMessage = messages[messages.length - 1];
const cursor = await waku.createCursor(lastMessage);

// Retrieve the next page of messages
// The message at the cursor index is excluded from the result
await node.store.queryWithOrderedCallback(
[decoder],
callback,
{
cursor: cursor,
},
);
console.log(messages);
info

If you omit the cursor option, the query will start from the beginning or end of the history, depending on the page direction.

timeFilter

The timeFilter option specifies a time frame to retrieve messages from. For example, consider a query that retrieves messages from the previous week:

// Get the time frame
const endTime = new Date();
const startTime = new Date();
startTime.setDate(endTime.getDate() - 7);

// Retrieve a week of messages
const queryOptions = {
timeFilter: {
startTime,
endTime,
},
};

// Query the Store peer with options
await node.store.queryWithOrderedCallback([decoder], callback, options);
const storeQuery = node.store.queryGenerator([decoder, options]);
info

The timeFilter option significantly reduces message retrieval performance. To optimise it, consider resuming message retrieval using a cursor that starts from the last seen message.

Congratulations!

You have successfully retrieved and filtered historical messages on a Light Node using the Store protocol. Have a look at the store-js and store-reactjs-chat examples for working demos.

- - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Retrieve Messages Using Store Protocol

This guide provides detailed steps to create a Light Node for retrieving and filtering historical messages using the Store protocol.

Create a light node

Use the createLightNode() function to create a Light Node and interact with the Waku Network:

import { createLightNode } from "@waku/sdk";

// Create and start a Light Node
const node = await createLightNode({ defaultBootstrap: true });
await node.start();

Connect to store peers

Use the waitForRemotePeer() function to wait for the node to connect with Store peers:

import { waitForRemotePeer, Protocols } from "@waku/sdk";

// Wait for a successful peer connection
await waitForRemotePeer(node, [Protocols.Store]);

Choose a content topic

Choose a content topic for filtering the messages to retrieve and create a message decoder:

import { createDecoder } from "@waku/sdk";

// Choose a content topic
const contentTopic = "/store-guide/1/message/proto";

// Create a message decoder
const decoder = createDecoder(contentTopic);

Retrieve messages

@waku/sdk provides the queryWithOrderedCallback() and queryGenerator() functions for querying Store nodes and retrieving historical or missed messages. The responses from Store nodes are paginated and require you to process each page sequentially.

queryWithOrderedCallback

The store.queryWithOrderedCallback() function provides a straightforward method for querying Store nodes and processing messages in chronological order through a callback function. It accepts these parameters:

  • decoders: List of decoders that specify the content topic to query for and their message decryption methods.
  • callback: The callback function for processing the retrieved messages.
  • options (optional): Query options to filter the retrieved messages.
// Create the callback function
const callback = (wakuMessage) => {
// Render the message/payload in your application
console.log(wakuMessage);
};

// Query the Store peer
await node.store.queryWithOrderedCallback([decoder], callback);
info

The queryWithOrderedCallback() function always returns the most recent messages in a page first.

queryGenerator

The store.queryGenerator() function provides more control and flexibility over processing messages retrieved from Store nodes through Async Generators. It accepts these parameters:

  • decoders: List of decoders that specify the content topic to query for and their message decryption methods.
  • options (optional): Query options to filter the retrieved messages.
// Create the store query
const storeQuery = node.store.queryGenerator([decoder]);

// Process the messages
for await (const messagesPromises of storeQuery) {
// Fulfil the messages promises
const messages = await Promise.all(
messagesPromises.map(async (p) => {
const msg = await p;
// Render the message/payload in your application
console.log(msg);
})
);
}
info

The queryGenerator() function always returns the oldest messages in a page first.

Store query options

pageDirection

The pageDirection option specifies the direction in which pages are retrieved:

  • BACKWARD (default): Most recent page first.
  • FORWARD: Oldest page first.
import { PageDirection } from "@waku/sdk";

// Retrieve recent messages first
const queryOptions = {
pageDirection: PageDirection.BACKWARD,
};

// Retrieve oldest messages first
const queryOptions = {
pageDirection: PageDirection.FORWARD,
};

// Query the Store peer with options
await node.store.queryWithOrderedCallback([decoder], callback, options);
const storeQuery = node.store.queryGenerator([decoder, options]);

cursor

The cursor option specifies the starting index for retrieving messages. For example, consider a query that retrieves the first page messages and then continues with the next page:

import { waku } from "@waku/sdk";

// Create the callback function
const messages = [];
const callback = (wakuMessage) => {
messages.push(wakuMessage);
// Return "true" to stop retrieving pages
// Here, it retrieves only the first page
return true;
};

// Retrieve the first page of messages
// This retrieves all the messages if "return true" is not present
await node.store.queryWithOrderedCallback([decoder], callback);

// Create the cursor
const lastMessage = messages[messages.length - 1];
const cursor = await waku.createCursor(lastMessage);

// Retrieve the next page of messages
// The message at the cursor index is excluded from the result
await node.store.queryWithOrderedCallback([decoder], callback, {
cursor: cursor,
});
console.log(messages);
info

If you omit the cursor option, the query will start from the beginning or end of the history, depending on the page direction.

timeFilter

The timeFilter option specifies a time frame to retrieve messages from. For example, consider a query that retrieves messages from the previous week:

// Get the time frame
const endTime = new Date();
const startTime = new Date();
startTime.setDate(endTime.getDate() - 7);

// Retrieve a week of messages
const queryOptions = {
timeFilter: {
startTime,
endTime,
},
};

// Query the Store peer with options
await node.store.queryWithOrderedCallback([decoder], callback, options);
const storeQuery = node.store.queryGenerator([decoder, options]);
info

The timeFilter option significantly reduces message retrieval performance. To optimise it, consider resuming message retrieval using a cursor that starts from the last seen message.

Congratulations!

You have successfully retrieved and filtered historical messages on a Light Node using the Store protocol. Have a look at the store-js and store-reactjs-chat examples for working demos.

+ + \ No newline at end of file diff --git a/guides/js-waku/use-waku-create-app/index.html b/guides/js-waku/use-waku-create-app/index.html index 462522a..b5e04d5 100644 --- a/guides/js-waku/use-waku-create-app/index.html +++ b/guides/js-waku/use-waku-create-app/index.html @@ -4,9 +4,9 @@ Scaffold DApps Using @waku/create-app | Waku Documentation - - - + + +
@@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Scaffold DApps Using @waku/create-app

This guide provides detailed steps to bootstrap your next @waku/sdk project from various example templates using the @waku/create-app package.

Usage

Initialise a new @waku/sdk template using any of the following methods:

npx @waku/create-app [PROJECT DIRECTORY]

Next, select a template to initialise your app from:

waku create app demo

tip

If you have previously installed @waku/create-app globally, we recommend uninstalling the package to ensure that npx always uses the latest version.

Contributing new templates

We welcome and appreciate the contributions of templates for the @waku/create-app package. To contribute a template, please follow these steps:

  1. Create the template, ensuring it is user-friendly and thoroughly tested.
  2. Place the template in the examples folder in the js-waku-examples repository's root.
  3. Commit your changes with a detailed message and push them to your forked repository.
  4. Finally, submit a pull request to the js-waku-examples repository.
  5. Our team will carefully review and merge your submission upon approval.

Waku also provides bounties to encourage community members to contribute to the network and earn rewards. To participate in the bounty program, head to https://github.com/waku-org/bounties.

- - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Scaffold DApps Using @waku/create-app

This guide provides detailed steps to bootstrap your next @waku/sdk project from various example templates using the @waku/create-app package.

Usage

Initialise a new @waku/sdk template using any of the following methods:

npx @waku/create-app [PROJECT DIRECTORY]

Next, select a template to initialise your app from:

waku create app demo

tip

If you have previously installed @waku/create-app globally, we recommend uninstalling the package to ensure that npx always uses the latest version.

Contributing new templates

We welcome and appreciate the contributions of templates for the @waku/create-app package. To contribute a template, please follow these steps:

  1. Create the template, ensuring it is user-friendly and thoroughly tested.
  2. Place the template in the examples folder in the js-waku-examples repository's root.
  3. Commit your changes with a detailed message and push them to your forked repository.
  4. Finally, submit a pull request to the js-waku-examples repository.
  5. Our team will carefully review and merge your submission upon approval.

Waku also provides bounties to encourage community members to contribute to the network and earn rewards. To participate in the bounty program, head to https://github.com/waku-org/bounties.

+ + \ No newline at end of file diff --git a/guides/js-waku/use-waku-react/index.html b/guides/js-waku/use-waku-react/index.html index dc7c7cb..54a86fd 100644 --- a/guides/js-waku/use-waku-react/index.html +++ b/guides/js-waku/use-waku-react/index.html @@ -4,9 +4,9 @@ Build React DApps Using @waku/react | Waku Documentation - - - + + +
@@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Build React DApps Using @waku/react

caution

Currently, the JavaScript Waku SDK (@waku/sdk) is NOT compatible with React Native. We plan to add support for React Native in the future.

The @waku/react package provides components and UI adapters to integrate @waku/sdk into React applications effortlessly. This guide provides detailed steps for using @waku/react in your project.

Install the dependencies

First, set up a project using any production-grade React framework or an existing React application. For this guide, we will create a boilerplate using ViteJS:

npm create vite@latest [PROJECT DIRECTORY] -- --template react

Next, install the required packages for integrating @waku/sdk using your preferred package manager:

npm install @waku/react @waku/sdk protobufjs

Initialise the Waku provider

In the main.jsx file, which serves as the entry point for a React app, we will set up the LightNodeProvider context provider to wrap the entire application within the Waku provider. Import the following on top of your file:

src/main.jsx
import { LightNodeProvider } from "@waku/react";

// Set the Light Node options
const NODE_OPTIONS = { defaultBootstrap: true };

ReactDOM.createRoot(document.getElementById('root')).render(
// Use the Light Node context provider
<React.StrictMode>
<LightNodeProvider options={NODE_OPTIONS}>
<App />
</LightNodeProvider>
</React.StrictMode>,
)

Next, create and start a Light Node using the useWaku() function within the App.jsx file:

src/App.jsx
import { useWaku } from "@waku/react";

function App() {
// Create and start a Light Node
const { node, error, isLoading } = useWaku();

// "node" is the created Light Node
// "error" captures any error that occurs during node creation
// "isLoading" indicates whether the node is still being created
}

Build the application interface

Let's build a user interface for sending messages and viewing past messages, modify the App.jsx file with the following code block:

src/App.jsx
import { useState, useEffect } from 'react';
import { useWaku } from "@waku/react";
import { createEncoder, createDecoder } from "@waku/sdk";
import protobuf from 'protobufjs';
import './App.css'

function App() {
const [inputMessage, setInputMessage] = useState("");
const [messages, setMessages] = useState([]);

// Update the inputMessage state as the user input changes
const handleInputChange = (e) => {
setInputMessage(e.target.value);
};

// Create and start a Light Node
const { node, error, isLoading } = useWaku();

// Create a message encoder and decoder
const contentTopic = "/waku-react-guide/1/chat/proto";
const encoder = createEncoder({ contentTopic });
const decoder = createDecoder(contentTopic);

// Create a message structure using Protobuf
const ChatMessage = new protobuf.Type("ChatMessage")
.add(new protobuf.Field("timestamp", 1, "uint64"))
.add(new protobuf.Field("message", 2, "string"));

// Send the message using Light Push
const sendMessage = async () => {}

return (
<>
<div className="chat-interface">
<h1>Waku React Demo</h1>
<div className="chat-body">
{messages.map((message, index) => (
<div key={index} className="chat-message">
<span>{new Date(message.timestamp).toUTCString()}</span>
<div className="message-text">{message.message}</div>
</div>
))}
</div>
<div className="chat-footer">
<input
type="text"
id="message-input"
value={inputMessage}
onChange={handleInputChange}
placeholder="Type your message..."
/>
<button className="send-button" onClick={sendMessage}>Send</button>
</div>
</div>
</>
)
}

export default App
info

In the code above, we also created a message encoder and decoder using the createEncoder() and createDecoder() functions, along with the application message structure with Protobuf.

Next, modify the App.css file with the following code block:

src/App.css
#root {
margin: 0 auto;
}

.chat-interface {
display: flex;
flex-direction: column;
height: 100vh;
border: 1px solid #ccc;
}

.chat-body {
flex-grow: 1;
overflow-y: auto;
padding: 10px;
}

.message-text {
background-color: #f1f1f1;
color: #000;
padding: 10px;
margin-bottom: 10px;
}

.chat-footer {
display: flex;
padding: 10px;
background-color: #f1f1f1;
align-items: center;
}

#message-input {
flex-grow: 1;
border-radius: 4px;
padding: 10px;
margin-right: 10px;
}

.send-button {
background-color: #007bff;
border-radius: 4px;
}

Send messages using light push

To send messages in our application, we need to modify the sendMessage() function to serialize user input into our Protobuf structure and push it to the network using the useLightPush() function:

src/App.jsx
import { useLightPush } from "@waku/react";

function App() {
// Bind push method to a node and encoder
const { push } = useLightPush({ node, encoder });

// Send the message using Light Push
const sendMessage = async () => {
if (!push || inputMessage.length === 0) return;

// Create a new message object
const timestamp = Date.now();
const protoMessage = ChatMessage.create({
timestamp: timestamp,
message: inputMessage
});

// Serialise the message and push to the network
const payload = ChatMessage.encode(protoMessage).finish();
const { recipients, errors } = await push({ payload, timestamp });

// Check for errors
if (errors.length === 0) {
setInputMessage("");
console.log("MESSAGE PUSHED");
} else {
console.log(errors);
}
};
}

Receive messages using filter

To display messages in our application, we need to use the useFilterMessages() function to create a Filter subscription, receive incoming messages, and render them in our interface:

src/App.jsx
import { useFilterMessages } from "@waku/react";

function App() {
// Receive messages from Filter subscription
const { messages: filterMessages } = useFilterMessages({ node, decoder });

// Render the list of messages
useEffect(() => {
setMessages(filterMessages.map((wakuMessage) => {
if (!wakuMessage.payload) return;
return ChatMessage.decode(wakuMessage.payload);
}));
}, [filterMessages]);
}

Retrieve messages using store

To display messages from the past, we need to retrieve them from the Store protocol using the useStoreMessages() function when our application initialises and then render them alongside newly received messages:

src/App.jsx
import { useFilterMessages, useStoreMessages } from "@waku/react";

function App() {
// Query Store peers for past messages
const { messages: storeMessages } = useStoreMessages({ node, decoder });

// Receive messages from Filter subscription
const { messages: filterMessages } = useFilterMessages({ node, decoder });

// Render both past and new messages
useEffect(() => {
const allMessages = storeMessages.concat(filterMessages);
setMessages(allMessages.map((wakuMessage) => {
if (!wakuMessage.payload) return;
return ChatMessage.decode(wakuMessage.payload);
}));
}, [filterMessages, storeMessages]);
}
info

To explore the available Store query options, have a look at the Retrieve Messages Using Store Protocol guide.

tip

You have successfully integrated @waku/sdk into a React application using the @waku/react package. Have a look at the web-chat example for a working demo and the Building a Tic-Tac-Toe Game with Waku tutorial to learn more.

- - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Build React DApps Using @waku/react

caution

Currently, the JavaScript Waku SDK (@waku/sdk) is NOT compatible with React Native. We plan to add support for React Native in the future.

The @waku/react package provides components and UI adapters to integrate @waku/sdk into React applications effortlessly. This guide provides detailed steps for using @waku/react in your project.

Install the dependencies

First, set up a project using any production-grade React framework or an existing React application. For this guide, we will create a boilerplate using ViteJS:

npm create vite@latest [PROJECT DIRECTORY] -- --template react

Next, install the required packages for integrating @waku/sdk using your preferred package manager:

npm install @waku/react @waku/sdk protobufjs

Initialise the Waku provider

In the main.jsx file, which serves as the entry point for a React app, we will set up the LightNodeProvider context provider to wrap the entire application within the Waku provider. Import the following on top of your file:

src/main.jsx
import { LightNodeProvider } from "@waku/react";

// Set the Light Node options
const NODE_OPTIONS = { defaultBootstrap: true };

ReactDOM.createRoot(document.getElementById('root')).render(
// Use the Light Node context provider
<React.StrictMode>
<LightNodeProvider options={NODE_OPTIONS}>
<App />
</LightNodeProvider>
</React.StrictMode>,
)

Next, create and start a Light Node using the useWaku() function within the App.jsx file:

src/App.jsx
import { useWaku } from "@waku/react";

function App() {
// Create and start a Light Node
const { node, error, isLoading } = useWaku();

// "node" is the created Light Node
// "error" captures any error that occurs during node creation
// "isLoading" indicates whether the node is still being created
}

Build the application interface

Let's build a user interface for sending messages and viewing past messages, modify the App.jsx file with the following code block:

src/App.jsx
import { useState, useEffect } from 'react';
import { useWaku } from "@waku/react";
import { createEncoder, createDecoder } from "@waku/sdk";
import protobuf from 'protobufjs';
import './App.css'

function App() {
const [inputMessage, setInputMessage] = useState("");
const [messages, setMessages] = useState([]);

// Update the inputMessage state as the user input changes
const handleInputChange = (e) => {
setInputMessage(e.target.value);
};

// Create and start a Light Node
const { node, error, isLoading } = useWaku();

// Create a message encoder and decoder
const contentTopic = "/waku-react-guide/1/chat/proto";
const encoder = createEncoder({ contentTopic });
const decoder = createDecoder(contentTopic);

// Create a message structure using Protobuf
const ChatMessage = new protobuf.Type("ChatMessage")
.add(new protobuf.Field("timestamp", 1, "uint64"))
.add(new protobuf.Field("message", 2, "string"));

// Send the message using Light Push
const sendMessage = async () => {}

return (
<>
<div className="chat-interface">
<h1>Waku React Demo</h1>
<div className="chat-body">
{messages.map((message, index) => (
<div key={index} className="chat-message">
<span>{new Date(message.timestamp).toUTCString()}</span>
<div className="message-text">{message.message}</div>
</div>
))}
</div>
<div className="chat-footer">
<input
type="text"
id="message-input"
value={inputMessage}
onChange={handleInputChange}
placeholder="Type your message..."
/>
<button className="send-button" onClick={sendMessage}>Send</button>
</div>
</div>
</>
)
}

export default App
info

In the code above, we also created a message encoder and decoder using the createEncoder() and createDecoder() functions, along with the application message structure with Protobuf.

Next, modify the App.css file with the following code block:

src/App.css
#root {
margin: 0 auto;
}

.chat-interface {
display: flex;
flex-direction: column;
height: 100vh;
border: 1px solid #ccc;
}

.chat-body {
flex-grow: 1;
overflow-y: auto;
padding: 10px;
}

.message-text {
background-color: #f1f1f1;
color: #000;
padding: 10px;
margin-bottom: 10px;
}

.chat-footer {
display: flex;
padding: 10px;
background-color: #f1f1f1;
align-items: center;
}

#message-input {
flex-grow: 1;
border-radius: 4px;
padding: 10px;
margin-right: 10px;
}

.send-button {
background-color: #007bff;
border-radius: 4px;
}

Send messages using light push

To send messages in our application, we need to modify the sendMessage() function to serialize user input into our Protobuf structure and push it to the network using the useLightPush() function:

src/App.jsx
import { useLightPush } from "@waku/react";

function App() {
// Bind push method to a node and encoder
const { push } = useLightPush({ node, encoder });

// Send the message using Light Push
const sendMessage = async () => {
if (!push || inputMessage.length === 0) return;

// Create a new message object
const timestamp = Date.now();
const protoMessage = ChatMessage.create({
timestamp: timestamp,
message: inputMessage
});

// Serialise the message and push to the network
const payload = ChatMessage.encode(protoMessage).finish();
const { recipients, errors } = await push({ payload, timestamp });

// Check for errors
if (errors.length === 0) {
setInputMessage("");
console.log("MESSAGE PUSHED");
} else {
console.log(errors);
}
};
}

Receive messages using filter

To display messages in our application, we need to use the useFilterMessages() function to create a Filter subscription, receive incoming messages, and render them in our interface:

src/App.jsx
import { useFilterMessages } from "@waku/react";

function App() {
// Receive messages from Filter subscription
const { messages: filterMessages } = useFilterMessages({ node, decoder });

// Render the list of messages
useEffect(() => {
setMessages(filterMessages.map((wakuMessage) => {
if (!wakuMessage.payload) return;
return ChatMessage.decode(wakuMessage.payload);
}));
}, [filterMessages]);
}

Retrieve messages using store

To display messages from the past, we need to retrieve them from the Store protocol using the useStoreMessages() function when our application initialises and then render them alongside newly received messages:

src/App.jsx
import { useFilterMessages, useStoreMessages } from "@waku/react";

function App() {
// Query Store peers for past messages
const { messages: storeMessages } = useStoreMessages({ node, decoder });

// Receive messages from Filter subscription
const { messages: filterMessages } = useFilterMessages({ node, decoder });

// Render both past and new messages
useEffect(() => {
const allMessages = storeMessages.concat(filterMessages);
setMessages(allMessages.map((wakuMessage) => {
if (!wakuMessage.payload) return;
return ChatMessage.decode(wakuMessage.payload);
}));
}, [filterMessages, storeMessages]);
}
info

To explore the available Store query options, have a look at the Retrieve Messages Using Store Protocol guide.

tip

You have successfully integrated @waku/sdk into a React application using the @waku/react package. Have a look at the web-chat example for a working demo and the Building a Tic-Tac-Toe Game with Waku tutorial to learn more.

+ + \ No newline at end of file diff --git a/guides/nwaku/build-source/index.html b/guides/nwaku/build-source/index.html index e2f2b0b..ee3837e 100644 --- a/guides/nwaku/build-source/index.html +++ b/guides/nwaku/build-source/index.html @@ -4,9 +4,9 @@ Build Nwaku from Source | Waku Documentation - - - + + +
@@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Build Nwaku from Source

This guide provides detailed steps to build a nwaku node from the source code to access the latest development version or a specific commit or release of nwaku. For your convenience, you may want to download a pre-compiled binary instead.

info
  • A minimum of 2GB of RAM is required to build nwaku.
  • Nwaku is available for Linux and macOS, with experimental Windows support.

Prerequisites

To build nwaku, you need the standard developer tools, including a C compiler, GNU Make, Bash, Git, Rustup, and PostgreSQL client library.

sudo apt-get install build-essential git libpq5 jq
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"

Clone the repository

Get the source code from the GitHub repository. The default branch is master, the release candidate for major updates.

git clone https://github.com/waku-org/nwaku
cd nwaku
tip

You can use git tag -l to check specific version tags.

Build the binary

Build the nwaku binary:

make wakunode2

The first make invocation updates to all Git submodules. After each git pull, run make update to keep the submodules updated in the future.

make update

Run the binary

Nwaku will create the wakunode2 binary in the ./build/ directory.

# Run with default configuration
./build/wakunode2

# See available command line options
./build/wakunode2 --help

To learn more about running nwaku, have a look at these guides:

Run test suite

Run the tests for Waku:

make test
Congratulations!

You have successfully built the nwaku binary from the source code. Have a look at the Node Configuration Examples guide to learn how to configure nwaku for different use cases.

- - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Build Nwaku from Source

This guide provides detailed steps to build a nwaku node from the source code to access the latest development version or a specific commit or release of nwaku. For your convenience, you may want to download a pre-compiled binary instead.

info
  • A minimum of 2GB of RAM is required to build nwaku.
  • Nwaku is available for Linux and macOS, with experimental Windows support.

Prerequisites

To build nwaku, you need the standard developer tools, including a C compiler, GNU Make, Bash, Git, Rustup, and PostgreSQL client library.

sudo apt-get install build-essential git libpq5 jq
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"

Clone the repository

Get the source code from the GitHub repository. The default branch is master, the release candidate for major updates.

git clone https://github.com/waku-org/nwaku
cd nwaku
tip

You can use git tag -l to check specific version tags.

Build the binary

Build the nwaku binary:

make wakunode2

The first make invocation updates to all Git submodules. After each git pull, run make update to keep the submodules updated in the future.

make update

Run the binary

Nwaku will create the wakunode2 binary in the ./build/ directory.

# Run with default configuration
./build/wakunode2

# See available command line options
./build/wakunode2 --help

To learn more about running nwaku, have a look at these guides:

Run test suite

Run the tests for Waku:

make test
Congratulations!

You have successfully built the nwaku binary from the source code. Have a look at the Node Configuration Examples guide to learn how to configure nwaku for different use cases.

+ + \ No newline at end of file diff --git a/guides/nwaku/config-methods/index.html b/guides/nwaku/config-methods/index.html index f38cb86..12b712a 100644 --- a/guides/nwaku/config-methods/index.html +++ b/guides/nwaku/config-methods/index.html @@ -4,9 +4,9 @@ Node Configuration Methods | Waku Documentation - - - + + +
@@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Node Configuration Methods

Waku nodes can be configured using a combination of the following methods:

  1. Command line options and flags
  2. Environment variables
  3. TOML configuration files (currently the only supported format)
  4. Default values
info

Take note of the precedence order: Each configuration method overrides the one below it (e.g., command line options override environment variables and configuration files).

Command line options

Node configuration is primarily done using command line options, which override other methods. Specify configuration options by providing them in this format after the binary name:

./build/wakunode2 --tcp-port=65000

When running your node with Docker, provide the command line options after the image name in this format:

docker run statusteam/nim-waku --tcp-port=65000

Environment variables

Nodes can be configured using environment variables by prefixing the variable name with WAKUNODE2_ and using the configuration option in SCREAMING_SNAKE_CASE format.

To set the tcp-port configuration, the wakunode2 binary should be called in this format:

WAKUNODE2_TCP_PORT=65000 ./build/wakunode2

When running your node with Docker, start the node using the -e command option:

docker run -e "WAKUNODE2_TCP_PORT=65000" statusteam/nim-waku
info

This is the second configuration method in order of precedence. Command Line Options override environment variables.

Configuration files

Nodes can be configured using a configuration file following the TOML format:

TOML Config File
log-level = "DEBUG"
tcp-port = 65000
topic = ["/waku/2/default-waku/proto"]
metrics-logging = false

The config-file configuration option lets you specify the configuration file path:

./build/wakunode2 --config-file=[TOML CONFIGURATION FILE]

You can also specify the configuration file via environment variables:

# Using environment variables
WAKUNODE2_CONFIG_FILE=[TOML CONFIGURATION FILE] ./build/wakunode2

# Using environment variables with Docker
docker run -e "WAKUNODE2_CONFIG_FILE=[TOML CONFIGURATION FILE]" statusteam/nim-waku
info

This is the third configuration method in order of precedence. Command Line Options and Environment Variables override configuration files.

Default configuration values

The default configuration is used when no other options are specified. By default, a nwaku node does the following:

  • Generate a new Node Key and PeerID.
  • Listen for incoming libp2p connections on the default TCP port (60000).
  • Subscribe to the default Pub/Sub topic (/waku/2/default-waku/proto).
  • Enable the Relay protocol for relaying messages.
  • Enable the Store protocol as a client, allowing it to query peers for historical messages but not store any message itself.

To see the default values of all configuration options, run wakunode2 --help:

./build/wakunode2 --help
tip

To explore the available node configuration options, have a look at the Node Configuration Options guide.

- - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Node Configuration Methods

Waku nodes can be configured using a combination of the following methods:

  1. Command line options and flags
  2. Environment variables
  3. TOML configuration files (currently the only supported format)
  4. Default values
info

Take note of the precedence order: Each configuration method overrides the one below it (e.g., command line options override environment variables and configuration files).

Command line options

Node configuration is primarily done using command line options, which override other methods. Specify configuration options by providing them in this format after the binary name:

./build/wakunode2 --tcp-port=65000

When running your node with Docker, provide the command line options after the image name in this format:

docker run statusteam/nim-waku --tcp-port=65000

Environment variables

Nodes can be configured using environment variables by prefixing the variable name with WAKUNODE2_ and using the configuration option in SCREAMING_SNAKE_CASE format.

To set the tcp-port configuration, the wakunode2 binary should be called in this format:

WAKUNODE2_TCP_PORT=65000 ./build/wakunode2

When running your node with Docker, start the node using the -e command option:

docker run -e "WAKUNODE2_TCP_PORT=65000" statusteam/nim-waku
info

This is the second configuration method in order of precedence. Command Line Options override environment variables.

Configuration files

Nodes can be configured using a configuration file following the TOML format:

TOML Config File
log-level = "DEBUG"
tcp-port = 65000
topic = ["/waku/2/default-waku/proto"]
metrics-logging = false

The config-file configuration option lets you specify the configuration file path:

./build/wakunode2 --config-file=[TOML CONFIGURATION FILE]

You can also specify the configuration file via environment variables:

# Using environment variables
WAKUNODE2_CONFIG_FILE=[TOML CONFIGURATION FILE] ./build/wakunode2

# Using environment variables with Docker
docker run -e "WAKUNODE2_CONFIG_FILE=[TOML CONFIGURATION FILE]" statusteam/nim-waku
info

This is the third configuration method in order of precedence. Command Line Options and Environment Variables override configuration files.

Default configuration values

The default configuration is used when no other options are specified. By default, a nwaku node does the following:

  • Generate a new Node Key and PeerID.
  • Listen for incoming libp2p connections on the default TCP port (60000).
  • Subscribe to the default Pub/Sub topic (/waku/2/default-waku/proto).
  • Enable the Relay protocol for relaying messages.
  • Enable the Store protocol as a client, allowing it to query peers for historical messages but not store any message itself.

To see the default values of all configuration options, run wakunode2 --help:

./build/wakunode2 --help
tip

To explore the available node configuration options, have a look at the Node Configuration Options guide.

+ + \ No newline at end of file diff --git a/guides/nwaku/config-options/index.html b/guides/nwaku/config-options/index.html index f009afe..cf3a5f5 100644 --- a/guides/nwaku/config-options/index.html +++ b/guides/nwaku/config-options/index.html @@ -4,9 +4,9 @@ Node Configuration Options | Waku Documentation - - - + + +
@@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Node Configuration Options

Here are the available node configuration options, along with their default values and descriptions:

Application-level config

NameDefault ValueDescription
config-fileLoads configuration from a TOML file (cmd-line parameters take precedence)
protected-topicnewSeq[ProtectedTopic](0)Topics and its public key to be used for message validation, topic:pubkey. Argument may be repeated

Log config

NameDefault ValueDescription
log-levellogging.LogLevel.INFOSets the log level for process. Supported levels: TRACE, DEBUG, INFO, NOTICE, WARN, ERROR or FATAL
log-formatlogging.LogFormat.TEXTSpecifies what kind of logs should be written to stdout. Supported formats: TEXT, JSON

General node config

NameDefault ValueDescription
cluster-id0Cluster id that the node is running in. Node in a different cluster id is disconnected
agent-stringnwakuNode agent string which is used as identifier in network
nodekeyP2P node private key as 64-char hex string
listen-addressdefaultListenAddress()Listening address for LibP2P (and Discovery v5, if enabled) traffic
tcp-port60000TCP listening port
ports-shift0Add a shift to all port numbers
natanySpecify method to use for determining public address. Must be one of: any, none, upnp, pmp, extip:<IP>
ext-multiaddrExternal multiaddresses to advertise to the network. Argument may be repeated
ext-multiaddr-onlyfalseOnly announce external multiaddresses
max-connections50Maximum allowed number of libp2p connections
max-relay-peersMaximum allowed number of relay peers
peer-store-capacityMaximum stored peers in the peerstore
peer-persistencefalseEnable peer persistence

DNS addrs config

NameDefault ValueDescription
dns-addrstrueEnable resolution of dnsaddr, dns4 or dns6 multiaddrs
dns-addrs-name-server["1.1.1.1", "1.0.0.1"]DNS name server IPs to query for DNS multiaddrs resolution. Argument may be repeated
dns4-domain-nameThe domain name resolving to the node's public IPv4 address

Relay config

NameDefault ValueDescription
relaytrueEnable relay protocol: true|false
relay-peer-exchangefalseEnable gossipsub peer exchange in relay protocol: true|false
rln-relayfalseEnable spam protection through rln-relay: true|false
rln-relay-cred-pathThe path for persisting rln-relay credential
rln-relay-membership-indexThe index of the onchain commitment to use
rln-relay-dynamicfalseEnable waku-rln-relay with on-chain dynamic group management: true|false
rln-relay-id-keyRln relay identity secret key as a Hex string
rln-relay-id-commitment-keyRln relay identity commitment key as a Hex string
rln-relay-eth-client-addressws://localhost:8540/WebSocket address of an Ethereum testnet client e.g., ws://localhost:8540/
rln-relay-eth-contract-addressAddress of membership contract on an Ethereum testnet
rln-relay-eth-private-keyPrivate key for broadcasting transactions
executefalseRuns the registration function on-chain. By default, a dry-run will occur
rln-relay-cred-passwordPassword for encrypting RLN credentials
rln-relay-tree-pathPath to the RLN merkle tree sled db (https://github.com/spacejam/sled)
rln-relay-bandwidth-threshold0 # to maintain backwards compatibilityMessage rate in bytes/sec after which verification of proofs should happen
staticnodePeer multiaddr to directly connect with. Argument may be repeated
keep-alivefalseEnable keep-alive for idle connections: true|false
topic["/waku/2/default-waku/proto"]Default topic to subscribe to. Argument may be repeated. Deprecated! Please use pubsub-topic and/or content-topic instead
pubsub-topicDefault pubsub topic to subscribe to. Argument may be repeated
content-topicDefault content topic to subscribe to. Argument may be repeated

Store and message store config

NameDefault ValueDescription
storefalseEnable/disable waku store protocol
storenodePeer multiaddress to query for storage
store-message-retention-policytime:172800Message store retention policy. Time retention policy: time:<seconds>. Capacity retention policy: capacity:<count>. Size retention policy: size:<xMB/xGB>. Set to none to disable
store-message-db-urlsqlite://store.sqlite3The database connection URL for persistent storage
store-message-db-vacuumfalseEnable database vacuuming at start. Only supported by SQLite database engine
store-message-db-migrationtrueEnable database migration at start

Filter config

NameDefault ValueDescription
filterfalseEnable filter protocol: true|false
filternodePeer multiaddr to request content filtering of messages
filter-timeout14400 # 4 hoursTimeout for filter node in seconds
filter-subscription-timeout300 # 5 minutesTimeout for filter subscription without ping or refresh it, in seconds. Only for v2 filter protocol
filter-max-peers-to-serve1000Maximum number of peers to serve at a time. Only for v2 filter protocol
filter-max-criteria1000Maximum number of pubsub and content topic combinations per peer at a time. Only for v2 filter protocol

Light push config

NameDefault ValueDescription
lightpushfalseEnable lightpush protocol: true|false
lightpushnodePeer multiaddr to request lightpush of published messages

REST HTTP config

NameDefault ValueDescription
restfalseEnable Waku REST HTTP server: true|false
rest-address127.0.0.1Listening address of the REST HTTP server
rest-port8645Listening port of the REST HTTP server
rest-relay-cache-capacity30Capacity of the Relay REST API message cache
rest-adminfalseEnable access to REST HTTP Admin API: true|false
rest-privatefalseEnable access to REST HTTP Private API: true|false
rest-allow-originAllow cross-origin requests from the specified origin. When using the REST API in a browser, specify the origin host to get a valid response from the node REST HTTP server. This option may be repeated and can contain wildcards (?,*) for defining URLs and ports such as localhost:*, 127.0.0.1:8080, or allow any website with *

Metrics config

NameDefault ValueDescription
metrics-serverfalseEnable the metrics server: true|false
metrics-server-address127.0.0.1Listening address of the metrics server
metrics-server-port8008Listening HTTP port of the metrics server
metrics-loggingtrueEnable metrics logging: true|false

DNS discovery config

NameDefault ValueDescription
dns-discoveryfalseEnable discovering nodes via DNS
dns-discovery-urlURL for DNS node list in format 'enrtree://<key>@<fqdn>'
dns-discovery-name-server["1.1.1.1", "1.0.0.1"]DNS name server IPs to query. Argument may be repeated

Discv5 config

NameDefault ValueDescription
discv5-discoveryfalseEnable discovering nodes via Node Discovery v5
discv5-udp-port9000Listening UDP port for Node Discovery v5
discv5-bootstrap-nodeText-encoded ENR for bootstrap node. Used when connecting to the network. Argument may be repeated
discv5-enr-auto-updatefalseDiscovery can automatically update its ENR with the IP address
discv5-table-ip-limit10Maximum amount of nodes with the same IP in discv5 routing tables
discv5-bucket-ip-limit2Maximum amount of nodes with the same IP in discv5 routing table buckets
discv5-bits-per-hop1Kademlia's b variable, increase for less hops per lookup

Waku peer exchange config

NameDefault ValueDescription
peer-exchangefalseEnable waku peer exchange protocol (responder side): true|false
peer-exchange-nodePeer multiaddr to send peer exchange requests to. (enables peer exchange protocol requester side)

WebSocket config

NameDefault ValueDescription
websocket-supportfalseEnable websocket: true|false
websocket-port8000WebSocket listening port
websocket-secure-supportfalseEnable secure websocket: true|false
websocket-secure-key-pathSecure websocket key path: '/path/to/key.txt'
websocket-secure-cert-pathSecure websocket Certificate path: '/path/to/cert.txt'
tip

To configure your node using the provided configuration options, have a look at the Node Configuration Methods guide.

- - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Node Configuration Options

Here are the available node configuration options, along with their default values and descriptions:

Application-level config

NameDefault ValueDescription
config-fileLoads configuration from a TOML file (cmd-line parameters take precedence)
protected-topicnewSeq[ProtectedTopic](0)Topics and its public key to be used for message validation, topic:pubkey. Argument may be repeated

Log config

NameDefault ValueDescription
log-levellogging.LogLevel.INFOSets the log level for process. Supported levels: TRACE, DEBUG, INFO, NOTICE, WARN, ERROR or FATAL
log-formatlogging.LogFormat.TEXTSpecifies what kind of logs should be written to stdout. Supported formats: TEXT, JSON

General node config

NameDefault ValueDescription
cluster-id0Cluster id that the node is running in. Node in a different cluster id is disconnected
agent-stringnwakuNode agent string which is used as identifier in network
nodekeyP2P node private key as 64-char hex string
listen-addressdefaultListenAddress()Listening address for LibP2P (and Discovery v5, if enabled) traffic
tcp-port60000TCP listening port
ports-shift0Add a shift to all port numbers
natanySpecify method to use for determining public address. Must be one of: any, none, upnp, pmp, extip:<IP>
ext-multiaddrExternal multiaddresses to advertise to the network. Argument may be repeated
ext-multiaddr-onlyfalseOnly announce external multiaddresses
max-connections50Maximum allowed number of libp2p connections
max-relay-peersMaximum allowed number of relay peers
peer-store-capacityMaximum stored peers in the peerstore
peer-persistencefalseEnable peer persistence

DNS addrs config

NameDefault ValueDescription
dns-addrstrueEnable resolution of dnsaddr, dns4 or dns6 multiaddrs
dns-addrs-name-server["1.1.1.1", "1.0.0.1"]DNS name server IPs to query for DNS multiaddrs resolution. Argument may be repeated
dns4-domain-nameThe domain name resolving to the node's public IPv4 address

Relay config

NameDefault ValueDescription
relaytrueEnable relay protocol: true|false
relay-peer-exchangefalseEnable gossipsub peer exchange in relay protocol: true|false
rln-relayfalseEnable spam protection through rln-relay: true|false
rln-relay-cred-pathThe path for persisting rln-relay credential
rln-relay-membership-indexThe index of the onchain commitment to use
rln-relay-dynamicfalseEnable waku-rln-relay with on-chain dynamic group management: true|false
rln-relay-id-keyRln relay identity secret key as a Hex string
rln-relay-id-commitment-keyRln relay identity commitment key as a Hex string
rln-relay-eth-client-addressws://localhost:8540/WebSocket address of an Ethereum testnet client e.g., ws://localhost:8540/
rln-relay-eth-contract-addressAddress of membership contract on an Ethereum testnet
rln-relay-eth-private-keyPrivate key for broadcasting transactions
executefalseRuns the registration function on-chain. By default, a dry-run will occur
rln-relay-cred-passwordPassword for encrypting RLN credentials
rln-relay-tree-pathPath to the RLN merkle tree sled db (https://github.com/spacejam/sled)
rln-relay-bandwidth-threshold0 # to maintain backwards compatibilityMessage rate in bytes/sec after which verification of proofs should happen
staticnodePeer multiaddr to directly connect with. Argument may be repeated
keep-alivefalseEnable keep-alive for idle connections: true|false
topic["/waku/2/default-waku/proto"]Default topic to subscribe to. Argument may be repeated. Deprecated! Please use pubsub-topic and/or content-topic instead
pubsub-topicDefault pubsub topic to subscribe to. Argument may be repeated
content-topicDefault content topic to subscribe to. Argument may be repeated

Store and message store config

NameDefault ValueDescription
storefalseEnable/disable waku store protocol
storenodePeer multiaddress to query for storage
store-message-retention-policytime:172800Message store retention policy. Time retention policy: time:<seconds>. Capacity retention policy: capacity:<count>. Size retention policy: size:<xMB/xGB>. Set to none to disable
store-message-db-urlsqlite://store.sqlite3The database connection URL for persistent storage
store-message-db-vacuumfalseEnable database vacuuming at start. Only supported by SQLite database engine
store-message-db-migrationtrueEnable database migration at start

Filter config

NameDefault ValueDescription
filterfalseEnable filter protocol: true|false
filternodePeer multiaddr to request content filtering of messages
filter-timeout14400 # 4 hoursTimeout for filter node in seconds
filter-subscription-timeout300 # 5 minutesTimeout for filter subscription without ping or refresh it, in seconds. Only for v2 filter protocol
filter-max-peers-to-serve1000Maximum number of peers to serve at a time. Only for v2 filter protocol
filter-max-criteria1000Maximum number of pubsub and content topic combinations per peer at a time. Only for v2 filter protocol

Light push config

NameDefault ValueDescription
lightpushfalseEnable lightpush protocol: true|false
lightpushnodePeer multiaddr to request lightpush of published messages

REST HTTP config

NameDefault ValueDescription
restfalseEnable Waku REST HTTP server: true|false
rest-address127.0.0.1Listening address of the REST HTTP server
rest-port8645Listening port of the REST HTTP server
rest-relay-cache-capacity30Capacity of the Relay REST API message cache
rest-adminfalseEnable access to REST HTTP Admin API: true|false
rest-privatefalseEnable access to REST HTTP Private API: true|false
rest-allow-originAllow cross-origin requests from the specified origin. When using the REST API in a browser, specify the origin host to get a valid response from the node REST HTTP server. This option may be repeated and can contain wildcards (?,*) for defining URLs and ports such as localhost:*, 127.0.0.1:8080, or allow any website with *

Metrics config

NameDefault ValueDescription
metrics-serverfalseEnable the metrics server: true|false
metrics-server-address127.0.0.1Listening address of the metrics server
metrics-server-port8008Listening HTTP port of the metrics server
metrics-loggingtrueEnable metrics logging: true|false

DNS discovery config

NameDefault ValueDescription
dns-discoveryfalseEnable discovering nodes via DNS
dns-discovery-urlURL for DNS node list in format 'enrtree://<key>@<fqdn>'
dns-discovery-name-server["1.1.1.1", "1.0.0.1"]DNS name server IPs to query. Argument may be repeated

Discv5 config

NameDefault ValueDescription
discv5-discoveryfalseEnable discovering nodes via Node Discovery v5
discv5-udp-port9000Listening UDP port for Node Discovery v5
discv5-bootstrap-nodeText-encoded ENR for bootstrap node. Used when connecting to the network. Argument may be repeated
discv5-enr-auto-updatefalseDiscovery can automatically update its ENR with the IP address
discv5-table-ip-limit10Maximum amount of nodes with the same IP in discv5 routing tables
discv5-bucket-ip-limit2Maximum amount of nodes with the same IP in discv5 routing table buckets
discv5-bits-per-hop1Kademlia's b variable, increase for less hops per lookup

Waku peer exchange config

NameDefault ValueDescription
peer-exchangefalseEnable waku peer exchange protocol (responder side): true|false
peer-exchange-nodePeer multiaddr to send peer exchange requests to. (enables peer exchange protocol requester side)

WebSocket config

NameDefault ValueDescription
websocket-supportfalseEnable websocket: true|false
websocket-port8000WebSocket listening port
websocket-secure-supportfalseEnable secure websocket: true|false
websocket-secure-key-pathSecure websocket key path: '/path/to/key.txt'
websocket-secure-cert-pathSecure websocket Certificate path: '/path/to/cert.txt'
tip

To configure your node using the provided configuration options, have a look at the Node Configuration Methods guide.

+ + \ No newline at end of file diff --git a/guides/nwaku/configure-discovery/index.html b/guides/nwaku/configure-discovery/index.html index 52c6c28..b14e5a2 100644 --- a/guides/nwaku/configure-discovery/index.html +++ b/guides/nwaku/configure-discovery/index.html @@ -4,9 +4,9 @@ Configure Peer Discovery | Waku Documentation - - - + + +
@@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Configure Peer Discovery

This guide provides detailed steps to configure a nwaku node to discover and connect with peers in the Waku Network.

info

You can configure a nwaku node to use multiple peer discovery mechanisms simultaneously.

Configure static peers

You can provide static peers to a nwaku node during startup using the staticnode configuration option. To connect to multiple peers on startup, repeat the staticnode option:

./build/wakunode2 \
--staticnode=[PEER MULTIADDR 1] \
--staticnode=[PEER MULTIADDR 2]

For example, consider a nwaku node that connects to two static peers on the same local host (IP: 0.0.0.0) using TCP ports 60002 and 60003:

./build/wakunode2 \
--staticnode=/ip4/0.0.0.0/tcp/60002/p2p/16Uiu2HAkzjwwgEAXfeGNMKFPSpc6vGBRqCdTLG5q3Gmk2v4pQw7H \
--staticnode=/ip4/0.0.0.0/tcp/60003/p2p/16Uiu2HAmFBA7LGtwY5WVVikdmXVo3cKLqkmvVtuDu63fe8safeQJ

Configure DNS discovery

To enable DNS Discovery in a nwaku node, use the following configuration options:

  • dns-discovery: Enables DNS Discovery on the node (disabled by default).
  • dns-discovery-url: URL for DNS node list in the format enrtree://<key>@<fqdn> where <fqdn> is the fully qualified domain name and <key> is the base32 encoding of the compressed 32-byte public key that signed the list at that location.
  • dns-discovery-name-server (optional): DNS name server IPs to query. You can repeat this option to provide multiple DNS name servers.
./build/wakunode2 \
--dns-discovery=true \
--dns-discovery-url=enrtree://[PUBLIC KEY]@[DOMAIN NAME] \
--dns-discovery-name-server=[DNS NAME SERVER IP]
info

If you omit the dns-discovery-name-server option, nwaku will attempt to use the CloudFlare servers 1.1.1.1 and 1.0.0.1.

For example, consider a nwaku node that enables DNS Discovery, connects to a DNS node list, and queries the IPs 8.8.8.8 and 8.8.4.4:

./build/wakunode2 \
--dns-discovery=true \
--dns-discovery-url=enrtree://AIRVQ5DDA4FFWLRBCHJWUWOO6X6S4ZTZ5B667LQ6AJU6PEYDLRD5O@sandbox.waku.nodes.status.im \
--dns-discovery-name-server=8.8.8.8 \
--dns-discovery-name-server=8.8.4.4

Configure Discv5

To enable Discv5 in a nwaku node, use the following configuration options:

  • discv5-discovery: Enables Discv5 on the node (disabled by default).
  • discv5-bootstrap-node: ENR for Discv5 routing table bootstrap node. You can repeat this option to provide multiple bootstrap entries.
./build/wakunode2 \
--discv5-discovery=true \
--discv5-bootstrap-node=[DISCV5 ENR BOOTSTRAP ENTRY 1] \
--discv5-bootstrap-node=[DISCV5 ENR BOOTSTRAP ENTRY 2]

For example, consider a nwaku node that enables Discv5 and bootstraps its routing table using a static ENR:

./build/wakunode2 \
--discv5-discovery=true \
--discv5-bootstrap-node=enr:-IO4QDxToTg86pPCK2KvMeVCXC2ADVZWrxXSvNZeaoa0JhShbM5qed69RQz1s1mWEEqJ3aoklo_7EU9iIBcPMVeKlCQBgmlkgnY0iXNlY3AyNTZrMaEDdBHK1Gx6y_zv5DVw5Qb3DtSOMmVHTZO1WSORrF2loL2DdWRwgiMohXdha3UyAw
info

When Discv5 is enabled and used with DNS Discovery, the nwaku node will attempt to bootstrap the Discv5 routing table by extracting ENRs from peers discovered through DNS.

Configure peer exchange

To enable Peer Exchange in a nwaku node, use the following configuration options:

  • peer-exchange: Enables Peer Exchange on the node as a responder (disabled by default).
  • peer-exchange-node (optional): Multiaddr for bootstrap node with the peer exchange protocol enabled.
./build/wakunode2 \
--peer-exchange=true \
--peer-exchange-node=[PEER MULTIADDR WITH EXCHANGE ENABLED]

For example, consider two nwaku nodes configured as a server (peer exchange responder node) and client (node using peer exchange) on the same local host (IP: 0.0.0.0):

Server: Nwaku Node with Peer Exchange Enabled
./build/wakunode2 --peer-exchange=true
Client: Nwaku Node Bootstrapping with Peer Exchange
./build/wakunode2 \
--tcp-port=30305 \
--ports-shift=1 \
--peer-exchange-node=/ip4/0.0.0.0/tcp/60000/p2p/16Uiu2HAmLCe6zVqCS6KMqqRbbhyoJjfYZGr1Q3thTSbyKzibQkFR
info

nwaku provides a relay-peer-exchange option via libp2p for peer exchange, allowing network growth through neighbouring nodes. However, this feature can compromise security and network robustness, so we recommend only using it in high-trust environments.

- - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Configure Peer Discovery

This guide provides detailed steps to configure a nwaku node to discover and connect with peers in the Waku Network.

info

You can configure a nwaku node to use multiple peer discovery mechanisms simultaneously.

Configure static peers

You can provide static peers to a nwaku node during startup using the staticnode configuration option. To connect to multiple peers on startup, repeat the staticnode option:

./build/wakunode2 \
--staticnode=[PEER MULTIADDR 1] \
--staticnode=[PEER MULTIADDR 2]

For example, consider a nwaku node that connects to two static peers on the same local host (IP: 0.0.0.0) using TCP ports 60002 and 60003:

./build/wakunode2 \
--staticnode=/ip4/0.0.0.0/tcp/60002/p2p/16Uiu2HAkzjwwgEAXfeGNMKFPSpc6vGBRqCdTLG5q3Gmk2v4pQw7H \
--staticnode=/ip4/0.0.0.0/tcp/60003/p2p/16Uiu2HAmFBA7LGtwY5WVVikdmXVo3cKLqkmvVtuDu63fe8safeQJ

Configure DNS discovery

To enable DNS Discovery in a nwaku node, use the following configuration options:

  • dns-discovery: Enables DNS Discovery on the node (disabled by default).
  • dns-discovery-url: URL for DNS node list in the format enrtree://<key>@<fqdn> where <fqdn> is the fully qualified domain name and <key> is the base32 encoding of the compressed 32-byte public key that signed the list at that location.
  • dns-discovery-name-server (optional): DNS name server IPs to query. You can repeat this option to provide multiple DNS name servers.
./build/wakunode2 \
--dns-discovery=true \
--dns-discovery-url=enrtree://[PUBLIC KEY]@[DOMAIN NAME] \
--dns-discovery-name-server=[DNS NAME SERVER IP]
info

If you omit the dns-discovery-name-server option, nwaku will attempt to use the CloudFlare servers 1.1.1.1 and 1.0.0.1.

For example, consider a nwaku node that enables DNS Discovery, connects to a DNS node list, and queries the IPs 8.8.8.8 and 8.8.4.4:

./build/wakunode2 \
--dns-discovery=true \
--dns-discovery-url=enrtree://AIRVQ5DDA4FFWLRBCHJWUWOO6X6S4ZTZ5B667LQ6AJU6PEYDLRD5O@sandbox.waku.nodes.status.im \
--dns-discovery-name-server=8.8.8.8 \
--dns-discovery-name-server=8.8.4.4

Configure Discv5

To enable Discv5 in a nwaku node, use the following configuration options:

  • discv5-discovery: Enables Discv5 on the node (disabled by default).
  • discv5-bootstrap-node: ENR for Discv5 routing table bootstrap node. You can repeat this option to provide multiple bootstrap entries.
./build/wakunode2 \
--discv5-discovery=true \
--discv5-bootstrap-node=[DISCV5 ENR BOOTSTRAP ENTRY 1] \
--discv5-bootstrap-node=[DISCV5 ENR BOOTSTRAP ENTRY 2]

For example, consider a nwaku node that enables Discv5 and bootstraps its routing table using a static ENR:

./build/wakunode2 \
--discv5-discovery=true \
--discv5-bootstrap-node=enr:-IO4QDxToTg86pPCK2KvMeVCXC2ADVZWrxXSvNZeaoa0JhShbM5qed69RQz1s1mWEEqJ3aoklo_7EU9iIBcPMVeKlCQBgmlkgnY0iXNlY3AyNTZrMaEDdBHK1Gx6y_zv5DVw5Qb3DtSOMmVHTZO1WSORrF2loL2DdWRwgiMohXdha3UyAw
info

When Discv5 is enabled and used with DNS Discovery, the nwaku node will attempt to bootstrap the Discv5 routing table by extracting ENRs from peers discovered through DNS.

Configure peer exchange

To enable Peer Exchange in a nwaku node, use the following configuration options:

  • peer-exchange: Enables Peer Exchange on the node as a responder (disabled by default).
  • peer-exchange-node (optional): Multiaddr for bootstrap node with the peer exchange protocol enabled.
./build/wakunode2 \
--peer-exchange=true \
--peer-exchange-node=[PEER MULTIADDR WITH EXCHANGE ENABLED]

For example, consider two nwaku nodes configured as a server (peer exchange responder node) and client (node using peer exchange) on the same local host (IP: 0.0.0.0):

Server: Nwaku Node with Peer Exchange Enabled
./build/wakunode2 --peer-exchange=true
Client: Nwaku Node Bootstrapping with Peer Exchange
./build/wakunode2 \
--tcp-port=30305 \
--ports-shift=1 \
--peer-exchange-node=/ip4/0.0.0.0/tcp/60000/p2p/16Uiu2HAmLCe6zVqCS6KMqqRbbhyoJjfYZGr1Q3thTSbyKzibQkFR
info

nwaku provides a relay-peer-exchange option via libp2p for peer exchange, allowing network growth through neighbouring nodes. However, this feature can compromise security and network robustness, so we recommend only using it in high-trust environments.

+ + \ No newline at end of file diff --git a/guides/nwaku/configure-nwaku/index.html b/guides/nwaku/configure-nwaku/index.html index af4bc25..dfeb053 100644 --- a/guides/nwaku/configure-nwaku/index.html +++ b/guides/nwaku/configure-nwaku/index.html @@ -4,9 +4,9 @@ Node Configuration Examples | Waku Documentation - - - + + +
@@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Node Configuration Examples

This guide provides detailed steps to configure a nwaku node for different use cases.

Connect to other peers

To join the Waku Network, nodes must bootstrap for an entry point before discovering more peers. Nwaku provides multiple peer discovery mechanisms:

Configure a domain name

You can set up an IPv4 DNS domain name that resolves to the public IPv4 address of a node using the dns4-domain-name option. This allows the node's publicly announced multiaddrs to use the /dns4 scheme.

./build/wakunode2 --dns4-domain-name=[DOMAIN NAME]

For example, consider the domain name nwakunode.com, which resolves to a nwaku node:

./build/wakunode2 --dns4-domain-name=nwakunode.com

Browser nodes can only connect to nodes with a domain name and secure WebSocket (wss) configured. These nodes will generate a discoverable ENR with /wss as the multiaddr and /dns4 as the domain name. This configuration is essential for verifying domain certificates when establishing a secure connection.

info

This example describes configuring a domain name that resolves to your node's IP address and is unrelated to DNS Discovery.

tip

You can use the domain name provided by your cloud provider to configure the domain name for your node.

Configure store protocol and message store

To enable message caching and serve them to network peers, enable the Store protocol using the following configuration options:

  • store: Enables storing messages to serve them to peers (disabled by default).
  • store-message-retention-policy: Retention policy of the store node (how long messages will be stored). Three different retention policies are supported:
    • Time retention policy: time:<duration-in-seconds> (e.g., time:14400)
    • Capacity retention policy: capacity:<messages-count> (e.g, capacity:25000)
    • Size retention policy: size:<storage-in-MB/GB> (e.g, size:512MB or size:10GB)
    • Set this option to none to disable the retention policy. If you omit this option, it will default to time:172800 (48 hours).
  • store-message-db-url: Database connection URL for storing messages in the SQLAlchemy database URL format. Setting this option to an empty string will instruct the node to use the fallback in-memory message store. If you omit this option, it will default to sqlite://store.sqlite3.
./build/wakunode2 \
--store=true \
--store-message-retention-policy=[MESSAGE RETENTION POLICY] \
--store-message-db-url=[DATABASE CONNECTION URL]

For example, consider a nwaku node that is configured to be a Store protocol and retain messages received in the last 21600 seconds (6 hours):

./build/wakunode2 \
--store=true \
--store-message-retention-policy=time:21600 \
--store-message-db-url=sqlite://store.sqlite3

You can configure nwaku as a Store client using the storenode option. This allows the node to query peers for historical messages but not store any message itself.

./build/wakunode2 --storenode=[STORE PEER MULTIADDR]

For example, consider a nwaku node that does not store messages but can query peers for historical messages:

./build/wakunode2 --storenode=/dns4/node-01.ac-cn-hongkong-c.waku.sandbox.status.im/tcp/30303/p2p/16Uiu2HAmSJvSJphxRdbnigUV5bjRRZFBhTtWFTSyiKaQByCjwmpV

Generate and configure a node key

Nodes generate new random key pairs at each boot, leading to different multiaddrs. To maintain consistency, you can use a pre-generated private key with the nodekey option:

./build/wakunode2 --nodekey=[NODE PRIVATE KEY]

This option takes a Secp256k1 private key (64-char hex string). On Linux, you can use the OpenSSL rand command for a pseudo-random 32-byte hex string:

openssl rand -hex 32

# 286cae9f2990bfc49dafdd3a9e737f56ddba3656e5e427108cef456fb67680e8

On Linux, you can create a reusable key file using OpenSSL. To get the 32-byte private key in hex format, use the ecparam command and some standard utilities:

# Generate key file
openssl ecparam -genkey -name secp256k1 -out my_private_key.pem

# Extract 32-byte private key
openssl ec -in my_private_key.pem -outform DER | tail -c +8 | head -c 32| xxd -p -c 32

# read EC key
# writing EC key
# 286cae9f2990bfc49dafdd3a9e737f56ddba3656e5e427108cef456fb67680e8

You can use the output 286cae9f2990bfc49dafdd3a9e737f56ddba3656e5e427108cef456fb67680e8 as a Node Key for nwaku:

./build/wakunode2 --nodekey=286cae9f2990bfc49dafdd3a9e737f56ddba3656e5e427108cef456fb67680e8

Configure WebSocket transport

WebSocket is the only transport method browser nodes support using @waku/sdk. To enable WebSocket in nwaku to serve browser peers, use the following configuration options:

  • websocket-support: Enables WebSocket (ws) on the node (disabled by default).
  • websocket-port (optional): WebSocket listening port. If you omit this option, it will default to 8000.
  • websocket-secure-support: Enables Secure WebSocket (wss) on the node (disabled by default).
  • websocket-secure-key-path: Secure WebSocket key path.
  • websocket-secure-cert-path: Secure WebSocket Certificate path.
./build/wakunode2 \
--websocket-support=true \
--websocket-port=[WEBSOCKET LISTENING PORT] \
--websocket-secure-support=true \
--websocket-secure-key-path=[SECURE WEBSOCKET KEY PATH] \
--websocket-secure-cert-path=[SECURE WEBSOCKET CERTIFICATE PATH]

For example, consider a nwaku node that enabled WebSocket (unencrypted) for local testing on port 8001:

./build/wakunode2 \
--websocket-support=true \
--websocket-port=8001

Consider a nwaku node that enabled Secure WebSocket (encrypted) using its key and certificate (privkey.pem and fullchain.pem) on port 8002:

./build/wakunode2 \
--websocket-secure-support=true \
--websocket-secure-key-path=privkey.pem \
--websocket-secure-cert-path=fullchain.pem \
--websocket-port=8002
tip

You can use Let's Encrypt or Certbot to generate a valid certificate for your nwaku node:

sudo certbot certonly -d <your.domain.name>

Configure REST API server

Nwaku provides a REST API to interact with the node and Waku Network. To enable the REST API, use the following configuration options:

  • rest: Enables the REST API server on the node (disabled by default).
  • rest-address (optional): Listening address of the REST API server. If you omit this option, it will default to 127.0.0.1.
  • rest-port (optional): Listening port of the REST API server. If you omit this option, it will default to 8645.
  • rest-relay-cache-capacity (optional): Capacity of the Relay REST API message cache. If you omit this option, it will default to 30.
  • rest-admin (optional): Enables access to REST admin API (disabled by default).
  • rest-private (optional): Enables access to REST private API (disabled by default).
./build/wakunode2 \
--rest=true \
--rest-address=[REST SERVER LISTENING ADDRESS] \
--rest-port=[REST SERVER LISTENING PORT] \
--rest-relay-cache-capacity=[MESSAGE CACHE CAPACITY] \
--rest-admin=[true|false] \
--rest-private=[true|false]

For example, consider a nwaku node that enabled the REST API server on port 9000:

./build/wakunode2 \
--rest=true \
--rest-port=9000 \
--rest-address=127.0.0.1

Consider a nwaku node that enabled the REST admin and private API with a message cache capacity of 100:

./build/wakunode2 \
--rest=true \
--rest-admin=true \
--rest-private=true \
--rest-relay-cache-capacity=100

Configure filter protocol

To enable nwaku to serve light clients, enable the Filter protocol using filter option:

./build/wakunode2 --filter=true

You can configure nwaku as a Filter client using the filternode and filter-timeout options. This allows the node to request content filtering of messages from peers.

./build/wakunode2 \
--filternode=[FILTER PEER MULTIADDR] \
--filter-timeout=[FILTER PEER TIMEOUT]

For example, consider a nwaku node that requests content filtering of messages from peers with a timeout of 21600 seconds (6 hours):

./build/wakunode2 \
--filternode=/dns4/node-01.ac-cn-hongkong-c.waku.sandbox.status.im/tcp/30303/p2p/16Uiu2HAmSJvSJphxRdbnigUV5bjRRZFBhTtWFTSyiKaQByCjwmpV \
--filter-timeout=21600
info

If you omit the filter-timeout option, it will default to 14400 seconds (4 hours).

Configure light push protocol

To enable nwaku to serve light clients, enable the Light Push protocol using the lightpush option:

./build/wakunode2 --lightpush=true

You can configure nwaku as a Light Push client using the lightpushnode option. This allows the node to request lightpush of published messages from peers.

./build/wakunode2 --lightpushnode=[LIGHT PUSH PEER MULTIADDR]

For example, consider a nwaku node that requests lightpush of published messages from peers:

./build/wakunode2 --lightpushnode=/dns4/node-01.ac-cn-hongkong-c.waku.sandbox.status.im/tcp/30303/p2p/16Uiu2HAmSJvSJphxRdbnigUV5bjRRZFBhTtWFTSyiKaQByCjwmpV

Run nwaku behind a reverse proxy

When using a reverse proxy server for SSL/TLS encryption, you only want to announce the proxy server's IP or domain. Nwaku provides the ext-multiaddr-only and ext-multiaddr options for specifying published multiaddr:

./build/wakunode2 \
--ext-multiaddr-only=true \
--ext-multiaddr=[MULTIADDR TO PUBLISH]
info

The ext-multiaddr-only option takes precedence over the nat and dns4-domain-name options, using the values provided by the ext-multiaddr option instead.

- - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Node Configuration Examples

This guide provides detailed steps to configure a nwaku node for different use cases.

Connect to other peers

To join the Waku Network, nodes must bootstrap for an entry point before discovering more peers. Nwaku provides multiple peer discovery mechanisms:

Configure a domain name

You can set up an IPv4 DNS domain name that resolves to the public IPv4 address of a node using the dns4-domain-name option. This allows the node's publicly announced multiaddrs to use the /dns4 scheme.

./build/wakunode2 --dns4-domain-name=[DOMAIN NAME]

For example, consider the domain name nwakunode.com, which resolves to a nwaku node:

./build/wakunode2 --dns4-domain-name=nwakunode.com

Browser nodes can only connect to nodes with a domain name and secure WebSocket (wss) configured. These nodes will generate a discoverable ENR with /wss as the multiaddr and /dns4 as the domain name. This configuration is essential for verifying domain certificates when establishing a secure connection.

info

This example describes configuring a domain name that resolves to your node's IP address and is unrelated to DNS Discovery.

tip

You can use the domain name provided by your cloud provider to configure the domain name for your node.

Configure store protocol and message store

To enable message caching and serve them to network peers, enable the Store protocol using the following configuration options:

  • store: Enables storing messages to serve them to peers (disabled by default).
  • store-message-retention-policy: Retention policy of the store node (how long messages will be stored). Three different retention policies are supported:
    • Time retention policy: time:<duration-in-seconds> (e.g., time:14400)
    • Capacity retention policy: capacity:<messages-count> (e.g, capacity:25000)
    • Size retention policy: size:<storage-in-MB/GB> (e.g, size:512MB or size:10GB)
    • Set this option to none to disable the retention policy. If you omit this option, it will default to time:172800 (48 hours).
  • store-message-db-url: Database connection URL for storing messages in the SQLAlchemy database URL format. Setting this option to an empty string will instruct the node to use the fallback in-memory message store. If you omit this option, it will default to sqlite://store.sqlite3.
./build/wakunode2 \
--store=true \
--store-message-retention-policy=[MESSAGE RETENTION POLICY] \
--store-message-db-url=[DATABASE CONNECTION URL]

For example, consider a nwaku node that is configured to be a Store protocol and retain messages received in the last 21600 seconds (6 hours):

./build/wakunode2 \
--store=true \
--store-message-retention-policy=time:21600 \
--store-message-db-url=sqlite://store.sqlite3

You can configure nwaku as a Store client using the storenode option. This allows the node to query peers for historical messages but not store any message itself.

./build/wakunode2 --storenode=[STORE PEER MULTIADDR]

For example, consider a nwaku node that does not store messages but can query peers for historical messages:

./build/wakunode2 --storenode=/dns4/node-01.ac-cn-hongkong-c.waku.sandbox.status.im/tcp/30303/p2p/16Uiu2HAmSJvSJphxRdbnigUV5bjRRZFBhTtWFTSyiKaQByCjwmpV

Generate and configure a node key

Nodes generate new random key pairs at each boot, leading to different multiaddrs. To maintain consistency, you can use a pre-generated private key with the nodekey option:

./build/wakunode2 --nodekey=[NODE PRIVATE KEY]

This option takes a Secp256k1 private key (64-char hex string). On Linux, you can use the OpenSSL rand command for a pseudo-random 32-byte hex string:

openssl rand -hex 32

# 286cae9f2990bfc49dafdd3a9e737f56ddba3656e5e427108cef456fb67680e8

On Linux, you can create a reusable key file using OpenSSL. To get the 32-byte private key in hex format, use the ecparam command and some standard utilities:

# Generate key file
openssl ecparam -genkey -name secp256k1 -out my_private_key.pem

# Extract 32-byte private key
openssl ec -in my_private_key.pem -outform DER | tail -c +8 | head -c 32| xxd -p -c 32

# read EC key
# writing EC key
# 286cae9f2990bfc49dafdd3a9e737f56ddba3656e5e427108cef456fb67680e8

You can use the output 286cae9f2990bfc49dafdd3a9e737f56ddba3656e5e427108cef456fb67680e8 as a Node Key for nwaku:

./build/wakunode2 --nodekey=286cae9f2990bfc49dafdd3a9e737f56ddba3656e5e427108cef456fb67680e8

Configure WebSocket transport

WebSocket is the only transport method browser nodes support using @waku/sdk. To enable WebSocket in nwaku to serve browser peers, use the following configuration options:

  • websocket-support: Enables WebSocket (ws) on the node (disabled by default).
  • websocket-port (optional): WebSocket listening port. If you omit this option, it will default to 8000.
  • websocket-secure-support: Enables Secure WebSocket (wss) on the node (disabled by default).
  • websocket-secure-key-path: Secure WebSocket key path.
  • websocket-secure-cert-path: Secure WebSocket Certificate path.
./build/wakunode2 \
--websocket-support=true \
--websocket-port=[WEBSOCKET LISTENING PORT] \
--websocket-secure-support=true \
--websocket-secure-key-path=[SECURE WEBSOCKET KEY PATH] \
--websocket-secure-cert-path=[SECURE WEBSOCKET CERTIFICATE PATH]

For example, consider a nwaku node that enabled WebSocket (unencrypted) for local testing on port 8001:

./build/wakunode2 \
--websocket-support=true \
--websocket-port=8001

Consider a nwaku node that enabled Secure WebSocket (encrypted) using its key and certificate (privkey.pem and fullchain.pem) on port 8002:

./build/wakunode2 \
--websocket-secure-support=true \
--websocket-secure-key-path=privkey.pem \
--websocket-secure-cert-path=fullchain.pem \
--websocket-port=8002
tip

You can use Let's Encrypt or Certbot to generate a valid certificate for your nwaku node:

sudo certbot certonly -d <your.domain.name>

Configure REST API server

Nwaku provides a REST API to interact with the node and Waku Network. To enable the REST API, use the following configuration options:

  • rest: Enables the REST API server on the node (disabled by default).
  • rest-address (optional): Listening address of the REST API server. If you omit this option, it will default to 127.0.0.1.
  • rest-port (optional): Listening port of the REST API server. If you omit this option, it will default to 8645.
  • rest-relay-cache-capacity (optional): Capacity of the Relay REST API message cache. If you omit this option, it will default to 30.
  • rest-admin (optional): Enables access to REST admin API (disabled by default).
  • rest-private (optional): Enables access to REST private API (disabled by default).
./build/wakunode2 \
--rest=true \
--rest-address=[REST SERVER LISTENING ADDRESS] \
--rest-port=[REST SERVER LISTENING PORT] \
--rest-relay-cache-capacity=[MESSAGE CACHE CAPACITY] \
--rest-admin=[true|false] \
--rest-private=[true|false]

For example, consider a nwaku node that enabled the REST API server on port 9000:

./build/wakunode2 \
--rest=true \
--rest-port=9000 \
--rest-address=127.0.0.1

Consider a nwaku node that enabled the REST admin and private API with a message cache capacity of 100:

./build/wakunode2 \
--rest=true \
--rest-admin=true \
--rest-private=true \
--rest-relay-cache-capacity=100

Configure filter protocol

To enable nwaku to serve light clients, enable the Filter protocol using filter option:

./build/wakunode2 --filter=true

You can configure nwaku as a Filter client using the filternode and filter-timeout options. This allows the node to request content filtering of messages from peers.

./build/wakunode2 \
--filternode=[FILTER PEER MULTIADDR] \
--filter-timeout=[FILTER PEER TIMEOUT]

For example, consider a nwaku node that requests content filtering of messages from peers with a timeout of 21600 seconds (6 hours):

./build/wakunode2 \
--filternode=/dns4/node-01.ac-cn-hongkong-c.waku.sandbox.status.im/tcp/30303/p2p/16Uiu2HAmSJvSJphxRdbnigUV5bjRRZFBhTtWFTSyiKaQByCjwmpV \
--filter-timeout=21600
info

If you omit the filter-timeout option, it will default to 14400 seconds (4 hours).

Configure light push protocol

To enable nwaku to serve light clients, enable the Light Push protocol using the lightpush option:

./build/wakunode2 --lightpush=true

You can configure nwaku as a Light Push client using the lightpushnode option. This allows the node to request lightpush of published messages from peers.

./build/wakunode2 --lightpushnode=[LIGHT PUSH PEER MULTIADDR]

For example, consider a nwaku node that requests lightpush of published messages from peers:

./build/wakunode2 --lightpushnode=/dns4/node-01.ac-cn-hongkong-c.waku.sandbox.status.im/tcp/30303/p2p/16Uiu2HAmSJvSJphxRdbnigUV5bjRRZFBhTtWFTSyiKaQByCjwmpV

Run nwaku behind a reverse proxy

When using a reverse proxy server for SSL/TLS encryption, you only want to announce the proxy server's IP or domain. Nwaku provides the ext-multiaddr-only and ext-multiaddr options for specifying published multiaddr:

./build/wakunode2 \
--ext-multiaddr-only=true \
--ext-multiaddr=[MULTIADDR TO PUBLISH]
info

The ext-multiaddr-only option takes precedence over the nat and dns4-domain-name options, using the values provided by the ext-multiaddr option instead.

+ + \ No newline at end of file diff --git a/guides/nwaku/faq/index.html b/guides/nwaku/faq/index.html index d985c8a..a947ac6 100644 --- a/guides/nwaku/faq/index.html +++ b/guides/nwaku/faq/index.html @@ -4,9 +4,9 @@ Nwaku FAQ | Waku Documentation - - - + + +
@@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Nwaku FAQ

Check out the Run Nwaku with Docker Compose guide to learn the simplest and fastest way to run a node. You can also check the comprehensive Run a Nwaku Node guide to explore other options like downloading binaries and building from source.
We recommend running a nwaku node with at least 2GB of RAM, especially if WSS is enabled. If running just a Relay node, 0.5GB of RAM is sufficient.
You can interact with a running nwaku node using the REST API interface or the JavaScript Waku SDK.
To check your node logs in Docker, use the command: "docker-compose logs -f nwaku"
You can configure Nwaku nodes using command line options and flags, environment variables, and TOML configuration files. Check out the Node Configuration Methods guide to understand their usage and priority.
Check out the Node Configuration Options guide for available node configuration options, their default values and descriptions. For examples of common configuration use cases, visit the Node Configuration Examples guide.
You can configure peer discovery for nwaku nodes through options like Static Peers, DNS Discovery, DiscV5, and Peer Exchange. Check out the Configure Peer Discovery guide for setting up your node.
The node listening and ENR addresses can be found through the node's logs and REST API. Check out the Find the node addresses section to understand how to locate your node addresses.
- - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Nwaku FAQ

Check out the Run Nwaku with Docker Compose guide to learn the simplest and fastest way to run a node. You can also check the comprehensive Run a Nwaku Node guide to explore other options like downloading binaries and building from source.
We recommend running a nwaku node with at least 2GB of RAM, especially if WSS is enabled. If running just a Relay node, 0.5GB of RAM is sufficient.
You can interact with a running nwaku node using the REST API interface or the JavaScript Waku SDK.
To check your node logs in Docker, use the command: "docker-compose logs -f nwaku"
You can configure Nwaku nodes using command line options and flags, environment variables, and TOML configuration files. Check out the Node Configuration Methods guide to understand their usage and priority.
Check out the Node Configuration Options guide for available node configuration options, their default values and descriptions. For examples of common configuration use cases, visit the Node Configuration Examples guide.
You can configure peer discovery for nwaku nodes through options like Static Peers, DNS Discovery, DiscV5, and Peer Exchange. Check out the Configure Peer Discovery guide for setting up your node.
The node listening and ENR addresses can be found through the node's logs and REST API. Check out the Find the node addresses section to understand how to locate your node addresses.
+ + \ No newline at end of file diff --git a/guides/nwaku/find-node-address/index.html b/guides/nwaku/find-node-address/index.html new file mode 100644 index 0000000..5259544 --- /dev/null +++ b/guides/nwaku/find-node-address/index.html @@ -0,0 +1,21 @@ + + + + + +Find Your Node Address | Waku Documentation + + + + + +
+

Find Your Node Address

info

When starting the node, nwaku will display all the public listening and discovery addresses at the INFO log level.

You can find the addresses of a running node through its logs or by calling the Get node info endpoint of the REST API.

Listening addresses

Look for the log entry that begins with Listening on, for example:

Nwaku Log Output
INF 2023-06-15 16:09:54.448+01:00 Listening on                               topics="waku node" tid=1623445 file=waku_node.nim:922 full=[/ip4/0.0.0.0/tcp/60000/p2p/16Uiu2HAmQCsH9V81xoqTwGuT3qwkZWbwY1TtTQwpr3DjHU2TSwMn][/ip4/0.0.0.0/tcp/8000/ws/p2p/16Uiu2HAmQCsH9V81xoqTwGuT3qwkZWbwY1TtTQwpr3DjHU2TSwMn]
# Listening TCP transport address
/ip4/0.0.0.0/tcp/60000/p2p/16Uiu2HAmQCsH9V81xoqTwGuT3qwkZWbwY1TtTQwpr3DjHU2TSwMn

# Listening WebSocket address
/ip4/0.0.0.0/tcp/8000/ws/p2p/16Uiu2HAmQCsH9V81xoqTwGuT3qwkZWbwY1TtTQwpr3DjHU2TSwMn

Discoverable ENR addresses

A nwaku node can encode its addressing information in an Ethereum Node Record (ENR).

ENR for DNS discovery

Look for the log entry that begins with DNS: discoverable ENR, for example:

Nwaku Log Output
INF 2023-06-15 16:09:54.448+01:00 DNS: discoverable ENR                      topics="waku node" tid=1623445 file=waku_node.nim:923 enr=enr:-Iu4QBKYj8Ovxwz4fIalxZ_1a8dOCU2WC-1LQrcBCCb4Np93f9-UuSZXn3vagJL1S3k3hwRYfOp3JSbW7_VqwtqMIeMBgmlkgnY0gmlwhAAAAACJc2VjcDI1NmsxoQOrmyV59dAzY4ZKrvrj32VOoZbLby8dCKFnXnqhIdQ0NYN0Y3CC6mCFd2FrdTIB
# ENR the node addresses are encoded in
enr:-Iu4QBKYj8Ovxwz4fIalxZ_1a8dOCU2WC-1LQrcBCCb4Np93f9-UuSZXn3vagJL1S3k3hwRYfOp3JSbW7_VqwtqMIeMBgmlkgnY0gmlwhAAAAACJc2VjcDI1NmsxoQOrmyV59dAzY4ZKrvrj32VOoZbLby8dCKFnXnqhIdQ0NYN0Y3CC6mCFd2FrdTIB

ENR for Discv5

Look for the log entry that begins with Discv5: discoverable ENR, for example:

Nwaku Log Output
INF 2023-06-15 16:09:54.448+01:00 Discv5: discoverable ENR                   topics="waku node" tid=1623445 file=waku_node.nim:924 enr=enr:-IO4QDxToTg86pPCK2KvMeVCXC2ADVZWrxXSvNZeaoa0JhShbM5qed69RQz1s1mWEEqJ3aoklo_7EU9iIBcPMVeKlCQBgmlkgnY0iXNlY3AyNTZrMaEDdBHK1Gx6y_zv5DVw5Qb3DtSOMmVHTZO1WSORrF2loL2DdWRwgiMohXdha3UyAw
# ENR the node addresses are encoded in
enr:-IO4QDxToTg86pPCK2KvMeVCXC2ADVZWrxXSvNZeaoa0JhShbM5qed69RQz1s1mWEEqJ3aoklo_7EU9iIBcPMVeKlCQBgmlkgnY0iXNlY3AyNTZrMaEDdBHK1Gx6y_zv5DVw5Qb3DtSOMmVHTZO1WSORrF2loL2DdWRwgiMohXdha3UyAw
Congratulations!

You have successfully found the listening and discoverable addresses for your nwaku node. Have a look at the Configure Peer Discovery](/guides/nwaku/configure-discovery) guide to learn how to discover and connect with peers in the network.

+ + + + \ No newline at end of file diff --git a/guides/nwaku/run-docker-compose/index.html b/guides/nwaku/run-docker-compose/index.html index 2c2b36f..52bdddc 100644 --- a/guides/nwaku/run-docker-compose/index.html +++ b/guides/nwaku/run-docker-compose/index.html @@ -3,10 +3,10 @@ -Run Nwaku with Docker Compose | Waku Documentation - - - +Run Nwaku with Docker Compose | Waku Documentation + + +
@@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Run Nwaku with Docker Compose

nwaku-compose is a ready-to-use Docker Compose setup that runs the following:

  • nwaku node running Relay and Store protocols with RLN enabled.
  • Simple frontend to interact with the node and Waku network to send and receive messages.
  • Grafana metrics dashboard for advanced users and node operators to monitor the node.

This guide provides detailed steps to configure, run, monitor, and interact with a nwaku node with nwaku-compose.

Prerequisites

Clone the repository

git clone https://github.com/waku-org/nwaku-compose
cd nwaku-compose

Configure the setup

Docker Compose reads the ./.env file from the filesystem. You can use .env.example as a template to provide the above values. The recommended process for working with .env files is to duplicate .env.example, rename it as .env, and then make the necessary value edits.

cp .env.example .env
${EDITOR} .env
caution

Ensure that you do NOT include any secrets in the .env.example file, as it could accidentally be shared in the Git repository.

Register for RLN membership

The RLN membership is your access key to The Waku Network. Its registration is done on-chain, allowing your nwaku node to send messages decentralised and privately, respecting some rate limits. Other peers won't relay messages that exceed the rate limit.

This command registers your membership and saves it in the keystore/keystore.json file:

./register_rln.sh
info

If you only want to relay traffic without sending messages to the network, you don't need to register for RLN membership.

Run the node

Start all processes: nwaku node, database for storing messages, and Grafana for metrics. Your RLN membership is loaded into nwaku under the hood:

docker-compose up -d

View the logs of the node to confirm that it is running correctly:

docker-compose logs -f nwaku

Interact with the node

Visit http://localhost:3000/d/yns_4vFVk/nwaku-monitoring to view your node metrics in real time.

nwaku compose dashboard

tip

To access Grafana from outside your machine, remove 127.0.0.1 and open the port. Consider setting up a password for Grafana to ensure security.

Use the REST API

Your nwaku node provides a REST API on port 8645 for interacting with it:

# Get nwaku version
curl --location 'http://127.0.0.1:8645/debug/v1/version'

# Get nwaku info
curl --location 'http://127.0.0.1:8645/debug/v1/info'

Send a message to a contentTopic, which all subscribers will receive. Please note that the payload is encoded in base64.

curl --location 'http://127.0.0.1:8645/relay/v1/auto/messages' \
--header 'Content-Type: application/json' \
--data '{
"payload": "'$(echo -n "Hello Waku Network - from Anonymous User" | base64)'",
"contentTopic": "/my-app/2/chatroom-1/proto"
}'

Retrieve messages sent to a contentTopic. Please note that this query can be made to any Store node within the network:

curl --location 'http://127.0.0.1:8645/store/v1/messages?contentTopics=%2Fmy-app%2F2%2Fchatroom-1%2Fproto&pageSize=50&ascending=true' \
--header 'Accept: application/json'
Congratulations!

You have successfully started a nwaku node with RLN enabled using Docker Compose. Have a look at the Node Configuration Examples and Advanced Configuration guides to learn how to configure nwaku for different use cases.

- - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Run Nwaku with Docker Compose

nwaku-compose is a ready-to-use Docker Compose setup that configures the following automatically:

  • nwaku node running Relay and Store protocols with RLN enabled.
  • Simple frontend to interact with the node and Waku network to send and receive messages.
  • Grafana metrics dashboard for advanced users and node operators to monitor the node.

Video tutorial

tip

Check out the Waku Node Operator Cheatsheet to learn how to easily run, monitor, and interact with a node.

Prerequisites

info

We recommend running a nwaku node with at least 2GB of RAM, especially if WSS is enabled. If running just a Relay node, 0.5GB of RAM is sufficient.

Clone the repository

git clone https://github.com/waku-org/nwaku-compose
cd nwaku-compose

Configure the setup

Docker Compose reads the ./.env file from the filesystem. You can use .env.example as a template to provide the above values. The recommended process for working with .env files is to duplicate .env.example, rename it as .env, and then make the necessary value edits.

cp .env.example .env
${EDITOR} .env
caution

Ensure that you do NOT include any secrets in the .env.example file, as it could accidentally be shared in the Git repository.

Register for RLN membership

The RLN membership is your access key to The Waku Network. Its registration is done on-chain, allowing your nwaku node to send messages decentralised and privately, respecting some rate limits. Other peers won't relay messages that exceed the rate limit.

This command registers your membership and saves it in the keystore/keystore.json file:

./register_rln.sh
info

If you only want to relay traffic without sending messages to the network, you don't need to register for RLN membership.

Run the node

Launch all the processes: nwaku node, database for storing messages, and Grafana for metrics with the following command. Your RLN membership is loaded into nwaku under the hood:

docker-compose up -d

View the logs of the node to confirm that it is running correctly:

docker-compose logs -f nwaku

Monitor the node

Visit http://localhost:3000/d/yns_4vFVk/nwaku-monitoring to view your node metrics in real time.

nwaku compose dashboard

tip

To access Grafana from outside your machine, remove 127.0.0.1 and open the port. Consider setting up a password for Grafana to ensure security.

Interact with the node

Your nwaku node provides a REST API on port 8645 for interacting with it:

# Get nwaku version
curl --location 'http://127.0.0.1:8645/debug/v1/version'

# Get nwaku info
curl --location 'http://127.0.0.1:8645/debug/v1/info'

Send a message to a contentTopic, which all subscribers will receive. Please note that the payload is encoded in base64.

curl --location 'http://127.0.0.1:8645/relay/v1/auto/messages' \
--header 'Content-Type: application/json' \
--data '{
"payload": "'$(echo -n "Hello Waku Network - from Anonymous User" | base64)'",
"contentTopic": "/my-app/2/chatroom-1/proto"
}'

Retrieve messages sent to a contentTopic. Please note that this query can be made to any Store node within the network:

curl --location 'http://127.0.0.1:8645/store/v1/messages?contentTopics=%2Fmy-app%2F2%2Fchatroom-1%2Fproto&pageSize=50&ascending=true' \
--header 'Accept: application/json'
tip

If you encounter issues running your node or require assistance with anything, please visit the #node-help channel on our Discord.

Congratulations!

You have successfully started a nwaku node with RLN enabled using Docker Compose. Have a look at the Node Configuration Examples and Advanced Configuration guides to learn how to configure nwaku for different use cases.

+ + \ No newline at end of file diff --git a/guides/nwaku/run-docker/index.html b/guides/nwaku/run-docker/index.html index 2d56d5e..841721e 100644 --- a/guides/nwaku/run-docker/index.html +++ b/guides/nwaku/run-docker/index.html @@ -4,9 +4,9 @@ Run Nwaku in a Docker Container | Waku Documentation - - - + + +
@@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Run Nwaku in a Docker Container

This guide provides detailed steps to build and run a nwaku node in a Docker container. If you prefer a pre-configured setup with a monitoring dashboard, see the Run Nwaku with Docker Compose guide.

Prerequisites

Ensure Docker is installed on your system using the appropriate instructions provided in the Docker documentation.

Get Docker image

The Nwaku Docker images are available on the Docker Hub public registry under the statusteam/nim-waku repository. Please visit statusteam/nim-waku/tags for images of specific releases.

You can also build the Docker image locally:

# Clone the repository
git clone --recurse-submodules https://github.com/waku-org/nwaku
cd nwaku

# Build docker image
make docker-image

Run Docker container

Run nwaku in a new Docker container:

docker run [OPTIONS] [IMAGE] [ARG...]

Run nwaku using the most typical configuration:

docker run -i -t -p 60000:60000 -p 9000:9000/udp statusteam/nim-waku:v0.20.0 \
--dns-discovery=true \
--dns-discovery-url=enrtree://AIRVQ5DDA4FFWLRBCHJWUWOO6X6S4ZTZ5B667LQ6AJU6PEYDLRD5O@sandbox.waku.nodes.status.im \
--discv5-discovery=true \
--nat=extip:[YOUR PUBLIC IP] # or, if you are behind a nat: --nat=any

To find your public IP, use:

dig TXT +short o-o.myaddr.l.google.com @ns1.google.com | awk -F'"' '{ print $2}'
tip

We recommend using explicit port mappings (-p) when exposing ports accessible from outside the host (listening and discovery ports, API servers).

Congratulations!

You have successfully built and started a nwaku node in a Docker container. Have a look at the Node Configuration Examples guide to learn how to configure nwaku for different use cases.

- - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Run Nwaku in a Docker Container

This guide provides detailed steps to build and run a nwaku node in a Docker container. If you prefer a pre-configured setup with a monitoring dashboard, see the Run Nwaku with Docker Compose guide.

Prerequisites

Ensure Docker is installed on your system using the appropriate instructions provided in the Docker documentation.

info

We recommend running a nwaku node with at least 2GB of RAM, especially if WSS is enabled. If running just a Relay node, 0.5GB of RAM is sufficient.

Get Docker image

The Nwaku Docker images are available on the Docker Hub public registry under the statusteam/nim-waku repository. Please visit statusteam/nim-waku/tags for images of specific releases.

You can also build the Docker image locally:

# Clone the repository
git clone --recurse-submodules https://github.com/waku-org/nwaku
cd nwaku

# Build docker image
make docker-image

Run Docker container

Run nwaku in a new Docker container:

docker run [OPTIONS] [IMAGE] [ARG...]

Run nwaku using the most typical configuration:

docker run -i -t -p 60000:60000 -p 9000:9000/udp statusteam/nim-waku:v0.20.0 \
--dns-discovery=true \
--dns-discovery-url=enrtree://AIRVQ5DDA4FFWLRBCHJWUWOO6X6S4ZTZ5B667LQ6AJU6PEYDLRD5O@sandbox.waku.nodes.status.im \
--discv5-discovery=true \
--nat=extip:[YOUR PUBLIC IP] # or, if you are behind a nat: --nat=any

To find your public IP, use:

dig TXT +short o-o.myaddr.l.google.com @ns1.google.com | awk -F'"' '{ print $2}'
info

We recommend using explicit port mappings (-p) when exposing ports accessible from outside the host (listening and discovery ports, API servers).

tip

If you encounter issues running your node or require assistance with anything, please visit the #node-help channel on our Discord.

Congratulations!

You have successfully built and started a nwaku node in a Docker container. Have a look at the Node Configuration Examples guide to learn how to configure nwaku for different use cases.

+ + \ No newline at end of file diff --git a/guides/nwaku/run-node/index.html b/guides/nwaku/run-node/index.html index d53493d..5808ac2 100644 --- a/guides/nwaku/run-node/index.html +++ b/guides/nwaku/run-node/index.html @@ -4,9 +4,9 @@ Run a Nwaku Node | Waku Documentation - - - + + +
@@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Run a Nwaku Node

Nwaku is a lightweight and robust Nim client for running a Waku node, equipped with tools to monitor and maintain a running node. Nwaku is highly configurable, enabling operators to select the protocols they want to support based on their needs, motivations, and available resources.

This guide provides detailed steps to download, build, configure, and connect a nwaku node to the Waku Network. It also includes interacting with the node and finding its addresses.

info

We recommend running a nwaku node with at least 2GB of RAM, especially if WSS is enabled. If running just a Relay node, 0.5GB of RAM is sufficient.

Get the node binary

To run a node, you must have the nwaku binary. Nwaku provides multiple options for running a node:

DescriptionDocumentation
Docker ComposeRun a nwaku node with Docker ComposeRun Nwaku with Docker Compose
Docker ContainerRun a nwaku node in a Docker ContainerRun Nwaku in a Docker Container
tip

We recommend using Docker Compose to run a node because it's the simplest and fastest way to configure and run one.

Download the binary

DescriptionDocumentation
Precompiled BinaryDownload a precompiled binary of the nwaku nodeDownload Nwaku Binary
Nightly ReleaseTry the latest nwaku updates without compiling the binariesDownload Nightly Release

Build the binary

DescriptionDocumentation
Build from SourceBuild the node from the nwaku source codeBuild Nwaku from Source
tip

You can run the nwaku binaries and Docker images on cloud service providers like Google Cloud, Microsoft Azure, Amazon Web Services, and DigitalOcean.

Run the node

Once you have gotten the nwaku binary, run it using the default configuration:

# Run with default configuration
./build/wakunode2

# See available command line options
./build/wakunode2 --help
tip

To learn how to customise the configuration of a nwaku node, have a look at the Node Configuration Methods and Node Configuration Examples guides.

Bootstrap the node

To join the Waku Network, nodes must bootstrap for an entry point before discovering more peers. Nwaku provides multiple peer discovery mechanisms:

DescriptionDocumentation
Static PeersConfigure the bootstrap nodes that nwaku should establish connections upon startupConfigure Static Peers
DNS DiscoveryEnable nwaku to bootstrap nodes using the DNS Discovery mechanismConfigure DNS Discovery
Discv5Enable nwaku to discover peers using the Discv5 mechanismConfigure Discv5
Peer ExchangeEnable Peer Exchange protocol for light nodes to request peers from your nwaku nodeConfigure Peer Exchange
info

You can configure a nwaku node to use multiple peer discovery mechanisms simultaneously.

Interact with the node

You can interact with a running nwaku node through the REST API, such as querying the node information using the Get node info endpoint:

curl --location 'http://127.0.0.1:8645/debug/v1/info' \
--header 'Accept: application/json'
info

The listenAddresses field stores the node's listening addresses, while the enrUri field stores the discoverable ENR URI for peer discovery.

tip

We suggest configuring WebSocket transport for your node to enable support and serving of browser peers using @waku/sdk.

Find the node addresses

You can find the addresses of a running node through its logs or by calling the Get node info endpoint of the REST API.

info

When starting the node, nwaku will display all the public listening and discovery addresses at the INFO log level.

Listening addresses

Look for the log entry that begins with Listening on, for example:

Nwaku Log Output
INF 2023-06-15 16:09:54.448+01:00 Listening on                               topics="waku node" tid=1623445 file=waku_node.nim:922 full=[/ip4/0.0.0.0/tcp/60000/p2p/16Uiu2HAmQCsH9V81xoqTwGuT3qwkZWbwY1TtTQwpr3DjHU2TSwMn][/ip4/0.0.0.0/tcp/8000/ws/p2p/16Uiu2HAmQCsH9V81xoqTwGuT3qwkZWbwY1TtTQwpr3DjHU2TSwMn]
# Listening TCP transport address
/ip4/0.0.0.0/tcp/60000/p2p/16Uiu2HAmQCsH9V81xoqTwGuT3qwkZWbwY1TtTQwpr3DjHU2TSwMn

# Listening WebSocket address
/ip4/0.0.0.0/tcp/8000/ws/p2p/16Uiu2HAmQCsH9V81xoqTwGuT3qwkZWbwY1TtTQwpr3DjHU2TSwMn

Discoverable ENR addresses

A nwaku node can encode its addressing information in an Ethereum Node Record (ENR) following the WAKU2-ENR specification, primarily for peer discovery.

ENR for DNS discovery

Look for the log entry that begins with DNS: discoverable ENR, for example:

Nwaku Log Output
INF 2023-06-15 16:09:54.448+01:00 DNS: discoverable ENR                      topics="waku node" tid=1623445 file=waku_node.nim:923 enr=enr:-Iu4QBKYj8Ovxwz4fIalxZ_1a8dOCU2WC-1LQrcBCCb4Np93f9-UuSZXn3vagJL1S3k3hwRYfOp3JSbW7_VqwtqMIeMBgmlkgnY0gmlwhAAAAACJc2VjcDI1NmsxoQOrmyV59dAzY4ZKrvrj32VOoZbLby8dCKFnXnqhIdQ0NYN0Y3CC6mCFd2FrdTIB
# ENR the node addresses are encoded in
enr:-Iu4QBKYj8Ovxwz4fIalxZ_1a8dOCU2WC-1LQrcBCCb4Np93f9-UuSZXn3vagJL1S3k3hwRYfOp3JSbW7_VqwtqMIeMBgmlkgnY0gmlwhAAAAACJc2VjcDI1NmsxoQOrmyV59dAzY4ZKrvrj32VOoZbLby8dCKFnXnqhIdQ0NYN0Y3CC6mCFd2FrdTIB

ENR for Discv5

Look for the log entry that begins with Discv5: discoverable ENR, for example:

Nwaku Log Output
INF 2023-06-15 16:09:54.448+01:00 Discv5: discoverable ENR                   topics="waku node" tid=1623445 file=waku_node.nim:924 enr=enr:-IO4QDxToTg86pPCK2KvMeVCXC2ADVZWrxXSvNZeaoa0JhShbM5qed69RQz1s1mWEEqJ3aoklo_7EU9iIBcPMVeKlCQBgmlkgnY0iXNlY3AyNTZrMaEDdBHK1Gx6y_zv5DVw5Qb3DtSOMmVHTZO1WSORrF2loL2DdWRwgiMohXdha3UyAw
# ENR the node addresses are encoded in
enr:-IO4QDxToTg86pPCK2KvMeVCXC2ADVZWrxXSvNZeaoa0JhShbM5qed69RQz1s1mWEEqJ3aoklo_7EU9iIBcPMVeKlCQBgmlkgnY0iXNlY3AyNTZrMaEDdBHK1Gx6y_zv5DVw5Qb3DtSOMmVHTZO1WSORrF2loL2DdWRwgiMohXdha3UyAw
Congratulations!

You have successfully started, configured, and connected a nwaku node to the Waku Network. Have a look at the Node Configuration Examples guide to learn how to configure nwaku for different use cases.

- - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Run a Nwaku Node

Nwaku is a lightweight and robust Nim client for running a Waku node, equipped with tools to monitor and maintain a running node. Nwaku is highly configurable, enabling operators to select the protocols they want to support based on their needs, motivations, and available resources.

waku architecture

This guide provides detailed steps to download, build, configure, and connect a nwaku node to the Waku Network. It also includes interacting with the node and finding its addresses.

info

We recommend running a nwaku node with at least 2GB of RAM, especially if WSS is enabled. If running just a Relay node, 0.5GB of RAM is sufficient.

Get the node binary

To run a node, you must have the nwaku binary. Nwaku provides multiple options for running a node:

We recommend using Docker Compose to run a node because it's the simplest and fastest way to configure and run one:

DescriptionDocumentation
Docker ComposeRun a nwaku node with Docker ComposeRun Nwaku with Docker Compose
Docker ContainerRun a nwaku node in a Docker ContainerRun Nwaku in a Docker Container

Download the binary

DescriptionDocumentation
Precompiled BinaryDownload a precompiled binary of the nwaku nodeDownload Nwaku Binary
Nightly ReleaseTry the latest nwaku updates without compiling the binariesDownload Nightly Release

Build the binary

DescriptionDocumentation
Build from SourceBuild the node from the nwaku source codeBuild Nwaku from Source
tip

You can run the nwaku binaries and Docker images on cloud service providers like Google Cloud, Microsoft Azure, Amazon Web Services, and DigitalOcean.

Run the node

Once you have gotten the nwaku binary, run it using the default configuration:

# Run the Docker Compose
docker-compose up -d

# Run the standalone binary
./build/wakunode2
tip

To learn how to customise the configuration of a nwaku node, have a look at the Node Configuration Methods and Node Configuration Examples guides.

Bootstrap the node

To join the Waku Network, nodes must bootstrap for an entry point before discovering more peers. Nwaku provides multiple peer discovery mechanisms:

DescriptionDocumentation
Static PeersConfigure the bootstrap nodes that nwaku should establish connections upon startupConfigure Static Peers
DNS DiscoveryEnable nwaku to bootstrap nodes using the DNS Discovery mechanismConfigure DNS Discovery
Discv5Enable nwaku to discover peers using the Discv5 mechanismConfigure Discv5
Peer ExchangeEnable Peer Exchange protocol for light nodes to request peers from your nwaku nodeConfigure Peer Exchange
tip

We suggest configuring WebSocket transport for your node to enable support and serving of browser peers using @waku/sdk.

Interact with the node

You can interact with a running nwaku node through the REST API, such as querying the node information using the Get node info endpoint:

curl --location 'http://127.0.0.1:8645/debug/v1/info' \
--header 'Accept: application/json'
info

The listenAddresses field stores the node's listening addresses, while the enrUri field stores the discoverable ENR URI for peer discovery.

Check the node health status

You can check the health status of the node by calling the Get node health status endpoint of the REST API:

curl --location 'http://127.0.0.1:8645/health' \
--header 'Accept: text/plain'
tip

If you encounter issues running your node or require assistance with anything, please visit the #node-help channel on our Discord.

Congratulations!

You have successfully started, configured, and connected a nwaku node to the Waku Network. Have a look at the Node Configuration Examples guide to learn how to configure nwaku for different use cases.

+ + \ No newline at end of file diff --git a/img/architecture.png b/img/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..0730811dfae05d01ca437ff19a0046e0c387db64 GIT binary patch literal 88922 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

a!ujlR*_@t!agbP1o3`fV-q+alWY*BG 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
+ + \ No newline at end of file diff --git a/research/index.html b/research/index.html index 80d2b4f..1845cfe 100644 --- a/research/index.html +++ b/research/index.html @@ -3,10 +3,10 @@ -Research | Waku Documentation - - - +Research | Waku Documentation + + +
@@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Research

Research and Studies: Protocol simulations and theoretical analysis to support the design of Waku protocols. The protocol definitions are on the Vac RFC website.

Benchmarks: Results of implementations and engineering-related benchmarks for Waku clients.

- - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Research

Research and Studies: Protocol simulations and theoretical analysis to support the design of Waku protocols. The protocol definitions are on the Waku RFCs website.

Benchmarks: Results of implementations and engineering-related benchmarks for Waku clients.

+ + \ No newline at end of file diff --git a/research/research-and-studies/capped-bandwidth/index.html b/research/research-and-studies/capped-bandwidth/index.html index 0f76005..90c70c9 100644 --- a/research/research-and-studies/capped-bandwidth/index.html +++ b/research/research-and-studies/capped-bandwidth/index.html @@ -4,9 +4,9 @@ Capped Bandwidth in Waku | Waku Documentation - - - + + +
@@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Capped Bandwidth in Waku

This issue explains i) why The Waku Network requires a capped bandwidth per shard and ii) how to solve it by rate limiting with RLN by daily requests (instead of every x seconds), which would require RLN v2, or some modifications in the current circuits to work. It also explains why the current rate limiting RLN approach (limit 1 message every x seconds) is not practical to solve this problem.

Problem

First of all, lets begin with the terminology. We have talked in the past about "predictable" bandwidth, but a better name would be "capped" bandwidth. This is because it is totally fine that the waku traffic is not predictable, as long as its capped. And it has to be capped because otherwise no one will be able to run a node.

Since we aim that everyone is able to run a full waku node (at least subscribed to a single shard) its of paramount importance that the bandwidth requirements (up/down) are i) reasonable to run with a residential internet connection in every country and ii) limited to an upper value, aka capped. If the required bandwidth to stay up to date with a topic is higher than what the node has available, then it will start losing messages and won't be able to stay up to date with the topic messages. And not to mention the problems this will cause to other services and applications being used by the user.

The main problem is that one can't just chose the bandwidth it allocates to relay. One could set the maximum bandwidth willing to allocate to store but this is not how relay works. The required bandwidth is not set by the node, but by the network. If a pubsub topic a has a traffic of 50 Mbps (which is the sum of all messages being sent multiplied by its size, times the D_out degree), then if a node wants to stay up to date in that topic, and relay traffic in it, then it will require 50 Mbps. There is no thing such as "partially contribute" to the topic (with eg 25Mbps) because then you will be losing messages, becoming an unreliable peer. The network sets the pace.

So waku needs an upper boundary on the in/out bandwidth (mbps) it consumes. Just like apps have requirements on cpu and memory, we should set a requirement on bandwidth, and then guarantee that if you have that bandwidth, you will be able to run a node without any problem. And this is the tricky part.

Current approach

With the recent productisation effort of RLN, we have part of the problem solved, but not entirely. RLN offers an improvement, since now have a pseudo-identity (RLN membership) that can be used to rate limit users, enforcing a limit on how often it can send a message (eg 1 message every 10 seconds). We assume of course, that getting said RLN membership requires to pay something, or put something at stake, so that it can't be sibyl attacked.

Rate limiting with RLN so that each entity just sends 1 message every x seconds indeed solves the spam problem but it doesn't per se cap the traffic. In order to cap the traffic, we would first need to cap the amount of memberships we allow. Lets see an example:

  • We limit to 10.000 RLN memberships
  • Each ones is rate limited to send 1 message/10 seconds
  • Message size of 50 kBytes

Having this, the worst case bandwidth that we can theoretically have, would be if all of the memberships publish messages at the same time, with the maximum size, continuously. That is 10.000 messages/sec * 50 kBytes = 500 MBytes/second. This would be a burst every 10 seconds, but enough to leave out the majority of the nodes. Of course this assumption is not realistic as most likely not everyone will continuously send messages at the same time and the size will vary. But in theory this could happen.

A naive (and not practical) way of fixing this, would be to design the network for this worst case. So if we want to cap the maximum bandwidth to 5 MBytes/s then we would have different options on the maximum i) amount of RLN memberships and ii) maximum message size:

  • 1.000 RLN memberships, 5 kBytes message size: 1000 * 5 = 5 MBytes/s
  • 10.000 RLN memberships, 500 Bytes message size: 10000 * 0.5 = 5 MBytes/s

In both cases we cap the traffic, however, if we design The Waku Network like this, it will be massively underutilized. As an alternative, the approach we should follow is to rely on statistics, and assume that i) not everyone will be using the network at the same time and ii) message size will vary. So while its impossible to guarantee any capped bandwidth, we should be able to guarantee that with 95 or 99% confidence the bandwidth will stay around a given value, with a maximum variance.

The current RLN approach of rate limiting 1 message every x seconds is not very practical. The current RLN limitations are enforced on 1 message every x time (called epoch). So we currently can allow 1 msg per second or 1 msg per 10 seconds by just modifying the epoch size. But this has some drawbacks. Unfortunately, neither of the options are viable for waku:

  1. A small epoch size (eg 1 seconds) would allow a membership to publish 24*3600/1=86400 messages a day, which would be too much. In exchange, this allows a user to publish messages right after the other, since it just have to wait 1 second between messages. Problem is that having an rln membership being able to publish this amount of messages, is a bit of a liability for waku, and hinders scalability.
  2. A high epoch size (eg 240 seconds) would allow a membership to publish 24*3600/240=360 messages a day, which is a more reasonable limit, but this won't allow a user to publish two messages one right after the other, meaning that if you publish a message, you have to way 240 seconds to publish the next one. Not practical, a no go.

But what if we widen the window size, and allow multiple messages within that window?

Solution

In order to fix this, we need bigger windows sizes, to smooth out particular bursts. Its fine that a user publishes 20 messages in one second, as long as in a wider window it doesn't publish more than, lets say 500. This wider window could be a day. So we could say that a membership can publish 250 msg/day. With this we solve i) and ii) from the previous section.

Some quick napkin math on how this can scale:

  • 10.000 RLN memberships
  • Each RLN membership allow to publish 250 msg/day
  • Message size of 5 kBytes

Assuming a completely random distribution:

  • 10.000 * 250 = 2 500 000 messages will be published a day (at max)
  • A day has 86 400 seconds. So with a random distribution we can say that 30 msg/sec (at max)
  • 30 msg/sec * 5 kBytes/msg = 150 kBytes/sec (at max)
  • Assuming D_out=8: 150 kBytes/sec * 8 = 1.2 MBytes/sec (9.6 Mbits/sec)

So while its still not possible to guarantee 100% the maximum bandwidth, if we rate limit per day we can have better guarantees. Looking at these numbers, considering a single shard, it would be feasible to serve 10.000 users considering a usage of 250 msg/day.

TODO: Analysis on 95%/99% interval confidence on bandwidth given a random distribution.

TLDR

  • Waku should guarantee a capped bandwidth so that everyone can run a node.
  • The guarantee is a "statistical guarantee", since there is no way of enforcing a strict limit.
  • Current RLN approach is to rate limit 1 message every x seconds. A better approach would be x messages every day, which helps achieving such bandwidth limit.
  • To follow up: Variable RLN memberships. Eg. allow to chose tier 1 (100msg/day) tier 2 (200msg/day) etc.
- - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Capped Bandwidth in Waku

This issue explains i) why The Waku Network requires a capped bandwidth per shard and ii) how to solve it by rate limiting with RLN by daily requests (instead of every x seconds), which would require RLN v2, or some modifications in the current circuits to work. It also explains why the current rate limiting RLN approach (limit 1 message every x seconds) is not practical to solve this problem.

Problem

First of all, lets begin with the terminology. We have talked in the past about "predictable" bandwidth, but a better name would be "capped" bandwidth. This is because it is totally fine that the waku traffic is not predictable, as long as its capped. And it has to be capped because otherwise no one will be able to run a node.

Since we aim that everyone is able to run a full waku node (at least subscribed to a single shard) its of paramount importance that the bandwidth requirements (up/down) are i) reasonable to run with a residential internet connection in every country and ii) limited to an upper value, aka capped. If the required bandwidth to stay up to date with a topic is higher than what the node has available, then it will start losing messages and won't be able to stay up to date with the topic messages. And not to mention the problems this will cause to other services and applications being used by the user.

The main problem is that one can't just chose the bandwidth it allocates to relay. One could set the maximum bandwidth willing to allocate to store but this is not how relay works. The required bandwidth is not set by the node, but by the network. If a pubsub topic a has a traffic of 50 Mbps (which is the sum of all messages being sent multiplied by its size, times the D_out degree), then if a node wants to stay up to date in that topic, and relay traffic in it, then it will require 50 Mbps. There is no thing such as "partially contribute" to the topic (with eg 25Mbps) because then you will be losing messages, becoming an unreliable peer. The network sets the pace.

So waku needs an upper boundary on the in/out bandwidth (mbps) it consumes. Just like apps have requirements on cpu and memory, we should set a requirement on bandwidth, and then guarantee that if you have that bandwidth, you will be able to run a node without any problem. And this is the tricky part.

Current approach

With the recent productisation effort of RLN, we have part of the problem solved, but not entirely. RLN offers an improvement, since now have a pseudo-identity (RLN membership) that can be used to rate limit users, enforcing a limit on how often it can send a message (eg 1 message every 10 seconds). We assume of course, that getting said RLN membership requires to pay something, or put something at stake, so that it can't be sibyl attacked.

Rate limiting with RLN so that each entity just sends 1 message every x seconds indeed solves the spam problem but it doesn't per se cap the traffic. In order to cap the traffic, we would first need to cap the amount of memberships we allow. Lets see an example:

  • We limit to 10.000 RLN memberships
  • Each ones is rate limited to send 1 message/10 seconds
  • Message size of 50 kBytes

Having this, the worst case bandwidth that we can theoretically have, would be if all of the memberships publish messages at the same time, with the maximum size, continuously. That is 10.000 messages/sec * 50 kBytes = 500 MBytes/second. This would be a burst every 10 seconds, but enough to leave out the majority of the nodes. Of course this assumption is not realistic as most likely not everyone will continuously send messages at the same time and the size will vary. But in theory this could happen.

A naive (and not practical) way of fixing this, would be to design the network for this worst case. So if we want to cap the maximum bandwidth to 5 MBytes/s then we would have different options on the maximum i) amount of RLN memberships and ii) maximum message size:

  • 1.000 RLN memberships, 5 kBytes message size: 1000 * 5 = 5 MBytes/s
  • 10.000 RLN memberships, 500 Bytes message size: 10000 * 0.5 = 5 MBytes/s

In both cases we cap the traffic, however, if we design The Waku Network like this, it will be massively underutilized. As an alternative, the approach we should follow is to rely on statistics, and assume that i) not everyone will be using the network at the same time and ii) message size will vary. So while its impossible to guarantee any capped bandwidth, we should be able to guarantee that with 95 or 99% confidence the bandwidth will stay around a given value, with a maximum variance.

The current RLN approach of rate limiting 1 message every x seconds is not very practical. The current RLN limitations are enforced on 1 message every x time (called epoch). So we currently can allow 1 msg per second or 1 msg per 10 seconds by just modifying the epoch size. But this has some drawbacks. Unfortunately, neither of the options are viable for waku:

  1. A small epoch size (eg 1 seconds) would allow a membership to publish 24*3600/1=86400 messages a day, which would be too much. In exchange, this allows a user to publish messages right after the other, since it just have to wait 1 second between messages. Problem is that having an rln membership being able to publish this amount of messages, is a bit of a liability for waku, and hinders scalability.
  2. A high epoch size (eg 240 seconds) would allow a membership to publish 24*3600/240=360 messages a day, which is a more reasonable limit, but this won't allow a user to publish two messages one right after the other, meaning that if you publish a message, you have to way 240 seconds to publish the next one. Not practical, a no go.

But what if we widen the window size, and allow multiple messages within that window?

Solution

In order to fix this, we need bigger windows sizes, to smooth out particular bursts. Its fine that a user publishes 20 messages in one second, as long as in a wider window it doesn't publish more than, lets say 500. This wider window could be a day. So we could say that a membership can publish 250 msg/day. With this we solve i) and ii) from the previous section.

Some quick napkin math on how this can scale:

  • 10.000 RLN memberships
  • Each RLN membership allow to publish 250 msg/day
  • Message size of 5 kBytes

Assuming a completely random distribution:

  • 10.000 * 250 = 2 500 000 messages will be published a day (at max)
  • A day has 86 400 seconds. So with a random distribution we can say that 30 msg/sec (at max)
  • 30 msg/sec * 5 kBytes/msg = 150 kBytes/sec (at max)
  • Assuming D_out=8: 150 kBytes/sec * 8 = 1.2 MBytes/sec (9.6 Mbits/sec)

So while its still not possible to guarantee 100% the maximum bandwidth, if we rate limit per day we can have better guarantees. Looking at these numbers, considering a single shard, it would be feasible to serve 10.000 users considering a usage of 250 msg/day.

TODO: Analysis on 95%/99% interval confidence on bandwidth given a random distribution.

TLDR

  • Waku should guarantee a capped bandwidth so that everyone can run a node.
  • The guarantee is a "statistical guarantee", since there is no way of enforcing a strict limit.
  • Current RLN approach is to rate limit 1 message every x seconds. A better approach would be x messages every day, which helps achieving such bandwidth limit.
  • To follow up: Variable RLN memberships. Eg. allow to chose tier 1 (100msg/day) tier 2 (200msg/day) etc.
+ + \ No newline at end of file diff --git a/research/research-and-studies/incentivisation/index.html b/research/research-and-studies/incentivisation/index.html index 1eaf90d..9b3a360 100644 --- a/research/research-and-studies/incentivisation/index.html +++ b/research/research-and-studies/incentivisation/index.html @@ -4,9 +4,9 @@ Incentivisation | Waku Documentation - - - + + +
@@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Incentivisation

Waku is a family of decentralised communication protocols. The Waku Network (TWN) consists of independent nodes running Waku protocols. TWN needs incentivisation (shortened to i13n) to ensure proper node behaviour.

The goal of this document is to outline and contextualize our approach to TWN i13n. After providing an overview of Waku and relevant prior work, we focus on Waku Store - a client-server protocol for querying historical messages. We introduce a minimal viable addition to Store to enable i13n, and list research directions for future work.

Incentivisation in decentralised networks

Incentivisation tools

We can think of incentivisation tools as a two-by-two matrix:

  • rewards vs punishment;
  • monetary vs reputation.

In other words, there are four quadrants:

  • monetary reward: the node gets rewarded;
  • monetary punishment: the nodes deposits funds that are taken away (slashed) if it misbehaves;
  • reputation reward: the node's reputation increases if it behaves well;
  • reputation punishment: the node's reputation decreases if it behaves badly.

Reputation only works if high reputation brings tangible benefits. For example, if nodes chose neighbors based on reputation, low-reputation nodes miss out on potential revenue. Reputation scores may be local (a node assigns scores to its neighbors) or global (each node gets a uniform score). Global reputation in its simplest form involves a trusted third party, although decentralised approaches are also possible.

Prior work

We may split incentivized decentralised networks into early file-sharing, blockchains, and decentralised storage.

Early P2P file-sharing

Early P2P file-sharing networks employ reputation-based approaches and sticky defaults. For instance, the BitTorrent protocol rewards uploading peers with faster downloads. The download bandwidth available to a peer depends on how much it has uploaded. Moreover, peers share pieces of a file before having received it in whole. This non-monetary i13n policy has been proved to work in practice.

Blockchains

Bitcoin has introduced proof-of-work (PoW) for native monetary rewards in a P2P network. PoW miners are automatically assigned newly mined coins for generating blocks. Miners must expend physical resources to generate a block. If the block is invalid, these expenses are not compensated (implicit monetary punishment). Proof-of-stake (PoS), used in Ethereum and many other cryptocurrencies, introduces explicit monetary punishments. PoS validators lock up (stake) native tokens and get rewarded for validating blocks or slashed for misbehaviour.

Decentralised storage

Post-Bitcoin decentralised storage networks include Codex, Storj, Sia, Filecoin, IPFS. Their i13n methods combine techniques from early P2P file-sharing with blockchain-inspired reward mechanisms.

Waku background

Waku is a family of protocols for a modular privacy-preserving censorship-resistant decentralised communication network. The backbone of Waku is the Relay protocol (and its spam-protected version RLN-Relay). Additionally, there are light protocols: Store, Filter, and Lightpush. Light protocols are also referred to as client-server protocols and request-response protocols.

A server is a node running Relay and a server-side of at least one light protocol. A client is a node running a client-side of any of the light protocols. A server may sometimes be referred to as a full node, and a client as a light node. There is no strict definition of a full node vs a light node in Waku (see discussion).

In light protocols, a client sends a request to a server, and a server performs some actions and returns a response:

  • Store: the server responds with messages relayed that match a set of criteria;
  • Filter: the server will relay (only) messages that pass a filter to the client;
  • Lightpush: the server publishes the client's message to the Relay network.

Waku i13n challenges

Waku has no consensus and no native token, which brings it closer to reputation-incentivised file-sharing networks. As of late 2023, Waku only operates under reputation-based rewards and punishments. While RLN-Relay adds monetary punishments for spammers, slashing is yet to be activated.

Monetary rewards and punishments should ideally be atomically linked with the node's behaviour. A benefit of blockchains in this respect is that the desired behaviour of miners or validators can be verified automatically. Enforcing atomicity in a communication network is more challenging: it is non-trivial to prove that a given piece of data has been relayed.

Our goal is to combine monetary and reputation-based incentives for Waku. Monetary incentives have demonstrated their robustness in blockchains. We think they are necessary to scale the network beyond the initial phase when it's maintained altruistically.

Waku Store

Waku Store is a light protocol for querying historic messages that works as follows:

  1. the client sends a HistoryQuery to the server;
  2. the server sends a HistoryResponse to the client.

The response may be split into multiple parts, as specified by pagination parameters in PagingInfo.

We define a relevant message as a message that matches client-defined criteria (e.g., relayed within a given time frame). Upon receiving a request, a server should quickly send back a response containing all and only relevant messages.

Waku Store incentivisation

An incentivised Store protocol has the following extra steps:

  1. pricing:
    1. cost calculation
    2. price advertisement
    3. price negotiation
  2. payment:
    1. payment itself
    2. proof of payment
  3. reputation
  4. results cross-checking

In this document, we focus on the simplest proof-of-concept (PoC) i13n for Store. Compared to the fully-fledged protocol, the PoC version is simplified in the following ways:

  • cost calculation is based on a common-knowledge price;
  • there is no price advertisement and no price negotiation;
  • each query is paid for in a separate transaction, txid acts a proof of payment;
  • the reputation system is simplified (see below);
  • the results are not cross-checked.

In the PoC protocol:

  1. the client calculates the price based on the known rate per hour of history;
  2. the client pays the appropriate amount to the server's address;
  3. the client sends a HistoryQuery to the server alongside the proof of payment (txid);
  4. the server checks that the txid corresponds to a confirmed transaction with at least the required amount;
  5. the server sends a HistoryResponse to the client.

In further subsections, we list the potential direction for future work towards a fully-fledged i13n mechanism.

Pricing

For PoC, we assume a constant price per hour of history. This price and the blockchain address of the server are assumed to be common knowledge. This simplifies the client-server interaction, avoiding the price negotiation step.

In the future versions of the protocol, the price will be negotiated and will depend on multiple parameters, such as the total size of the relevant messages in the response.

Future work

Payment

For the PoC, each request is paid for with a separate transaction. The transaction hash (txid) acts as a proof of payment. The server verifies the payment by ensuring that:

  1. the transaction has been confirmed;
  2. the transaction is paying the proper amount to the server's account;
  3. the txid does not correspond to any prior response.

The client gives proof of payment before it receives the response. Other options could be:

  1. the client pays after the fact;
  2. the client pays partly upfront and partly after the fact;
  3. a centralised third party (either trusted or semi-trusted, like a smart contract) ensures atomicity;
  4. cryptographically ensured atomicity (similar to atomic swaps, Lightning, or Hopr).

Our design considerations are:

  • the PoC protocol should be simple;
  • servers are more "permanent" entities and are more likely to have long-lived identities;
  • it is more important to protect the clients's privacy than the server's privacy.

In light of these criteria, we suggest that the client pays first. This is simpler than splitting the payment, or involving an extra atomicity-enforcing mechanism. Moreover, pre-payment is arguably more privacy-preserving than post-payment, which encourages servers to deanonymise clients to prevent fraud.

Future work

Reputation

We use reputation to discourage the server from taking the payment and not responding. The client keeps track of the server's reputation:

  • all servers start with zero reputation points;
  • if the server honours the request, it gets +n points;
  • if the server does not respond before a timeout, it gets -m points.
  • if the server's reputation drops below k points, the client will never query it again.

n, m, and k are subject to configuration.

Optionally, a client may treat a given server as trusted, assigning it a constant positive reputation.

Potential issues:

  • An attacker can establish new server identities and continue running away with clients' money. Countermeasures:
    • a client only queries trusted servers (which however leads to centralisation);
    • when querying a new server, a client first sends a small (i.e. cheap) request as a test;
    • more generally, the client selects a server on a case-by-case basis, weighing the payment amount against the server's reputation.
  • The ban mechanism can theoretically be abused. For instance, a competitor may attack the victim server and cause the clients who were awaiting the response to ban that server. Countermeasure: prevent DoS-attacks.

Future work

Design a more comprehensive reputation system:

Results cross-checking

As there is no consensus over past messages, a client may want to query multiple servers and merge their responses. Cross-checking helps ensure that servers are a) not censoring real messages; b) not injecting fake messages into history. Cross-checking is absent in PoC but may be considered later.

Future work

Evaluation

We should think about what the success metrics for an incentivised protocol are, and how to measure them both in simulated settings, as well as in a live network.

Longer-term future work

- - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Incentivisation

Waku is a family of decentralised communication protocols. The Waku Network (TWN) consists of independent nodes running Waku protocols. TWN needs incentivisation (shortened to i13n) to ensure proper node behaviour.

The goal of this document is to outline and contextualize our approach to TWN i13n. After providing an overview of Waku and relevant prior work, we focus on Waku Store - a client-server protocol for querying historical messages. We introduce a minimal viable addition to Store to enable i13n, and list research directions for future work.

Incentivisation in decentralised networks

Incentivisation tools

We can think of incentivisation tools as a two-by-two matrix:

  • rewards vs punishment;
  • monetary vs reputation.

In other words, there are four quadrants:

  • monetary reward: the node gets rewarded;
  • monetary punishment: the nodes deposits funds that are taken away (slashed) if it misbehaves;
  • reputation reward: the node's reputation increases if it behaves well;
  • reputation punishment: the node's reputation decreases if it behaves badly.

Reputation only works if high reputation brings tangible benefits. For example, if nodes chose neighbors based on reputation, low-reputation nodes miss out on potential revenue. Reputation scores may be local (a node assigns scores to its neighbors) or global (each node gets a uniform score). Global reputation in its simplest form involves a trusted third party, although decentralised approaches are also possible.

Prior work

We may split incentivized decentralised networks into early file-sharing, blockchains, and decentralised storage.

Early P2P file-sharing

Early P2P file-sharing networks employ reputation-based approaches and sticky defaults. For instance, the BitTorrent protocol rewards uploading peers with faster downloads. The download bandwidth available to a peer depends on how much it has uploaded. Moreover, peers share pieces of a file before having received it in whole. This non-monetary i13n policy has been proved to work in practice.

Blockchains

Bitcoin has introduced proof-of-work (PoW) for native monetary rewards in a P2P network. PoW miners are automatically assigned newly mined coins for generating blocks. Miners must expend physical resources to generate a block. If the block is invalid, these expenses are not compensated (implicit monetary punishment). Proof-of-stake (PoS), used in Ethereum and many other cryptocurrencies, introduces explicit monetary punishments. PoS validators lock up (stake) native tokens and get rewarded for validating blocks or slashed for misbehaviour.

Decentralised storage

Post-Bitcoin decentralised storage networks include Codex, Storj, Sia, Filecoin, IPFS. Their i13n methods combine techniques from early P2P file-sharing with blockchain-inspired reward mechanisms.

Waku background

Waku is a family of protocols for a modular privacy-preserving censorship-resistant decentralised communication network. The backbone of Waku is the Relay protocol (and its spam-protected version RLN-Relay). Additionally, there are light protocols: Store, Filter, and Lightpush. Light protocols are also referred to as client-server protocols and request-response protocols.

A server is a node running Relay and a server-side of at least one light protocol. A client is a node running a client-side of any of the light protocols. A server may sometimes be referred to as a full node, and a client as a light node. There is no strict definition of a full node vs a light node in Waku (see discussion).

In light protocols, a client sends a request to a server, and a server performs some actions and returns a response:

  • Store: the server responds with messages relayed that match a set of criteria;
  • Filter: the server will relay (only) messages that pass a filter to the client;
  • Lightpush: the server publishes the client's message to the Relay network.

Waku i13n challenges

Waku has no consensus and no native token, which brings it closer to reputation-incentivised file-sharing networks. As of late 2023, Waku only operates under reputation-based rewards and punishments. While RLN-Relay adds monetary punishments for spammers, slashing is yet to be activated.

Monetary rewards and punishments should ideally be atomically linked with the node's behaviour. A benefit of blockchains in this respect is that the desired behaviour of miners or validators can be verified automatically. Enforcing atomicity in a communication network is more challenging: it is non-trivial to prove that a given piece of data has been relayed.

Our goal is to combine monetary and reputation-based incentives for Waku. Monetary incentives have demonstrated their robustness in blockchains. We think they are necessary to scale the network beyond the initial phase when it's maintained altruistically.

Waku Store

Waku Store is a light protocol for querying historic messages that works as follows:

  1. the client sends a HistoryQuery to the server;
  2. the server sends a HistoryResponse to the client.

The response may be split into multiple parts, as specified by pagination parameters in PagingInfo.

We define a relevant message as a message that matches client-defined criteria (e.g., relayed within a given time frame). Upon receiving a request, a server should quickly send back a response containing all and only relevant messages.

Waku Store incentivisation

An incentivised Store protocol has the following extra steps:

  1. pricing:
    1. cost calculation
    2. price advertisement
    3. price negotiation
  2. payment:
    1. payment itself
    2. proof of payment
  3. reputation
  4. results cross-checking

In this document, we focus on the simplest proof-of-concept (PoC) i13n for Store. Compared to the fully-fledged protocol, the PoC version is simplified in the following ways:

  • cost calculation is based on a common-knowledge price;
  • there is no price advertisement and no price negotiation;
  • each query is paid for in a separate transaction, txid acts a proof of payment;
  • the reputation system is simplified (see below);
  • the results are not cross-checked.

In the PoC protocol:

  1. the client calculates the price based on the known rate per hour of history;
  2. the client pays the appropriate amount to the server's address;
  3. the client sends a HistoryQuery to the server alongside the proof of payment (txid);
  4. the server checks that the txid corresponds to a confirmed transaction with at least the required amount;
  5. the server sends a HistoryResponse to the client.

In further subsections, we list the potential direction for future work towards a fully-fledged i13n mechanism.

Pricing

For PoC, we assume a constant price per hour of history. This price and the blockchain address of the server are assumed to be common knowledge. This simplifies the client-server interaction, avoiding the price negotiation step.

In the future versions of the protocol, the price will be negotiated and will depend on multiple parameters, such as the total size of the relevant messages in the response.

Future work

Payment

For the PoC, each request is paid for with a separate transaction. The transaction hash (txid) acts as a proof of payment. The server verifies the payment by ensuring that:

  1. the transaction has been confirmed;
  2. the transaction is paying the proper amount to the server's account;
  3. the txid does not correspond to any prior response.

The client gives proof of payment before it receives the response. Other options could be:

  1. the client pays after the fact;
  2. the client pays partly upfront and partly after the fact;
  3. a centralised third party (either trusted or semi-trusted, like a smart contract) ensures atomicity;
  4. cryptographically ensured atomicity (similar to atomic swaps, Lightning, or Hopr).

Our design considerations are:

  • the PoC protocol should be simple;
  • servers are more "permanent" entities and are more likely to have long-lived identities;
  • it is more important to protect the clients's privacy than the server's privacy.

In light of these criteria, we suggest that the client pays first. This is simpler than splitting the payment, or involving an extra atomicity-enforcing mechanism. Moreover, pre-payment is arguably more privacy-preserving than post-payment, which encourages servers to deanonymise clients to prevent fraud.

Future work

Reputation

We use reputation to discourage the server from taking the payment and not responding. The client keeps track of the server's reputation:

  • all servers start with zero reputation points;
  • if the server honours the request, it gets +n points;
  • if the server does not respond before a timeout, it gets -m points.
  • if the server's reputation drops below k points, the client will never query it again.

n, m, and k are subject to configuration.

Optionally, a client may treat a given server as trusted, assigning it a constant positive reputation.

Potential issues:

  • An attacker can establish new server identities and continue running away with clients' money. Countermeasures:
    • a client only queries trusted servers (which however leads to centralisation);
    • when querying a new server, a client first sends a small (i.e. cheap) request as a test;
    • more generally, the client selects a server on a case-by-case basis, weighing the payment amount against the server's reputation.
  • The ban mechanism can theoretically be abused. For instance, a competitor may attack the victim server and cause the clients who were awaiting the response to ban that server. Countermeasure: prevent DoS-attacks.

Future work

Design a more comprehensive reputation system:

Results cross-checking

As there is no consensus over past messages, a client may want to query multiple servers and merge their responses. Cross-checking helps ensure that servers are a) not censoring real messages; b) not injecting fake messages into history. Cross-checking is absent in PoC but may be considered later.

Future work

Evaluation

We should think about what the success metrics for an incentivised protocol are, and how to measure them both in simulated settings, as well as in a live network.

Longer-term future work

+ + \ No newline at end of file diff --git a/research/research-and-studies/maximum-bandwidth/index.html b/research/research-and-studies/maximum-bandwidth/index.html index 0d91db8..d634ac3 100644 --- a/research/research-and-studies/maximum-bandwidth/index.html +++ b/research/research-and-studies/maximum-bandwidth/index.html @@ -4,9 +4,9 @@ Maximum Bandwidth for Global Adoption | Waku Documentation - - - + + +
@@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Maximum Bandwidth for Global Adoption

TLDR: This issue aims to set the maximum bandwidth in x Mbps that each waku shard should consume so that the maximum amount of people can run a full waku node. It is up to https://github.com/waku-org/research/issues/22 to specify how this maximum will be enforced.

Conclusion: Limit to 10 Mbps each waku shard.

Introduction

Waku is designed in a way that everyone should be able to run a full node on an average laptop with a residential Internet connection, at least in one shard. This will enable true decentralization and give power to the users, since they won't need to rely on third parties to send/receive messages. Professional node operators running in data centers, can of course contribute to multiple shards, but we should keep the bandwidth/hardware requirements of single shard rather low.

This vision opposes the federated approach, where a few nodes requiring vast amounts of resources (cpu, memory, bandwidth) run in data centres, taking the power from the user. While federated approaches are an improvement from traditional client-server architectures, waku envisions a fully peer-to-peer architecture where anyone should be able to run a node.

In order to ensure that anyone can run a node in desktop, there are two main limiting factors:

  1. Bandwidth consumption in Mbps
  2. CPU/memory resources (mainly limited by RLN proof verification)

This issue focuses on i) bandwidth consumption and https://github.com/waku-org/research/issues/30 on ii) CPU/memory resources. Note that on https://github.com/waku-org/research/issues/23 an analysis on the impact on RLN was already made, but wasn't focused on scalability. Said issues do.

In https://github.com/waku-org/research/issues/22 we discussed why and how to limit the maximum bandwidth per shard, but we haven't come up with a specific number in Mbps. This issue i) presents data from the available bandwidth at different locations and ii) suggests a maximum bandwidth in Mbps that waku should enforce.

Bandwidth availability and usage

The following tables show:

  • Table [1] The Q25, Q75 and average bandwidth (upload/download) in Mbps available on different continents. Raw data is available here and credits to @leobago for the summarized version. Note: The below numbers were rounded to the nearest integer.
  • Table [2] The median global bandwidth (upload/download) in Mbps, taken from speedtest (accessed 12 Oct 2023).
  • Table [3] Download bandwidth requirements in Mbps for Netflix video streaming, source.
Table [1]Download (Mbps)Upload (Mbps)
Q25AverageQ75Q25AverageQ75
North-America58107137386885
South-America215472133344
Europe4993119305672
Asia235371153750
Oceania4484108275063
Africa12263371722
Table [2]Median Download (Mbps)Median Upload (Mbps)
Global8338
Table [3] Video resolutionRecommended Bandwidth
HD3 Mbps
Full HD5 Mbps
4K/UHD15 Mbps

Selecting a maximum bandwidth

With the above data, we should be informed to take a decision on the maximum bandwidth that we should enforce per shard. With this number, we will apply the techniques explained in https://github.com/waku-org/research/issues/22 to ensure (with some statistical confidence) that the bandwidth won't exceed that number.

The trade-off is clear:

  • We enforce a low bandwidth: more people can run full waku nodes, overall network throughput is less, network decentralization is easier, gives power to the user as its fully sovereign.
  • We don't enforce a low bandwidth: not possible to run full waku nodes in laptops acting as a centralization force, nodes are run by few professional operators in data centers, waku users just use light clients, network throughput can scale way easier, federated approach.

So it's about where to draw this line.

Points to take into account:

  • Relay contributes to bandwidth the most: Relay is the protocol that mostly contributes to bandwidth usage, and it can't choose to allocate fewer bandwidth resources like other protocols (eg store can choose to provide less resources and it will work). In other words, the network sets the relay bandwidth requirements, and if the node can't meet them, it just wont work.
  • Upload and download bandwidth are the same: Due to how gossipsub works, and hence relay, the bandwidth consumption is symmetric, meaning that upload and download bandwidth is the same. This is because of D and the reciprocity of the connections, meaning that one node upload is another download.
  • Nodes not meeting requirements can use light clients. Note that nodes not meeting the bandwidth requirements can still use waku, but they will have to use light protocols, which are a great alternative, especially on mobile, but with some drawbacks (trust assumptions, less reliability, etc)
  • Waku can't take all the bandwidth: Waku is meant to be used in conjunction with other services, so it shouldn't consume all the existing bandwidth. If Waku consumes x Mbps and someone bandwidth is x Mpbs, the UX won't be good.
  • Compare with existing well-known services: As shown in Table [3], Netflix 4K video streaming takes 15Mbps, so that is an order of magnitude to take into account.

Coming up with a number:

  • Lowest average download speed across continents is Africa (26 Mbps)
  • Lowest average upload speed across continents is Africa (17 Mbps)
  • Since in waku the bandwidth consumption is symmetric, we are limited by the lowest (17 Mpbs)
  • However waku should not consume all bandwidth, leaving some room for other applications.
  • We could set 10 Mbps, which is between Full HD video and 4K.
  • With 10Mbps the % of average bandwidth waku will consume is:
    • North-America 9 %
    • South-America 18 %
    • Europe 11 %
    • Asia 18 %
    • Oceania 12 %
    • Africa 38 %

Conclusion: Limit to 10 Mbps each waku shard. How? Not trivial, see https://github.com/waku-org/research/issues/22#issuecomment-1727795042

Note: This number is not set in stone and is subject to modifications, but it will most likely stay in the same order of magnitude if changed.

- - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Maximum Bandwidth for Global Adoption

TLDR: This issue aims to set the maximum bandwidth in x Mbps that each waku shard should consume so that the maximum amount of people can run a full waku node. It is up to https://github.com/waku-org/research/issues/22 to specify how this maximum will be enforced.

Conclusion: Limit to 10 Mbps each waku shard.

Introduction

Waku is designed in a way that everyone should be able to run a full node on an average laptop with a residential Internet connection, at least in one shard. This will enable true decentralization and give power to the users, since they won't need to rely on third parties to send/receive messages. Professional node operators running in data centers, can of course contribute to multiple shards, but we should keep the bandwidth/hardware requirements of single shard rather low.

This vision opposes the federated approach, where a few nodes requiring vast amounts of resources (cpu, memory, bandwidth) run in data centres, taking the power from the user. While federated approaches are an improvement from traditional client-server architectures, waku envisions a fully peer-to-peer architecture where anyone should be able to run a node.

In order to ensure that anyone can run a node in desktop, there are two main limiting factors:

  1. Bandwidth consumption in Mbps
  2. CPU/memory resources (mainly limited by RLN proof verification)

This issue focuses on i) bandwidth consumption and https://github.com/waku-org/research/issues/30 on ii) CPU/memory resources. Note that on https://github.com/waku-org/research/issues/23 an analysis on the impact on RLN was already made, but wasn't focused on scalability. Said issues do.

In https://github.com/waku-org/research/issues/22 we discussed why and how to limit the maximum bandwidth per shard, but we haven't come up with a specific number in Mbps. This issue i) presents data from the available bandwidth at different locations and ii) suggests a maximum bandwidth in Mbps that waku should enforce.

Bandwidth availability and usage

The following tables show:

  • Table [1] The Q25, Q75 and average bandwidth (upload/download) in Mbps available on different continents. Raw data is available here and credits to @leobago for the summarized version. Note: The below numbers were rounded to the nearest integer.
  • Table [2] The median global bandwidth (upload/download) in Mbps, taken from speedtest (accessed 12 Oct 2023).
  • Table [3] Download bandwidth requirements in Mbps for Netflix video streaming, source.
Table [1]Download (Mbps)Upload (Mbps)
Q25AverageQ75Q25AverageQ75
North-America58107137386885
South-America215472133344
Europe4993119305672
Asia235371153750
Oceania4484108275063
Africa12263371722
Table [2]Median Download (Mbps)Median Upload (Mbps)
Global8338
Table [3] Video resolutionRecommended Bandwidth
HD3 Mbps
Full HD5 Mbps
4K/UHD15 Mbps

Selecting a maximum bandwidth

With the above data, we should be informed to take a decision on the maximum bandwidth that we should enforce per shard. With this number, we will apply the techniques explained in https://github.com/waku-org/research/issues/22 to ensure (with some statistical confidence) that the bandwidth won't exceed that number.

The trade-off is clear:

  • We enforce a low bandwidth: more people can run full waku nodes, overall network throughput is less, network decentralization is easier, gives power to the user as its fully sovereign.
  • We don't enforce a low bandwidth: not possible to run full waku nodes in laptops acting as a centralization force, nodes are run by few professional operators in data centers, waku users just use light clients, network throughput can scale way easier, federated approach.

So it's about where to draw this line.

Points to take into account:

  • Relay contributes to bandwidth the most: Relay is the protocol that mostly contributes to bandwidth usage, and it can't choose to allocate fewer bandwidth resources like other protocols (eg store can choose to provide less resources and it will work). In other words, the network sets the relay bandwidth requirements, and if the node can't meet them, it just wont work.
  • Upload and download bandwidth are the same: Due to how gossipsub works, and hence relay, the bandwidth consumption is symmetric, meaning that upload and download bandwidth is the same. This is because of D and the reciprocity of the connections, meaning that one node upload is another download.
  • Nodes not meeting requirements can use light clients. Note that nodes not meeting the bandwidth requirements can still use waku, but they will have to use light protocols, which are a great alternative, especially on mobile, but with some drawbacks (trust assumptions, less reliability, etc)
  • Waku can't take all the bandwidth: Waku is meant to be used in conjunction with other services, so it shouldn't consume all the existing bandwidth. If Waku consumes x Mbps and someone bandwidth is x Mpbs, the UX won't be good.
  • Compare with existing well-known services: As shown in Table [3], Netflix 4K video streaming takes 15Mbps, so that is an order of magnitude to take into account.

Coming up with a number:

  • Lowest average download speed across continents is Africa (26 Mbps)
  • Lowest average upload speed across continents is Africa (17 Mbps)
  • Since in waku the bandwidth consumption is symmetric, we are limited by the lowest (17 Mpbs)
  • However waku should not consume all bandwidth, leaving some room for other applications.
  • We could set 10 Mbps, which is between Full HD video and 4K.
  • With 10Mbps the % of average bandwidth waku will consume is:
    • North-America 9 %
    • South-America 18 %
    • Europe 11 %
    • Asia 18 %
    • Oceania 12 %
    • Africa 38 %

Conclusion: Limit to 10 Mbps each waku shard. How? Not trivial, see https://github.com/waku-org/research/issues/22#issuecomment-1727795042

Note: This number is not set in stone and is subject to modifications, but it will most likely stay in the same order of magnitude if changed.

+ + \ No newline at end of file diff --git a/research/research-and-studies/message-propagation/index.html b/research/research-and-studies/message-propagation/index.html index 514a373..9729386 100644 --- a/research/research-and-studies/message-propagation/index.html +++ b/research/research-and-studies/message-propagation/index.html @@ -4,9 +4,9 @@ Message Propagation Times With Waku-RLN | Waku Documentation - - - + + +
@@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Message Propagation Times With Waku-RLN

TLDR: We present the results of 1000 nwaku nodes running rln using different message sizes, in a real network with bandwidth limitations and network delays. The goal is to study the message propagation delay distribution, and how it's affected by i) rln and ii) message size in a real environment. We observe that for messages of 10kB the average end-to-end propagation delay is 508 ms. We can also observe that the message propagation delays are severely affected when increasing the message size, which indicates that it is not a good idea to use waku for messages of eg. 500kB. See simulation parameters.

Introduction

Waku uses relay as a routing protocol, which is an adaptation of gossipsub. It routes messages following a publisher/subscriber architecture, where nodes can publish messages or subscribe to topics. If message m is published to topic t, all i nodes n_1...n_i subscribed to t will get m. The relay protocol ensures that every node gets the messages of the topics it is subscribed to.

However, since relay works in a decentralized manner, all nodes contribute to the gossiping of a message, until it has successfully reached all the interested nodes (subscribed to it). This means that a message can travel multiple hops until it reaches all nodes. The amount of hops determines the message propagation time, which is measured as the time difference of when the node published the message and when another node received.

This issue aims to go from theory to practice, by i) understanding message propagation times in theory and ii) presenting nwaku simulation results in an end-to-end setup with rln, with real message propagation times.

Theory

Let's start with message propagation times in theory. On a high level, it depends on:

  • The gossipsub configuration, being D one of the most important parameters. This sets the hops that a message will travel to reach all nodes. Higher D, less hops, less delay. Note that a higher D implies more bandwidth consumption.
  • The node. Different nodes will see different propagation times, because a message can travel different paths. A node connected directly to the publisher (1 hop) will see lower propagation times than other nodes further away.
  • Individual propagation times. Since a message can travel multiple hops to reach its destination, each hop adds a contribution to the overall message propagation time. This individual propagation time depends on the characteristics on the nodes involved in the connections.

In a D-regular graph, like the one formed by waku nodes around a topic, the maximum amount of hops that a message can travel to reach all nodes can be calculated as ceil(log(total_nodes)/log(D)). For example, with log(1000)/log(6) = 3.85 = 4. So in a network with 1000 nodes and D=6, no matter which node publishes the message, in 4 hops it will reach all the nodes.

Notice the "worst case" since some nodes might be directly connected to the publisher, so they will get the message in just 1 hop.

But how long does it take to jump each hop? It depends on:

  • The latency between nodes. Can be measured as the time to respond to a ping.
  • The size of the messages. The bigger the message, the more time it takes to transmit.
  • Nodes bandwidth. Sender upload bandwidth and receiver download bandwidth. More important when using big message sizes.
  • Message validation time. When each node receives a message, it applies some validation to decide if the message is further gossiped or not. In the case of waku, this is RLN (paper, rfc)

Assuming a message m that travels 4 hops from node n1 (publisher) to n5 (subscriber) we can calculate the message propagation time mpt=ipt_1+ipt_2+ipt_3+ipt_4 where ipt is the individual propagation time between each node in the chain.

However, specific message propagation times are useless, we need average times under specific conditions. And for this, we need simulations.

Simulations

Using shadow simulator, we have developed a tool that allows to simulate message propagation delays of nwaku (using a slightly modified branch, mainly to instrument it with tools to measure the times + starting from an already connected mesh. Thanks @Menduist for the help. Note that running this simulation requires a significant amount of resources, done with 256 GB of RAM.

The configuration of the simulation is (see config):

  • latency=100ms. Average latency in our current waku network. Thanks @vpavlin for the measurements. See this for live data.
  • down_bandwidth=83Mbps, up_bandwidth=38Mbps. As shown in Table 2 that's the worldwide median speed.
  • D=6, which is the current nwaku configuration.
  • nodes=1000. Amount of nodes used in the simulation
  • nwaku was used with a minor modification
  • A total of 10 messages were published, that led to 9990 received messages.
  • Since shadow doesn't take into account CPU times (by now), we simulate it with sleepAsync as per https://github.com/waku-org/research/issues/23 findings. 0.012 seconds for proof verification and 0.15 seconds for proof generation.

Results

The following figure shows the message propagation time with real simulations, showing the distribution in a network with the above configuration with three different message sizes: 10kB, 100kB, 500kB. Note that the whiskers indicate the best/worst values and the box contains P25 to P75 values. Average mu and P95 are also shown. Raw data here.

message-latency-distribution

Important note. The first messages sent in the simulations are omitted, since they show an abnormal propagation delay that doesn't reflect reality. This is due to how flow control works in TCP, where right after connection, the sender node has no idea of the "bandwidth" of the receiver node, so it will start sending packages at a lower rate. This translates into high transmission times, and it's more pronounced when dealing with big message sizes.

In other words, in a 100Mpbs link, 100Mbits won't be sent in 1 second, or at least not a the beginning, when the node is slowly increasing the rate until based on ACK/NACK ratio. For more information about this, this is explained in here.

Conclusions:

  • Using small messages 10kB the average propagation delay is 508 ms, quite reasonable for applications using waku. The variance is acceptable, with 95% of the messages arriving in <627 ms.
  • When using a size of 10kB we can see that the best case propagation delay is 263 ms. This corresponds to the nodes that are just 1 hop from the publisher. The proof generation time 0.15 seconds affects the most, where the rest is the inter-node latency and the transmission of the message itself.
  • We can see that the message propagation delay increases with big messages, 100kB and 500kB. So its probably not a good idea to use waku for such big messages. Note that these simulations had 1000 nodes, so if we scale it to 10000 or beyond, propagation times would be worse.
  • Best case propagation time (lower part of the whisker) is quite similar in all cases. This is because it corresponds to the node that is just 1 hop away from the publisher.

Future work:

  • Current waku D values (average of 6 ranging from 4 to 12) have a huge impact on the bandwidth that a node consumes. Are we willing to lower D in order to reduce bandwidth but increase message propagation times?
  • Since shadow doesn't take CPU time into account, it's currently simulated for rln, which should be the biggest bottleneck. Once shadow has this feature times would be more accurate.
- - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Message Propagation Times With Waku-RLN

TLDR: We present the results of 1000 nwaku nodes running rln using different message sizes, in a real network with bandwidth limitations and network delays. The goal is to study the message propagation delay distribution, and how it's affected by i) rln and ii) message size in a real environment. We observe that for messages of 10kB the average end-to-end propagation delay is 508 ms. We can also observe that the message propagation delays are severely affected when increasing the message size, which indicates that it is not a good idea to use waku for messages of eg. 500kB. See simulation parameters.

Introduction

Waku uses relay as a routing protocol, which is an adaptation of gossipsub. It routes messages following a publisher/subscriber architecture, where nodes can publish messages or subscribe to topics. If message m is published to topic t, all i nodes n_1...n_i subscribed to t will get m. The relay protocol ensures that every node gets the messages of the topics it is subscribed to.

However, since relay works in a decentralized manner, all nodes contribute to the gossiping of a message, until it has successfully reached all the interested nodes (subscribed to it). This means that a message can travel multiple hops until it reaches all nodes. The amount of hops determines the message propagation time, which is measured as the time difference of when the node published the message and when another node received.

This issue aims to go from theory to practice, by i) understanding message propagation times in theory and ii) presenting nwaku simulation results in an end-to-end setup with rln, with real message propagation times.

Theory

Let's start with message propagation times in theory. On a high level, it depends on:

  • The gossipsub configuration, being D one of the most important parameters. This sets the hops that a message will travel to reach all nodes. Higher D, less hops, less delay. Note that a higher D implies more bandwidth consumption.
  • The node. Different nodes will see different propagation times, because a message can travel different paths. A node connected directly to the publisher (1 hop) will see lower propagation times than other nodes further away.
  • Individual propagation times. Since a message can travel multiple hops to reach its destination, each hop adds a contribution to the overall message propagation time. This individual propagation time depends on the characteristics on the nodes involved in the connections.

In a D-regular graph, like the one formed by waku nodes around a topic, the maximum amount of hops that a message can travel to reach all nodes can be calculated as ceil(log(total_nodes)/log(D)). For example, with log(1000)/log(6) = 3.85 = 4. So in a network with 1000 nodes and D=6, no matter which node publishes the message, in 4 hops it will reach all the nodes.

Notice the "worst case" since some nodes might be directly connected to the publisher, so they will get the message in just 1 hop.

But how long does it take to jump each hop? It depends on:

  • The latency between nodes. Can be measured as the time to respond to a ping.
  • The size of the messages. The bigger the message, the more time it takes to transmit.
  • Nodes bandwidth. Sender upload bandwidth and receiver download bandwidth. More important when using big message sizes.
  • Message validation time. When each node receives a message, it applies some validation to decide if the message is further gossiped or not. In the case of waku, this is RLN (paper, rfc)

Assuming a message m that travels 4 hops from node n1 (publisher) to n5 (subscriber) we can calculate the message propagation time mpt=ipt_1+ipt_2+ipt_3+ipt_4 where ipt is the individual propagation time between each node in the chain.

However, specific message propagation times are useless, we need average times under specific conditions. And for this, we need simulations.

Simulations

Using shadow simulator, we have developed a tool that allows to simulate message propagation delays of nwaku (using a slightly modified branch, mainly to instrument it with tools to measure the times + starting from an already connected mesh. Thanks @Menduist for the help. Note that running this simulation requires a significant amount of resources, done with 256 GB of RAM.

The configuration of the simulation is (see config):

  • latency=100ms. Average latency in our current waku network. Thanks @vpavlin for the measurements. See this for live data.
  • down_bandwidth=83Mbps, up_bandwidth=38Mbps. As shown in Table 2 that's the worldwide median speed.
  • D=6, which is the current nwaku configuration.
  • nodes=1000. Amount of nodes used in the simulation
  • nwaku was used with a minor modification
  • A total of 10 messages were published, that led to 9990 received messages.
  • Since shadow doesn't take into account CPU times (by now), we simulate it with sleepAsync as per https://github.com/waku-org/research/issues/23 findings. 0.012 seconds for proof verification and 0.15 seconds for proof generation.

Results

The following figure shows the message propagation time with real simulations, showing the distribution in a network with the above configuration with three different message sizes: 10kB, 100kB, 500kB. Note that the whiskers indicate the best/worst values and the box contains P25 to P75 values. Average mu and P95 are also shown. Raw data here.

message-latency-distribution

Important note. The first messages sent in the simulations are omitted, since they show an abnormal propagation delay that doesn't reflect reality. This is due to how flow control works in TCP, where right after connection, the sender node has no idea of the "bandwidth" of the receiver node, so it will start sending packages at a lower rate. This translates into high transmission times, and it's more pronounced when dealing with big message sizes.

In other words, in a 100Mpbs link, 100Mbits won't be sent in 1 second, or at least not a the beginning, when the node is slowly increasing the rate until based on ACK/NACK ratio. For more information about this, this is explained in here.

Conclusions:

  • Using small messages 10kB the average propagation delay is 508 ms, quite reasonable for applications using waku. The variance is acceptable, with 95% of the messages arriving in <627 ms.
  • When using a size of 10kB we can see that the best case propagation delay is 263 ms. This corresponds to the nodes that are just 1 hop from the publisher. The proof generation time 0.15 seconds affects the most, where the rest is the inter-node latency and the transmission of the message itself.
  • We can see that the message propagation delay increases with big messages, 100kB and 500kB. So its probably not a good idea to use waku for such big messages. Note that these simulations had 1000 nodes, so if we scale it to 10000 or beyond, propagation times would be worse.
  • Best case propagation time (lower part of the whisker) is quite similar in all cases. This is because it corresponds to the node that is just 1 hop away from the publisher.

Future work:

  • Current waku D values (average of 6 ranging from 4 to 12) have a huge impact on the bandwidth that a node consumes. Are we willing to lower D in order to reduce bandwidth but increase message propagation times?
  • Since shadow doesn't take CPU time into account, it's currently simulated for rln, which should be the biggest bottleneck. Once shadow has this feature times would be more accurate.
+ + \ No newline at end of file diff --git a/research/research-and-studies/rln-key-benchmarks/index.html b/research/research-and-studies/rln-key-benchmarks/index.html index 3bd0ce0..163b766 100644 --- a/research/research-and-studies/rln-key-benchmarks/index.html +++ b/research/research-and-studies/rln-key-benchmarks/index.html @@ -4,9 +4,9 @@ RLN Key Benchmarks | Waku Documentation - - - + + +
@@ -16,8 +16,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

RLN Key Benchmarks

Introduction

Since RLN has been chosen as the spamming protection mechanism for waku, we must understand the practical implications of using it. This issue explains the main differences between relay and rln-relay and gives some benchmarks after running simulations using waku-simulator, in a network with the following characteristics:

  • 100 nwaku nodes, each one with a valid rln membership and publishing a message every 10 seconds to a common topic.
  • rln contract deployed in Ethereum Sepolia
  • 10.000 memberships registered in the contract
  • pure relay (store and light protocols disabled)

The main deltas rln vs rln-relay are:

  • New proof field in WakuMessage containing 384 extra bytes. This field must be generated and attached to each message.
  • New validator, that uses proof to Accept or Reject the message. The proof has to be verified.
  • New dependency on a blockchain, Ethereum, or any EVM chain, to keep track of the members allowed to publish.

But what are the practical implications of these?

TLDR:

  • Proof generation is constant-ish. 0.15 second for each proof
  • Proof verification is constant-ish, 0.012 seconds. In a network with 10k nodes and D=6 this would add an overhead delay of 0.06 seconds.
  • Gossipsub scoring drops connections from spammer peers, which acts as the punishment (instead of slashing). Validated in the simulation.
  • Rln doesn't have any impact on memory consumption.

Proof generation times

Seems that proof generation times stay constant no matter the size of the message. In the following simulation it was increased from: 1kB, 10kB, 50kB, 150kB. On average it takes 0.15 seconds to calculate the message proof. This means that when a node wants to send a message, it will need to spend this time generating the proof. It seems very reasonable and it actually acts as a mini proof of work, where a consumer computer won't be able to publish a really high number of messages per second.

proof-generation-times

Proof verification times

On the other hand, rln also adds an overhead in the gossipsub validation process. On average it takes 0.012 seconds to verify the proof. It seems that when we increase the message size, validation time seems to increase a bit, which can be for any other reason besides rln itself (eg deserializing the message might take longer).

This number seems reasonable and shouldn't affect that much the average delay of a message. Assuming a d-regular graph, with 10k nodes and D=6, we can have up to log(total_nodes)/log(D)=5 hops. So in the worst case, rln will add a network latency of 0.012*5 = 0.06 seconds

proof-verification-times

Spam protection

For the initial release of RLN, slashing won't be implemented and it still remains unclear if it will be implemented in the future. Luckily, even if slashing is not implemented rln can be used to detect spam and punish the sender off-chain (instead of slashing an onchain collateral). This is done with gossipsub scoring.

In the following simulation, we can see 100 nwaku interconnected nodes, where one of them suddenly starts spamming the network with multiple valid rln messages 3000 messages/minute. Since its rate limited to 1msg/10 seconds, we can see that in almost no time, every node in the network disconnects from the spammer peer (see red node), leaving it with 0 peers, which disincentivise such attacks and without requiring a financial slashing.

connected-peers

RLN tree sync

Using RLN implies that waku should now piggyback on a blockchain (the case study uses Ethereum Sepolia) and has to stay up to date with the latest events emitted by the rln smart contract. These events are used to locally construct a tree that contains all members allowed to create valid proofs to send messages. Some numbers:

  • A tree with 10k members takes 2Mbytes of space. Negligible.
  • A tree with 10k members takes `<4 minutes to synchronize. Assumable since it's done just once.
  • With a block range of 5000 blocks for each request, we would need 520 requests to synchronize 1 year of historical data from the tree. Assumable since most of the free endpoints out there allow 100k/day.

Performance relay vs. rln-relay

Same simulation with 100 nodes was executed with rln and without rln:

  • Memory consumption is almost identical

with rln

with-rln

without rln -

without-rln

  • Couldn't capture cpu metrics
  • Minor differences in messages per seconds is due to injection technique, nothing related to rln itself.
- - +

without-rln

  • Couldn't capture cpu metrics
  • Minor differences in messages per seconds is due to injection technique, nothing related to rln itself.
+ + \ No newline at end of file diff --git a/rules-of-engagement/index.html b/rules-of-engagement/index.html index 9b17021..c434e92 100644 --- a/rules-of-engagement/index.html +++ b/rules-of-engagement/index.html @@ -4,9 +4,9 @@ Rules of Engagement | Waku Documentation - - - + + +
@@ -16,8 +16,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Rules of Engagement

Waku is a nascent technology and the Waku community is still growing. Hence, the Waku team is keen to work closely with projects to help leverage Waku technology to drive the success of their own applications.

We describe below the expected flow for working with Waku and some rules of engagement to set expectations for project teams interacting with the Waku team.

1. Initial discussion

We encourage the initial discussion to happen over a video call. However, in-person event or online discussions are also an option.

During this initial interaction, the project team should present their product and the needs they have in relation to peer-to-peer communication and real time interaction.

The Waku team will provide an overview of Waku and point to specific protocol and software that should help fulfil such needs.

Benefits and caveats are highlighted and further documentation and examples will be provided.

2. Solution design

Projects should review Waku documentations and libraries in their own time; start building a PoC using Waku.

Projects should start designing over Waku and come up with skeleton design or user flows about specific friction points or complex area (e.g. user experience, scaling).

Project should appoint one or two Waku SME (Subject Matter Expert) to drive most discussions with Waku team to start acquire expertise on Waku behaviour.

Project's Waku SMEs should present unresolved design issues to Waku team.

The Waku team will then review and provide skeleton design solutions on how to overcome said unresolved or complex issues.

3. Commitment

The project should finalise a design, solution or protocol they will build using Waku.

If they wish to, they can present this solution to the Waku team to get feedback and identify technical gaps.

The Waku team can provide feedback, highlight potential caveats, and communicate on delivery timeline for gaps, if any.

note

While the Waku team can provide feedback or even design potential solution on how Waku could be integrated in an application. It is the responsibility of the project team to understand the potential caveats and limitations that may incur with such a design.

The Waku team can provide options, but it is up to the project team to decide on the final solution.

4. Building

The project then start building their MVP using Waku. The Waku team can provide support regarding API usage, bugs encountered, documentation gaps.

Waku team will use feedback raised by project to improve APIs, fix bugs and enhance documentation. Waku team continues R&D to deliver any committed technical gaps.

Project delivers their MVP.

note

The Waku team is keen to help any usage of Waku library. Please note that code snippets are necessary for preliminary investigations of issues.

Sometimes, a code snippet is not enough; in this case, a minimal reproduction repo is necessary to allow us to do further investigation. -If the project is open-source, then the Waku team might try to further investigate using it, as long as the reproduction steps are easy.

If no code is provided to help with the investigation, then there is nothing the Waku team can do.

For any unresolved issue, the project must open an issue on the related GitHub repository under the waku-org organisation.

5. Ongoing relation

Once the project application is live, the Waku team is keen to maintain regular contact. This can include discussion around performance, bugs found by users, etc.

The Waku team is keen to regularly present new and upcoming development to project team, highlight items that are particularly relevant.

If a project wishes to take onboard any new Waku protocol, or decide to extend their product with a new functionality using Waku, the circle can resume from step 1.

- - +If the project is open-source, then the Waku team might try to further investigate using it, as long as the reproduction steps are easy.

If no code is provided to help with the investigation, then there is nothing the Waku team can do.

For any unresolved issue, the project must open an issue on the related GitHub repository under the waku-org organisation.

5. Ongoing relation

Once the project application is live, the Waku team is keen to maintain regular contact. This can include discussion around performance, bugs found by users, etc.

The Waku team is keen to regularly present new and upcoming development to project team, highlight items that are particularly relevant.

If a project wishes to take onboard any new Waku protocol, or decide to extend their product with a new functionality using Waku, the circle can resume from step 1.

+ + \ No newline at end of file diff --git a/search-index.json b/search-index.json index e8c5d88..f459cb7 100644 --- a/search-index.json +++ b/search-index.json @@ -1 +1 @@ -[{"documents":[{"i":1,"t":"Getting Started","u":"/","b":["Guides"]},{"i":11,"t":"JavaScript Waku SDK","u":"/guides/js-waku/","b":["Guides","JavaScript Waku SDK"]},{"i":21,"t":"Send and Receive Messages Using Light Push and Filter","u":"/guides/js-waku/light-send-receive","b":["Guides","JavaScript Waku SDK"]},{"i":35,"t":"Manage Your Filter Subscriptions","u":"/guides/js-waku/manage-filter","b":["Guides","JavaScript Waku SDK"]},{"i":41,"t":"Debug Your Waku DApp and WebSocket","u":"/guides/js-waku/debug-waku-dapp","b":["Guides","JavaScript Waku SDK"]},{"i":57,"t":"Bootstrap Nodes and Discover Peers","u":"/guides/js-waku/configure-discovery","b":["Guides","JavaScript Waku SDK"]},{"i":69,"t":"Run @waku/sdk in a NodeJS Application","u":"/guides/js-waku/run-waku-nodejs","b":["Guides","JavaScript Waku SDK"]},{"i":84,"t":"Encrypt, Decrypt, and Sign Your Messages","u":"/guides/js-waku/message-encryption","b":["Guides","JavaScript Waku SDK"]},{"i":96,"t":"Scaffold DApps Using @waku/create-app","u":"/guides/js-waku/use-waku-create-app","b":["Guides","JavaScript Waku SDK"]},{"i":102,"t":"Build Nwaku from Source","u":"/guides/nwaku/build-source","b":["Guides","Run a Nwaku Node"]},{"i":114,"t":"JavaScript SDK FAQ","u":"/guides/js-waku/faq","b":["Guides","JavaScript Waku SDK"]},{"i":116,"t":"Node Configuration Methods","u":"/guides/nwaku/config-methods","b":["Guides","Run a Nwaku Node"]},{"i":126,"t":"Retrieve Messages Using Store Protocol","u":"/guides/js-waku/store-retrieve-messages","b":["Guides","JavaScript Waku SDK"]},{"i":147,"t":"Node Configuration Options","u":"/guides/nwaku/config-options","b":["Guides","Run a Nwaku Node"]},{"i":177,"t":"Build React DApps Using @waku/react","u":"/guides/js-waku/use-waku-react","b":["Guides","JavaScript Waku SDK"]},{"i":191,"t":"Nwaku FAQ","u":"/guides/nwaku/faq","b":["Guides","Run a Nwaku Node"]},{"i":193,"t":"Run Nwaku in a Docker Container","u":"/guides/nwaku/run-docker","b":["Guides","Run a Nwaku Node"]},{"i":201,"t":"Configure Peer Discovery","u":"/guides/nwaku/configure-discovery","b":["Guides","Run a Nwaku Node"]},{"i":211,"t":"Run a Nwaku Node","u":"/guides/nwaku/run-node","b":["Guides","Run a Nwaku Node"]},{"i":227,"t":"Node Configuration Examples","u":"/guides/nwaku/configure-nwaku","b":["Guides","Run a Nwaku Node"]},{"i":247,"t":"Content Topics","u":"/learn/concepts/content-topics","b":["Learn","Concepts"]},{"i":259,"t":"Run Nwaku with Docker Compose","u":"/guides/nwaku/run-docker-compose","b":["Guides","Run a Nwaku Node"]},{"i":275,"t":"Discv5","u":"/learn/concepts/discv5","b":["Learn","Concepts","Peer Discovery"]},{"i":279,"t":"DNS Discovery","u":"/learn/concepts/dns-discovery","b":["Learn","Concepts","Peer Discovery"]},{"i":283,"t":"Peer Discovery","u":"/learn/concepts/peer-discovery","b":["Learn","Concepts","Peer Discovery"]},{"i":285,"t":"Network Domains","u":"/learn/concepts/network-domains","b":["Learn","Concepts"]},{"i":295,"t":"Static Peers","u":"/learn/concepts/static-peers","b":["Learn","Concepts","Peer Discovery"]},{"i":299,"t":"Peer Exchange","u":"/learn/concepts/peer-exchange","b":["Learn","Concepts","Peer Discovery"]},{"i":303,"t":"Protocols","u":"/learn/concepts/protocols","b":["Learn","Concepts"]},{"i":317,"t":"Waku FAQ","u":"/learn/faq","b":["Learn"]},{"i":319,"t":"Transports","u":"/learn/concepts/transports","b":["Learn","Concepts"]},{"i":321,"t":"Comparing Waku and libp2p","u":"/learn/waku-vs-libp2p","b":["Learn"]},{"i":329,"t":"Waku Docs Glossary","u":"/learn/glossary","b":["Learn"]},{"i":401,"t":"Research","u":"/learn/research","b":["Learn"]},{"i":407,"t":"Security Features","u":"/learn/security-features","b":["Learn"]},{"i":419,"t":"The Waku Network","u":"/learn/waku-network","b":["Learn"]},{"i":427,"t":"Privacy Policy","u":"/privacy-policy","b":[]},{"i":447,"t":"Incentivisation","u":"/research/research-and-studies/incentivisation","b":["Research","Research and Studies"]},{"i":489,"t":"Research","u":"/research/","b":["Research"]},{"i":491,"t":"Maximum Bandwidth for Global Adoption","u":"/research/research-and-studies/maximum-bandwidth","b":["Research","Research and Studies"]},{"i":499,"t":"Capped Bandwidth in Waku","u":"/research/research-and-studies/capped-bandwidth","b":["Research","Research and Studies"]},{"i":509,"t":"PostgreSQL","u":"/research/benchmarks/postgres-adoption","b":["Research","Benchmarks"]},{"i":526,"t":"RLN Key Benchmarks","u":"/research/research-and-studies/rln-key-benchmarks","b":["Research","Research and Studies"]},{"i":541,"t":"Rules of Engagement","u":"/rules-of-engagement","b":[]},{"i":553,"t":"Message Propagation Times With Waku-RLN","u":"/research/research-and-studies/message-propagation","b":["Research","Research and Studies"]},{"i":563,"t":"Terms of Use","u":"/terms","b":[]}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/1",[0,3.903,1,3.903]],["t/11",[2,2.852,3,1.663,4,2.852]],["t/21",[5,2.137,6,2.137,7,1.455,8,1.331,9,2.137,10,2.137,11,1.82]],["t/35",[11,2.852,12,3.349,13,3.349]],["t/41",[3,1.456,14,2.933,15,2.212,16,2.933]],["t/57",[17,2.933,18,1.827,19,2.933,20,1.827]],["t/69",[21,1.998,22,2.933,23,2.933,24,2.933]],["t/84",[7,1.998,25,2.933,26,2.933,27,2.933]],["t/96",[8,1.625,15,1.967,28,2.609,29,2.609,30,2.609]],["t/102",[31,2.852,32,2.086,33,3.349]],["t/114",[2,2.852,4,2.852,34,2.525]],["t/116",[18,2.086,35,2.281,36,3.349]],["t/126",[7,1.777,8,1.625,37,2.609,38,2.609,39,2.222]],["t/147",[18,2.086,35,2.281,40,3.349]],["t/177",[8,1.625,15,1.967,31,2.222,41,2.609,42,2.609]],["t/191",[32,2.431,34,2.943]],["t/193",[21,1.998,32,1.827,43,2.498,44,2.933]],["t/201",[20,2.086,35,2.281,45,2.525]],["t/211",[18,2.086,21,2.281,32,2.086]],["t/227",[18,2.086,35,2.281,46,3.349]],["t/247",[47,3.903,48,3.903]],["t/259",[21,1.998,32,1.827,43,2.498,49,2.933]],["t/275",[50,4.675]],["t/279",[45,2.943,51,3.903]],["t/283",[20,2.431,45,2.943]],["t/285",[52,3.324,53,3.903]],["t/295",[20,2.431,54,3.903]],["t/299",[20,2.431,55,3.903]],["t/303",[39,3.982]],["t/317",[3,1.937,34,2.943]],["t/319",[56,4.675]],["t/321",[3,1.663,57,3.349,58,3.349]],["t/329",[3,1.663,59,3.349,60,3.349]],["t/401",[61,3.982]],["t/407",[62,3.903,63,3.903]],["t/419",[3,1.937,52,3.324]],["t/427",[64,3.903,65,3.903]],["t/447",[66,4.675]],["t/489",[61,3.982]],["t/491",[67,2.933,68,2.498,69,2.933,70,2.933]],["t/499",[3,1.663,68,2.852,71,3.349]],["t/509",[72,4.675]],["t/526",[73,2.852,74,3.349,75,3.349]],["t/541",[76,3.903,77,3.903]],["t/553",[3,1.295,7,1.777,73,2.222,78,2.609,79,2.609]],["t/563",[8,2.431,80,3.903]]],"invertedIndex":[["adopt",{"_index":70,"t":{"491":{"position":[[29,8]]}}}],["app",{"_index":30,"t":{"96":{"position":[[34,3]]}}}],["applic",{"_index":24,"t":{"69":{"position":[[26,11]]}}}],["bandwidth",{"_index":68,"t":{"491":{"position":[[8,9]]},"499":{"position":[[7,9]]}}}],["benchmark",{"_index":75,"t":{"526":{"position":[[8,10]]}}}],["bootstrap",{"_index":17,"t":{"57":{"position":[[0,9]]}}}],["build",{"_index":31,"t":{"102":{"position":[[0,5]]},"177":{"position":[[0,5]]}}}],["cap",{"_index":71,"t":{"499":{"position":[[0,6]]}}}],["compar",{"_index":57,"t":{"321":{"position":[[0,9]]}}}],["compos",{"_index":49,"t":{"259":{"position":[[22,7]]}}}],["configur",{"_index":35,"t":{"116":{"position":[[5,13]]},"147":{"position":[[5,13]]},"201":{"position":[[0,9]]},"227":{"position":[[5,13]]}}}],["contain",{"_index":44,"t":{"193":{"position":[[22,9]]}}}],["content",{"_index":47,"t":{"247":{"position":[[0,7]]}}}],["dapp",{"_index":15,"t":{"41":{"position":[[16,4]]},"96":{"position":[[9,5]]},"177":{"position":[[12,5]]}}}],["debug",{"_index":14,"t":{"41":{"position":[[0,5]]}}}],["decrypt",{"_index":26,"t":{"84":{"position":[[9,8]]}}}],["discov",{"_index":19,"t":{"57":{"position":[[20,8]]}}}],["discoveri",{"_index":45,"t":{"201":{"position":[[15,9]]},"279":{"position":[[4,9]]},"283":{"position":[[5,9]]}}}],["discv5",{"_index":50,"t":{"275":{"position":[[0,6]]}}}],["dn",{"_index":51,"t":{"279":{"position":[[0,3]]}}}],["doc",{"_index":59,"t":{"329":{"position":[[5,4]]}}}],["docker",{"_index":43,"t":{"193":{"position":[[15,6]]},"259":{"position":[[15,6]]}}}],["domain",{"_index":53,"t":{"285":{"position":[[8,7]]}}}],["encrypt",{"_index":25,"t":{"84":{"position":[[0,8]]}}}],["engag",{"_index":77,"t":{"541":{"position":[[9,10]]}}}],["exampl",{"_index":46,"t":{"227":{"position":[[19,8]]}}}],["exchang",{"_index":55,"t":{"299":{"position":[[5,8]]}}}],["faq",{"_index":34,"t":{"114":{"position":[[15,3]]},"191":{"position":[[6,3]]},"317":{"position":[[5,3]]}}}],["featur",{"_index":63,"t":{"407":{"position":[[9,8]]}}}],["filter",{"_index":11,"t":{"21":{"position":[[47,6]]},"35":{"position":[[12,6]]}}}],["get",{"_index":0,"t":{"1":{"position":[[0,7]]}}}],["global",{"_index":69,"t":{"491":{"position":[[22,6]]}}}],["glossari",{"_index":60,"t":{"329":{"position":[[10,8]]}}}],["incentivis",{"_index":66,"t":{"447":{"position":[[0,15]]}}}],["javascript",{"_index":2,"t":{"11":{"position":[[0,10]]},"114":{"position":[[0,10]]}}}],["key",{"_index":74,"t":{"526":{"position":[[4,3]]}}}],["libp2p",{"_index":58,"t":{"321":{"position":[[19,6]]}}}],["light",{"_index":9,"t":{"21":{"position":[[32,5]]}}}],["manag",{"_index":12,"t":{"35":{"position":[[0,6]]}}}],["maximum",{"_index":67,"t":{"491":{"position":[[0,7]]}}}],["messag",{"_index":7,"t":{"21":{"position":[[17,8]]},"84":{"position":[[32,8]]},"126":{"position":[[9,8]]},"553":{"position":[[0,7]]}}}],["method",{"_index":36,"t":{"116":{"position":[[19,7]]}}}],["network",{"_index":52,"t":{"285":{"position":[[0,7]]},"419":{"position":[[9,7]]}}}],["node",{"_index":18,"t":{"57":{"position":[[10,5]]},"116":{"position":[[0,4]]},"147":{"position":[[0,4]]},"211":{"position":[[12,4]]},"227":{"position":[[0,4]]}}}],["nodej",{"_index":23,"t":{"69":{"position":[[19,6]]}}}],["nwaku",{"_index":32,"t":{"102":{"position":[[6,5]]},"191":{"position":[[0,5]]},"193":{"position":[[4,5]]},"211":{"position":[[6,5]]},"259":{"position":[[4,5]]}}}],["option",{"_index":40,"t":{"147":{"position":[[19,7]]}}}],["peer",{"_index":20,"t":{"57":{"position":[[29,5]]},"201":{"position":[[10,4]]},"283":{"position":[[0,4]]},"295":{"position":[[7,5]]},"299":{"position":[[0,4]]}}}],["polici",{"_index":65,"t":{"427":{"position":[[8,6]]}}}],["postgresql",{"_index":72,"t":{"509":{"position":[[0,10]]}}}],["privaci",{"_index":64,"t":{"427":{"position":[[0,7]]}}}],["propag",{"_index":78,"t":{"553":{"position":[[8,11]]}}}],["protocol",{"_index":39,"t":{"126":{"position":[[30,8]]},"303":{"position":[[0,9]]}}}],["push",{"_index":10,"t":{"21":{"position":[[38,4]]}}}],["react",{"_index":41,"t":{"177":{"position":[[6,5]]}}}],["receiv",{"_index":6,"t":{"21":{"position":[[9,7]]}}}],["research",{"_index":61,"t":{"401":{"position":[[0,8]]},"489":{"position":[[0,8]]}}}],["retriev",{"_index":37,"t":{"126":{"position":[[0,8]]}}}],["rln",{"_index":73,"t":{"526":{"position":[[0,3]]},"553":{"position":[[36,3]]}}}],["rule",{"_index":76,"t":{"541":{"position":[[0,5]]}}}],["run",{"_index":21,"t":{"69":{"position":[[0,3]]},"193":{"position":[[0,3]]},"211":{"position":[[0,3]]},"259":{"position":[[0,3]]}}}],["scaffold",{"_index":28,"t":{"96":{"position":[[0,8]]}}}],["sdk",{"_index":4,"t":{"11":{"position":[[16,3]]},"114":{"position":[[11,3]]}}}],["secur",{"_index":62,"t":{"407":{"position":[[0,8]]}}}],["send",{"_index":5,"t":{"21":{"position":[[0,4]]}}}],["sign",{"_index":27,"t":{"84":{"position":[[22,4]]}}}],["sourc",{"_index":33,"t":{"102":{"position":[[17,6]]}}}],["start",{"_index":1,"t":{"1":{"position":[[8,7]]}}}],["static",{"_index":54,"t":{"295":{"position":[[0,6]]}}}],["store",{"_index":38,"t":{"126":{"position":[[24,5]]}}}],["subscript",{"_index":13,"t":{"35":{"position":[[19,13]]}}}],["term",{"_index":80,"t":{"563":{"position":[[0,5]]}}}],["time",{"_index":79,"t":{"553":{"position":[[20,5]]}}}],["topic",{"_index":48,"t":{"247":{"position":[[8,6]]}}}],["transport",{"_index":56,"t":{"319":{"position":[[0,10]]}}}],["us",{"_index":8,"t":{"21":{"position":[[26,5]]},"96":{"position":[[15,5]]},"126":{"position":[[18,5]]},"177":{"position":[[18,5]]},"563":{"position":[[9,3]]}}}],["waku",{"_index":3,"t":{"11":{"position":[[11,4]]},"41":{"position":[[11,4]]},"317":{"position":[[0,4]]},"321":{"position":[[10,4]]},"329":{"position":[[0,4]]},"419":{"position":[[4,4]]},"499":{"position":[[20,4]]},"553":{"position":[[31,4]]}}}],["waku/cr",{"_index":29,"t":{"96":{"position":[[21,12]]}}}],["waku/react",{"_index":42,"t":{"177":{"position":[[24,11]]}}}],["waku/sdk",{"_index":22,"t":{"69":{"position":[[4,9]]}}}],["websocket",{"_index":16,"t":{"41":{"position":[[25,9]]}}}]],"pipeline":["stemmer"]}},{"documents":[{"i":3,"t":"Run a Waku node","u":"/","h":"#run-a-waku-node","p":1},{"i":5,"t":"Integrate using SDKs","u":"/","h":"#integrate-using-sdks","p":1},{"i":7,"t":"Run on mobile devices","u":"/","h":"#run-on-mobile-devices","p":1},{"i":9,"t":"More integrations","u":"/","h":"#more-integrations","p":1},{"i":13,"t":"Installation","u":"/guides/js-waku/","h":"#installation","p":11},{"i":15,"t":"Message structure","u":"/guides/js-waku/","h":"#message-structure","p":11},{"i":17,"t":"Getting started","u":"/guides/js-waku/","h":"#getting-started","p":11},{"i":19,"t":"Get help and report issues","u":"/guides/js-waku/","h":"#get-help-and-report-issues","p":11},{"i":23,"t":"Create a light node","u":"/guides/js-waku/light-send-receive","h":"#create-a-light-node","p":21},{"i":25,"t":"Connect to remote peers","u":"/guides/js-waku/light-send-receive","h":"#connect-to-remote-peers","p":21},{"i":27,"t":"Choose a content topic","u":"/guides/js-waku/light-send-receive","h":"#choose-a-content-topic","p":21},{"i":29,"t":"Create a message structure","u":"/guides/js-waku/light-send-receive","h":"#create-a-message-structure","p":21},{"i":31,"t":"Send messages using light push","u":"/guides/js-waku/light-send-receive","h":"#send-messages-using-light-push","p":21},{"i":33,"t":"Receive messages using filter","u":"/guides/js-waku/light-send-receive","h":"#receive-messages-using-filter","p":21},{"i":37,"t":"Overview","u":"/guides/js-waku/manage-filter","h":"#overview","p":35},{"i":39,"t":"Pinging filter subscriptions","u":"/guides/js-waku/manage-filter","h":"#pinging-filter-subscriptions","p":35},{"i":43,"t":"Enabling debug logs","u":"/guides/js-waku/debug-waku-dapp","h":"#enabling-debug-logs","p":41},{"i":45,"t":"NodeJS environments","u":"/guides/js-waku/debug-waku-dapp","h":"#nodejs-environments","p":41},{"i":47,"t":"Browser environments","u":"/guides/js-waku/debug-waku-dapp","h":"#browser-environments","p":41},{"i":49,"t":"Checking WebSocket setup","u":"/guides/js-waku/debug-waku-dapp","h":"#checking-websocket-setup","p":41},{"i":51,"t":"Try Websocat for connection","u":"/guides/js-waku/debug-waku-dapp","h":"#try-websocat-for-connection","p":41},{"i":53,"t":"Check certificate validity","u":"/guides/js-waku/debug-waku-dapp","h":"#check-certificate-validity","p":41},{"i":55,"t":"Check WebSocket port accessibility","u":"/guides/js-waku/debug-waku-dapp","h":"#check-websocket-port-accessibility","p":41},{"i":59,"t":"Default bootstrap method","u":"/guides/js-waku/configure-discovery","h":"#default-bootstrap-method","p":57},{"i":61,"t":"Configure static peers","u":"/guides/js-waku/configure-discovery","h":"#configure-static-peers","p":57},{"i":63,"t":"Configure DNS discovery","u":"/guides/js-waku/configure-discovery","h":"#configure-dns-discovery","p":57},{"i":65,"t":"Configure DNS discovery and static peers","u":"/guides/js-waku/configure-discovery","h":"#configure-dns-discovery-and-static-peers","p":57},{"i":67,"t":"Retrieving connected peers","u":"/guides/js-waku/configure-discovery","h":"#retrieving-connected-peers","p":57},{"i":71,"t":"Limitations","u":"/guides/js-waku/run-waku-nodejs","h":"#limitations","p":69},{"i":72,"t":"API compatibility","u":"/guides/js-waku/run-waku-nodejs","h":"#api-compatibility","p":69},{"i":74,"t":"Protocol implementation","u":"/guides/js-waku/run-waku-nodejs","h":"#protocol-implementation","p":69},{"i":76,"t":"Codebase complexity","u":"/guides/js-waku/run-waku-nodejs","h":"#codebase-complexity","p":69},{"i":78,"t":"Browser-specific protocols","u":"/guides/js-waku/run-waku-nodejs","h":"#browser-specific-protocols","p":69},{"i":80,"t":"Recommendations","u":"/guides/js-waku/run-waku-nodejs","h":"#recommendations","p":69},{"i":82,"t":"Future developments","u":"/guides/js-waku/run-waku-nodejs","h":"#future-developments","p":69},{"i":86,"t":"Installation","u":"/guides/js-waku/message-encryption","h":"#installation","p":84},{"i":88,"t":"Symmetric encryption","u":"/guides/js-waku/message-encryption","h":"#symmetric-encryption","p":84},{"i":90,"t":"ECIES encryption","u":"/guides/js-waku/message-encryption","h":"#ecies-encryption","p":84},{"i":92,"t":"Signing encrypted messages","u":"/guides/js-waku/message-encryption","h":"#signing-encrypted-messages","p":84},{"i":94,"t":"Storing encryption keys","u":"/guides/js-waku/message-encryption","h":"#storing-encryption-keys","p":84},{"i":98,"t":"Usage","u":"/guides/js-waku/use-waku-create-app","h":"#usage","p":96},{"i":100,"t":"Contributing new templates","u":"/guides/js-waku/use-waku-create-app","h":"#contributing-new-templates","p":96},{"i":104,"t":"Prerequisites","u":"/guides/nwaku/build-source","h":"#prerequisites","p":102},{"i":106,"t":"Clone the repository","u":"/guides/nwaku/build-source","h":"#clone-the-repository","p":102},{"i":108,"t":"Build the binary","u":"/guides/nwaku/build-source","h":"#build-the-binary","p":102},{"i":110,"t":"Run the binary","u":"/guides/nwaku/build-source","h":"#run-the-binary","p":102},{"i":112,"t":"Run test suite","u":"/guides/nwaku/build-source","h":"#run-test-suite","p":102},{"i":118,"t":"Command line options","u":"/guides/nwaku/config-methods","h":"#command-line-options","p":116},{"i":120,"t":"Environment variables","u":"/guides/nwaku/config-methods","h":"#environment-variables","p":116},{"i":122,"t":"Configuration files","u":"/guides/nwaku/config-methods","h":"#configuration-files","p":116},{"i":124,"t":"Default configuration values","u":"/guides/nwaku/config-methods","h":"#default-configuration-values","p":116},{"i":128,"t":"Create a light node","u":"/guides/js-waku/store-retrieve-messages","h":"#create-a-light-node","p":126},{"i":130,"t":"Connect to store peers","u":"/guides/js-waku/store-retrieve-messages","h":"#connect-to-store-peers","p":126},{"i":132,"t":"Choose a content topic","u":"/guides/js-waku/store-retrieve-messages","h":"#choose-a-content-topic","p":126},{"i":134,"t":"Retrieve messages","u":"/guides/js-waku/store-retrieve-messages","h":"#retrieve-messages","p":126},{"i":136,"t":"queryWithOrderedCallback","u":"/guides/js-waku/store-retrieve-messages","h":"#querywithorderedcallback","p":126},{"i":138,"t":"queryGenerator","u":"/guides/js-waku/store-retrieve-messages","h":"#querygenerator","p":126},{"i":140,"t":"Store query options","u":"/guides/js-waku/store-retrieve-messages","h":"#store-query-options","p":126},{"i":141,"t":"pageDirection","u":"/guides/js-waku/store-retrieve-messages","h":"#pagedirection","p":126},{"i":143,"t":"cursor","u":"/guides/js-waku/store-retrieve-messages","h":"#cursor","p":126},{"i":145,"t":"timeFilter","u":"/guides/js-waku/store-retrieve-messages","h":"#timefilter","p":126},{"i":149,"t":"Application-level config","u":"/guides/nwaku/config-options","h":"#application-level-config","p":147},{"i":151,"t":"Log config","u":"/guides/nwaku/config-options","h":"#log-config","p":147},{"i":153,"t":"General node config","u":"/guides/nwaku/config-options","h":"#general-node-config","p":147},{"i":155,"t":"DNS addrs config","u":"/guides/nwaku/config-options","h":"#dns-addrs-config","p":147},{"i":157,"t":"Relay config","u":"/guides/nwaku/config-options","h":"#relay-config","p":147},{"i":159,"t":"Store and message store config","u":"/guides/nwaku/config-options","h":"#store-and-message-store-config","p":147},{"i":161,"t":"Filter config","u":"/guides/nwaku/config-options","h":"#filter-config","p":147},{"i":163,"t":"Light push config","u":"/guides/nwaku/config-options","h":"#light-push-config","p":147},{"i":165,"t":"REST HTTP config","u":"/guides/nwaku/config-options","h":"#rest-http-config","p":147},{"i":167,"t":"Metrics config","u":"/guides/nwaku/config-options","h":"#metrics-config","p":147},{"i":169,"t":"DNS discovery config","u":"/guides/nwaku/config-options","h":"#dns-discovery-config","p":147},{"i":171,"t":"Discv5 config","u":"/guides/nwaku/config-options","h":"#discv5-config","p":147},{"i":173,"t":"Waku peer exchange config","u":"/guides/nwaku/config-options","h":"#waku-peer-exchange-config","p":147},{"i":175,"t":"WebSocket config","u":"/guides/nwaku/config-options","h":"#websocket-config","p":147},{"i":179,"t":"Install the dependencies","u":"/guides/js-waku/use-waku-react","h":"#install-the-dependencies","p":177},{"i":181,"t":"Initialise the Waku provider","u":"/guides/js-waku/use-waku-react","h":"#initialise-the-waku-provider","p":177},{"i":183,"t":"Build the application interface","u":"/guides/js-waku/use-waku-react","h":"#build-the-application-interface","p":177},{"i":185,"t":"Send messages using light push","u":"/guides/js-waku/use-waku-react","h":"#send-messages-using-light-push","p":177},{"i":187,"t":"Receive messages using filter","u":"/guides/js-waku/use-waku-react","h":"#receive-messages-using-filter","p":177},{"i":189,"t":"Retrieve messages using store","u":"/guides/js-waku/use-waku-react","h":"#retrieve-messages-using-store","p":177},{"i":195,"t":"Prerequisites","u":"/guides/nwaku/run-docker","h":"#prerequisites","p":193},{"i":197,"t":"Get Docker image","u":"/guides/nwaku/run-docker","h":"#get-docker-image","p":193},{"i":199,"t":"Run Docker container","u":"/guides/nwaku/run-docker","h":"#run-docker-container","p":193},{"i":203,"t":"Configure static peers","u":"/guides/nwaku/configure-discovery","h":"#configure-static-peers","p":201},{"i":205,"t":"Configure DNS discovery","u":"/guides/nwaku/configure-discovery","h":"#configure-dns-discovery","p":201},{"i":207,"t":"Configure Discv5","u":"/guides/nwaku/configure-discovery","h":"#configure-discv5","p":201},{"i":209,"t":"Configure peer exchange","u":"/guides/nwaku/configure-discovery","h":"#configure-peer-exchange","p":201},{"i":213,"t":"Get the node binary","u":"/guides/nwaku/run-node","h":"#get-the-node-binary","p":211},{"i":215,"t":"Run the node","u":"/guides/nwaku/run-node","h":"#run-the-node","p":211},{"i":217,"t":"Bootstrap the node","u":"/guides/nwaku/run-node","h":"#bootstrap-the-node","p":211},{"i":219,"t":"Interact with the node","u":"/guides/nwaku/run-node","h":"#interact-with-the-node","p":211},{"i":221,"t":"Find the node addresses","u":"/guides/nwaku/run-node","h":"#find-the-node-addresses","p":211},{"i":223,"t":"Listening addresses","u":"/guides/nwaku/run-node","h":"#listening-addresses","p":211},{"i":225,"t":"Discoverable ENR addresses","u":"/guides/nwaku/run-node","h":"#discoverable-enr-addresses","p":211},{"i":229,"t":"Connect to other peers","u":"/guides/nwaku/configure-nwaku","h":"#connect-to-other-peers","p":227},{"i":231,"t":"Configure a domain name","u":"/guides/nwaku/configure-nwaku","h":"#configure-a-domain-name","p":227},{"i":233,"t":"Configure store protocol and message store","u":"/guides/nwaku/configure-nwaku","h":"#configure-store-protocol-and-message-store","p":227},{"i":235,"t":"Generate and configure a node key","u":"/guides/nwaku/configure-nwaku","h":"#generate-and-configure-a-node-key","p":227},{"i":237,"t":"Configure WebSocket transport","u":"/guides/nwaku/configure-nwaku","h":"#configure-websocket-transport","p":227},{"i":239,"t":"Configure REST API server","u":"/guides/nwaku/configure-nwaku","h":"#configure-rest-api-server","p":227},{"i":241,"t":"Configure filter protocol","u":"/guides/nwaku/configure-nwaku","h":"#configure-filter-protocol","p":227},{"i":243,"t":"Configure light push protocol","u":"/guides/nwaku/configure-nwaku","h":"#configure-light-push-protocol","p":227},{"i":245,"t":"Run nwaku behind a reverse proxy","u":"/guides/nwaku/configure-nwaku","h":"#run-nwaku-behind-a-reverse-proxy","p":227},{"i":249,"t":"Naming format","u":"/learn/concepts/content-topics","h":"#naming-format","p":247},{"i":251,"t":"Naming considerations","u":"/learn/concepts/content-topics","h":"#naming-considerations","p":247},{"i":253,"t":"Protocols disclose content topics to peers","u":"/learn/concepts/content-topics","h":"#protocols-disclose-content-topics-to-peers","p":247},{"i":255,"t":"Increasing k-anonymity preserves user anonymity","u":"/learn/concepts/content-topics","h":"#increasing-k-anonymity-preserves-user-anonymity","p":247},{"i":257,"t":"Creating buckets help in distributing traffic","u":"/learn/concepts/content-topics","h":"#creating-buckets-help-in-distributing-traffic","p":247},{"i":261,"t":"Prerequisites","u":"/guides/nwaku/run-docker-compose","h":"#prerequisites","p":259},{"i":263,"t":"Clone the repository","u":"/guides/nwaku/run-docker-compose","h":"#clone-the-repository","p":259},{"i":265,"t":"Configure the setup","u":"/guides/nwaku/run-docker-compose","h":"#configure-the-setup","p":259},{"i":267,"t":"Register for RLN membership","u":"/guides/nwaku/run-docker-compose","h":"#register-for-rln-membership","p":259},{"i":269,"t":"Run the node","u":"/guides/nwaku/run-docker-compose","h":"#run-the-node","p":259},{"i":271,"t":"Interact with the node","u":"/guides/nwaku/run-docker-compose","h":"#interact-with-the-node","p":259},{"i":273,"t":"Use the REST API","u":"/guides/nwaku/run-docker-compose","h":"#use-the-rest-api","p":259},{"i":277,"t":"Overview","u":"/learn/concepts/discv5","h":"#overview","p":275},{"i":281,"t":"Overview","u":"/learn/concepts/dns-discovery","h":"#overview","p":279},{"i":287,"t":"Discovery domain","u":"/learn/concepts/network-domains","h":"#discovery-domain","p":285},{"i":289,"t":"Gossip domain","u":"/learn/concepts/network-domains","h":"#gossip-domain","p":285},{"i":291,"t":"Request/response domain","u":"/learn/concepts/network-domains","h":"#requestresponse-domain","p":285},{"i":293,"t":"Overview of protocol interaction","u":"/learn/concepts/network-domains","h":"#overview-of-protocol-interaction","p":285},{"i":297,"t":"Overview","u":"/learn/concepts/static-peers","h":"#overview","p":295},{"i":301,"t":"Overview","u":"/learn/concepts/peer-exchange","h":"#overview","p":299},{"i":305,"t":"Relay","u":"/learn/concepts/protocols","h":"#relay","p":303},{"i":307,"t":"RLN relay","u":"/learn/concepts/protocols","h":"#rln-relay","p":303},{"i":309,"t":"Filter","u":"/learn/concepts/protocols","h":"#filter","p":303},{"i":311,"t":"Store","u":"/learn/concepts/protocols","h":"#store","p":303},{"i":313,"t":"Light push","u":"/learn/concepts/protocols","h":"#light-push","p":303},{"i":315,"t":"Waku message","u":"/learn/concepts/protocols","h":"#waku-message","p":303},{"i":323,"t":"Waku as a service network","u":"/learn/waku-vs-libp2p","h":"#waku-as-a-service-network","p":321},{"i":325,"t":"Waku as a turnkey solution","u":"/learn/waku-vs-libp2p","h":"#waku-as-a-turnkey-solution","p":321},{"i":327,"t":"Economic spam protection","u":"/learn/waku-vs-libp2p","h":"#economic-spam-protection","p":321},{"i":331,"t":"Bootstrapping","u":"/learn/glossary","h":"#bootstrapping","p":329},{"i":333,"t":"Content topic","u":"/learn/glossary","h":"#content-topic","p":329},{"i":335,"t":"Dappnode","u":"/learn/glossary","h":"#dappnode","p":329},{"i":337,"t":"Discv5","u":"/learn/glossary","h":"#discv5","p":329},{"i":339,"t":"DNS discovery","u":"/learn/glossary","h":"#dns-discovery","p":329},{"i":341,"t":"ENR","u":"/learn/glossary","h":"#enr","p":329},{"i":343,"t":"Filter","u":"/learn/glossary","h":"#filter","p":329},{"i":345,"t":"GossipSub","u":"/learn/glossary","h":"#gossipsub","p":329},{"i":347,"t":"Libp2p","u":"/learn/glossary","h":"#libp2p","p":329},{"i":349,"t":"Light node","u":"/learn/glossary","h":"#light-node","p":329},{"i":351,"t":"Light push","u":"/learn/glossary","h":"#light-push","p":329},{"i":353,"t":"Mostly offline","u":"/learn/glossary","h":"#mostly-offline","p":329},{"i":355,"t":"Node","u":"/learn/glossary","h":"#node","p":329},{"i":357,"t":"Node key","u":"/learn/glossary","h":"#node-key","p":329},{"i":359,"t":"Out-of-band","u":"/learn/glossary","h":"#out-of-band","p":329},{"i":361,"t":"Payload","u":"/learn/glossary","h":"#payload","p":329},{"i":363,"t":"Peer","u":"/learn/glossary","h":"#peer","p":329},{"i":365,"t":"Peer discovery","u":"/learn/glossary","h":"#peer-discovery","p":329},{"i":367,"t":"Peer exchange","u":"/learn/glossary","h":"#peer-exchange","p":329},{"i":369,"t":"Peer ID","u":"/learn/glossary","h":"#peer-id","p":329},{"i":371,"t":"Protocol","u":"/learn/glossary","h":"#protocol","p":329},{"i":373,"t":"Pub/Sub","u":"/learn/glossary","h":"#pubsub","p":329},{"i":375,"t":"Pub/Sub topic","u":"/learn/glossary","h":"#pubsub-topic","p":329},{"i":377,"t":"Rate limit nullifiers","u":"/learn/glossary","h":"#rate-limit-nullifiers","p":329},{"i":379,"t":"Relay","u":"/learn/glossary","h":"#relay","p":329},{"i":381,"t":"Resource-limited","u":"/learn/glossary","h":"#resource-limited","p":329},{"i":383,"t":"RLN relay","u":"/learn/glossary","h":"#rln-relay","p":329},{"i":385,"t":"SDK","u":"/learn/glossary","h":"#sdk","p":329},{"i":387,"t":"Store","u":"/learn/glossary","h":"#store","p":329},{"i":389,"t":"Transport","u":"/learn/glossary","h":"#transport","p":329},{"i":391,"t":"Waku","u":"/learn/glossary","h":"#waku","p":329},{"i":393,"t":"Waku message","u":"/learn/glossary","h":"#waku-message","p":329},{"i":395,"t":"Waku message payload encryption","u":"/learn/glossary","h":"#waku-message-payload-encryption","p":329},{"i":397,"t":"Waku network","u":"/learn/glossary","h":"#waku-network","p":329},{"i":399,"t":"Waku noise","u":"/learn/glossary","h":"#waku-noise","p":329},{"i":403,"t":"Economic spam resistance","u":"/learn/research","h":"#economic-spam-resistance","p":401},{"i":405,"t":"Prevention of denial of service (DoS) and node incentivisation","u":"/learn/research","h":"#prevention-of-denial-of-service-dos-and-node-incentivisation","p":401},{"i":409,"t":"Pseudonymity","u":"/learn/security-features","h":"#pseudonymity","p":407},{"i":411,"t":"Anonymity/unlinkability","u":"/learn/security-features","h":"#anonymityunlinkability","p":407},{"i":413,"t":"Spam protection","u":"/learn/security-features","h":"#spam-protection","p":407},{"i":415,"t":"Data confidentiality, integrity, and authenticity","u":"/learn/security-features","h":"#data-confidentiality-integrity-and-authenticity","p":407},{"i":417,"t":"Security considerations","u":"/learn/security-features","h":"#security-considerations","p":407},{"i":421,"t":"Why join the Waku network?","u":"/learn/waku-network","h":"#why-join-the-waku-network","p":419},{"i":423,"t":"Prerequisites","u":"/learn/waku-network","h":"#prerequisites","p":419},{"i":425,"t":"Running a Waku network node","u":"/learn/waku-network","h":"#running-a-waku-network-node","p":419},{"i":429,"t":"1) Who we are","u":"/privacy-policy","h":"#1-who-we-are","p":427},{"i":431,"t":"2) We limit the collection and processing of personal data from your use of the Website","u":"/privacy-policy","h":"#2-we-limit-the-collection-and-processing-of-personal-data-from-your-use-of-the-website","p":427},{"i":433,"t":"3) Third party processing of personal data","u":"/privacy-policy","h":"#3-third-party-processing-of-personal-data","p":427},{"i":435,"t":"4) Security measures we take in respect of the Website","u":"/privacy-policy","h":"#4-security-measures-we-take-in-respect-of-the-website","p":427},{"i":437,"t":"5) Exporting data outside the European Union and Switzerland","u":"/privacy-policy","h":"#5-exporting-data-outside-the-european-union-and-switzerland","p":427},{"i":439,"t":"6) Your choices and rights","u":"/privacy-policy","h":"#6-your-choices-and-rights","p":427},{"i":441,"t":"7) Third party links","u":"/privacy-policy","h":"#7-third-party-links","p":427},{"i":443,"t":"8) This Privacy Policy might change","u":"/privacy-policy","h":"#8-this-privacy-policy-might-change","p":427},{"i":445,"t":"9) Contact information","u":"/privacy-policy","h":"#9-contact-information","p":427},{"i":449,"t":"Incentivisation in decentralised networks","u":"/research/research-and-studies/incentivisation","h":"","p":447},{"i":451,"t":"Incentivisation tools","u":"/research/research-and-studies/incentivisation","h":"#incentivisation-tools","p":447},{"i":453,"t":"Prior work","u":"/research/research-and-studies/incentivisation","h":"#prior-work","p":447},{"i":455,"t":"Early P2P file-sharing","u":"/research/research-and-studies/incentivisation","h":"#early-p2p-file-sharing","p":447},{"i":457,"t":"Blockchains","u":"/research/research-and-studies/incentivisation","h":"#blockchains","p":447},{"i":459,"t":"Decentralised storage","u":"/research/research-and-studies/incentivisation","h":"#decentralised-storage","p":447},{"i":461,"t":"Waku background","u":"/research/research-and-studies/incentivisation","h":"","p":447},{"i":463,"t":"Waku i13n challenges","u":"/research/research-and-studies/incentivisation","h":"#waku-i13n-challenges","p":447},{"i":465,"t":"Waku Store","u":"/research/research-and-studies/incentivisation","h":"#waku-store","p":447},{"i":467,"t":"Waku Store incentivisation","u":"/research/research-and-studies/incentivisation","h":"","p":447},{"i":469,"t":"Pricing","u":"/research/research-and-studies/incentivisation","h":"#pricing","p":447},{"i":471,"t":"Future work","u":"/research/research-and-studies/incentivisation","h":"#future-work","p":447},{"i":473,"t":"Payment","u":"/research/research-and-studies/incentivisation","h":"#payment","p":447},{"i":475,"t":"Future work","u":"/research/research-and-studies/incentivisation","h":"#future-work-1","p":447},{"i":477,"t":"Reputation","u":"/research/research-and-studies/incentivisation","h":"#reputation","p":447},{"i":479,"t":"Future work","u":"/research/research-and-studies/incentivisation","h":"#future-work-2","p":447},{"i":481,"t":"Results cross-checking","u":"/research/research-and-studies/incentivisation","h":"#results-cross-checking","p":447},{"i":483,"t":"Future work","u":"/research/research-and-studies/incentivisation","h":"#future-work-3","p":447},{"i":485,"t":"Evaluation","u":"/research/research-and-studies/incentivisation","h":"","p":447},{"i":487,"t":"Longer-term future work","u":"/research/research-and-studies/incentivisation","h":"","p":447},{"i":493,"t":"Introduction","u":"/research/research-and-studies/maximum-bandwidth","h":"#introduction","p":491},{"i":495,"t":"Bandwidth availability and usage","u":"/research/research-and-studies/maximum-bandwidth","h":"#bandwidth-availability-and-usage","p":491},{"i":497,"t":"Selecting a maximum bandwidth","u":"/research/research-and-studies/maximum-bandwidth","h":"#selecting-a-maximum-bandwidth","p":491},{"i":501,"t":"Problem","u":"/research/research-and-studies/capped-bandwidth","h":"#problem","p":499},{"i":503,"t":"Current approach","u":"/research/research-and-studies/capped-bandwidth","h":"#current-approach","p":499},{"i":505,"t":"Solution","u":"/research/research-and-studies/capped-bandwidth","h":"#solution","p":499},{"i":507,"t":"TLDR","u":"/research/research-and-studies/capped-bandwidth","h":"#tldr","p":499},{"i":510,"t":"Introduction","u":"/research/benchmarks/postgres-adoption","h":"#introduction","p":509},{"i":512,"t":"How to connect the nwaku to Postgres","u":"/research/benchmarks/postgres-adoption","h":"#how-to-connect-the-nwaku-to-postgres","p":509},{"i":514,"t":"Examples of nwaku using Postgres","u":"/research/benchmarks/postgres-adoption","h":"#examples-of-nwaku-using-postgres","p":509},{"i":516,"t":"Stress tests","u":"/research/benchmarks/postgres-adoption","h":"#stress-tests","p":509},{"i":518,"t":"Insert test results","u":"/research/benchmarks/postgres-adoption","h":"#insert-test-results","p":509},{"i":520,"t":"Query test results (jmeter)","u":"/research/benchmarks/postgres-adoption","h":"#query-test-results-jmeter","p":509},{"i":522,"t":"Query test results (only Store protocol)","u":"/research/benchmarks/postgres-adoption","h":"#query-test-results-only-store-protocol","p":509},{"i":524,"t":"Multiple nodes & one single database","u":"/research/benchmarks/postgres-adoption","h":"#multiple-nodes--one-single-database","p":509},{"i":527,"t":"Introduction","u":"/research/research-and-studies/rln-key-benchmarks","h":"#introduction","p":526},{"i":529,"t":"TLDR:","u":"/research/research-and-studies/rln-key-benchmarks","h":"#tldr","p":526},{"i":531,"t":"Proof generation times","u":"/research/research-and-studies/rln-key-benchmarks","h":"#proof-generation-times","p":526},{"i":533,"t":"Proof verification times","u":"/research/research-and-studies/rln-key-benchmarks","h":"#proof-verification-times","p":526},{"i":535,"t":"Spam protection","u":"/research/research-and-studies/rln-key-benchmarks","h":"#spam-protection","p":526},{"i":537,"t":"RLN tree sync","u":"/research/research-and-studies/rln-key-benchmarks","h":"#rln-tree-sync","p":526},{"i":539,"t":"Performance relay vs. rln-relay","u":"/research/research-and-studies/rln-key-benchmarks","h":"#performance-relay-vs-rln-relay","p":526},{"i":543,"t":"1. Initial discussion","u":"/rules-of-engagement","h":"#1-initial-discussion","p":541},{"i":545,"t":"2. Solution design","u":"/rules-of-engagement","h":"#2-solution-design","p":541},{"i":547,"t":"3. Commitment","u":"/rules-of-engagement","h":"#3-commitment","p":541},{"i":549,"t":"4. Building","u":"/rules-of-engagement","h":"#4-building","p":541},{"i":551,"t":"5. Ongoing relation","u":"/rules-of-engagement","h":"#5-ongoing-relation","p":541},{"i":555,"t":"Introduction","u":"/research/research-and-studies/message-propagation","h":"#introduction","p":553},{"i":557,"t":"Theory","u":"/research/research-and-studies/message-propagation","h":"#theory","p":553},{"i":559,"t":"Simulations","u":"/research/research-and-studies/message-propagation","h":"#simulations","p":553},{"i":561,"t":"Results","u":"/research/research-and-studies/message-propagation","h":"#results","p":553},{"i":565,"t":"1) Who we are","u":"/terms","h":"#1-who-we-are","p":563},{"i":567,"t":"2) Disclaimers","u":"/terms","h":"#2-disclaimers","p":563},{"i":569,"t":"3) Forward looking statements","u":"/terms","h":"#3-forward-looking-statements","p":563},{"i":571,"t":"4) Intellectual property rights","u":"/terms","h":"#4-intellectual-property-rights","p":563},{"i":573,"t":"5) Third-party website links","u":"/terms","h":"#5-third-party-website-links","p":563},{"i":575,"t":"6) Limitation of liability","u":"/terms","h":"#6-limitation-of-liability","p":563},{"i":577,"t":"7) Indemnity","u":"/terms","h":"#7-indemnity","p":563},{"i":579,"t":"8) Modifications","u":"/terms","h":"#8-modifications","p":563},{"i":581,"t":"9) Governing law","u":"/terms","h":"#9-governing-law","p":563},{"i":583,"t":"10) Disputes","u":"/terms","h":"#10-disputes","p":563},{"i":585,"t":"11) About these Website Terms of Use","u":"/terms","h":"#11-about-these-website-terms-of-use","p":563}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/3",[0,3.004,1,2.443,2,2.392]],["t/5",[3,3.921,4,2.912,5,4.23]],["t/7",[0,3.004,6,4.7,7,4.7]],["t/9",[3,4.626,8,5.545]],["t/13",[9,5.64]],["t/15",[10,3.086,11,4.991]],["t/17",[12,5.545,13,5.545]],["t/19",[14,4.23,15,4.7,16,4.7]],["t/23",[2,2.392,17,3.69,18,3.004]],["t/25",[19,3.353,20,4.7,21,2.616]],["t/27",[22,4.23,23,3.69,24,3.506]],["t/29",[10,2.616,11,4.23,17,3.69]],["t/31",[4,2.232,10,2.005,18,2.302,25,3.242,26,2.569]],["t/33",[4,2.527,10,2.27,27,3.671,28,2.795]],["t/37",[29,4.822]],["t/39",[28,3.221,30,4.7,31,4.7]],["t/43",[32,4.7,33,4.7,34,4.23]],["t/45",[35,5.545,36,4.626]],["t/47",[36,4.626,37,4.991]],["t/49",[38,3.69,39,3.69,40,4.23]],["t/51",[19,3.353,41,4.7,42,4.7]],["t/53",[38,3.69,43,4.7,44,4.7]],["t/55",[38,3.202,39,3.202,45,4.078,46,4.078]],["t/59",[47,4.23,48,3.921,49,4.7]],["t/61",[21,2.616,50,2.443,51,3.921]],["t/63",[50,2.443,52,3.353,53,3.221]],["t/65",[21,2.005,50,1.872,51,3.005,52,2.569,53,2.469]],["t/67",[19,3.353,21,2.616,54,3.921]],["t/71",[55,5.043]],["t/72",[56,4.626,57,5.545]],["t/74",[58,3.544,59,5.545]],["t/76",[60,5.545,61,5.545]],["t/78",[37,4.23,58,3.004,62,4.7]],["t/80",[63,6.76]],["t/82",[64,3.955,65,5.545]],["t/86",[9,5.64]],["t/88",[66,5.545,67,4.136]],["t/90",[67,4.136,68,5.545]],["t/92",[10,2.616,67,3.506,69,4.7]],["t/94",[67,3.506,70,2.828,71,3.921]],["t/98",[72,6.085]],["t/100",[73,4.7,74,4.7,75,4.7]],["t/104",[76,5.308]],["t/106",[77,4.991,78,4.991]],["t/108",[79,4.626,80,4.626]],["t/110",[0,3.544,80,4.626]],["t/112",[0,3.004,81,3.506,82,4.7]],["t/118",[83,4.7,84,4.7,85,4.23]],["t/120",[36,4.626,86,5.545]],["t/122",[50,2.882,87,4.991]],["t/124",[47,4.23,50,2.443,88,4.7]],["t/128",[2,2.392,17,3.69,18,3.004]],["t/130",[19,3.353,21,2.616,70,2.828]],["t/132",[22,4.23,23,3.69,24,3.506]],["t/134",[10,3.086,54,4.626]],["t/136",[89,6.76]],["t/138",[90,6.76]],["t/140",[70,2.828,85,4.23,91,3.921]],["t/141",[92,6.76]],["t/143",[93,6.76]],["t/145",[94,6.76]],["t/149",[95,4.23,96,4.7,97,2.616]],["t/151",[34,4.991,97,3.086]],["t/153",[2,2.392,97,2.616,98,3.921]],["t/155",[52,3.353,97,2.616,99,4.7]],["t/157",[97,3.086,100,3.955]],["t/159",[10,2.27,70,3.603,97,2.27]],["t/161",[28,3.8,97,3.086]],["t/163",[18,3.004,26,3.353,97,2.616]],["t/165",[97,2.616,101,3.921,102,4.7]],["t/167",[97,3.086,103,5.545]],["t/169",[52,3.353,53,3.221,97,2.616]],["t/171",[97,3.086,104,4.626]],["t/173",[1,2.12,21,2.27,97,2.27,105,3.403]],["t/175",[39,4.354,97,3.086]],["t/179",[9,4.626,106,5.545]],["t/181",[1,2.443,107,4.7,108,4.7]],["t/183",[79,3.921,95,4.23,109,4.7]],["t/185",[4,2.232,10,2.005,18,2.302,25,3.242,26,2.569]],["t/187",[4,2.527,10,2.27,27,3.671,28,2.795]],["t/189",[4,2.527,10,2.27,54,3.403,70,2.454]],["t/195",[76,5.308]],["t/197",[110,4.991,111,5.545]],["t/199",[0,3.004,110,4.23,112,4.7]],["t/203",[21,2.616,50,2.443,51,3.921]],["t/205",[50,2.443,52,3.353,53,3.221]],["t/207",[50,2.882,104,4.626]],["t/209",[21,2.616,50,2.443,105,3.921]],["t/213",[2,2.822,80,4.626]],["t/215",[0,3.544,2,2.822]],["t/217",[2,2.822,48,4.626]],["t/219",[2,2.822,113,4.626]],["t/221",[2,2.392,114,4.7,115,3.921]],["t/223",[115,4.626,116,5.545]],["t/225",[115,3.921,117,4.7,118,4.23]],["t/229",[19,3.955,21,3.086]],["t/231",[50,2.443,119,3.69,120,3.921]],["t/233",[10,2.005,50,1.872,58,2.302,70,3.284]],["t/235",[2,2.075,50,2.12,71,3.403,98,3.403]],["t/237",[39,3.69,50,2.443,121,4.23]],["t/239",[50,2.12,56,3.403,101,3.403,122,4.078]],["t/241",[28,3.221,50,2.443,58,3.004]],["t/243",[18,2.607,26,2.909,50,2.12,58,2.607]],["t/245",[0,2.302,123,3.005,124,3.602,125,3.602,126,3.602]],["t/249",[120,4.626,127,5.545]],["t/251",[120,4.626,128,4.991]],["t/253",[21,2.005,23,2.828,24,2.687,58,2.302,129,3.602]],["t/255",[130,3.225,131,3.225,132,5.014,133,3.225,134,3.225]],["t/257",[14,3.242,17,2.828,135,3.602,136,3.602,137,3.602]],["t/261",[76,5.308]],["t/263",[77,4.991,78,4.991]],["t/265",[40,4.991,50,2.882]],["t/267",[138,4.7,139,3.506,140,4.7]],["t/269",[0,3.544,2,2.822]],["t/271",[2,2.822,113,4.626]],["t/273",[4,2.912,56,3.921,101,3.921]],["t/277",[29,4.822]],["t/281",[29,4.822]],["t/287",[53,3.8,119,4.354]],["t/289",[119,4.354,141,5.545]],["t/291",[119,4.354,142,5.545]],["t/293",[29,3.353,58,3.004,113,3.921]],["t/297",[29,4.822]],["t/301",[29,4.822]],["t/305",[100,4.822]],["t/307",[100,3.955,139,4.136]],["t/309",[28,4.633]],["t/311",[70,4.069]],["t/313",[18,3.544,26,3.955]],["t/315",[1,2.882,10,3.086]],["t/323",[1,2.443,143,4.23,144,3.506]],["t/325",[1,2.443,145,4.7,146,3.921]],["t/327",[147,4.23,148,3.69,149,3.921]],["t/331",[48,5.64]],["t/333",[23,4.354,24,4.136]],["t/335",[150,6.76]],["t/337",[104,5.64]],["t/339",[52,3.955,53,3.8]],["t/341",[118,6.085]],["t/343",[28,4.633]],["t/345",[151,6.76]],["t/347",[152,6.76]],["t/349",[2,2.822,18,3.544]],["t/351",[18,3.544,26,3.955]],["t/353",[153,5.545,154,5.545]],["t/355",[2,3.44]],["t/357",[2,2.822,71,4.626]],["t/359",[155,5.545,156,5.545]],["t/361",[157,6.085]],["t/363",[21,3.762]],["t/365",[21,3.086,53,3.8]],["t/367",[21,3.086,105,4.626]],["t/369",[21,3.086,158,5.545]],["t/371",[58,4.321]],["t/373",[159,6.085]],["t/375",[24,4.136,159,4.991]],["t/377",[55,3.506,160,4.7,161,4.7]],["t/379",[100,4.822]],["t/381",[55,4.136,162,5.545]],["t/383",[100,3.955,139,4.136]],["t/385",[5,6.085]],["t/387",[70,4.069]],["t/389",[121,6.085]],["t/391",[1,3.514]],["t/393",[1,2.882,10,3.086]],["t/395",[1,2.12,10,2.27,67,3.042,157,3.671]],["t/397",[1,2.882,144,4.136]],["t/399",[1,2.882,163,5.545]],["t/403",[147,4.23,148,3.69,164,4.7]],["t/405",[2,1.641,143,2.903,165,3.225,166,3.225,167,3.225,168,2.533]],["t/409",[169,6.76]],["t/411",[170,6.76]],["t/413",[148,4.354,149,4.626]],["t/415",[3,3.403,171,3.202,172,4.078,173,4.078]],["t/417",[128,4.991,174,4.991]],["t/421",[1,2.443,144,3.506,175,4.7]],["t/423",[76,5.308]],["t/425",[0,2.607,1,2.12,2,2.075,144,3.042]],["t/429",[176,5.64]],["t/431",[4,1.653,55,1.99,171,2.094,177,2.225,178,2.667,179,2.401,180,2.401,181,2.094]],["t/433",[171,2.533,179,2.903,180,2.903,182,2.691,183,2.691,184,2.691]],["t/435",[174,2.903,181,2.533,185,2.691,186,3.225,187,3.225,188,3.225]],["t/437",[171,2.293,189,2.436,190,2.92,191,2.92,192,2.92,193,2.92,194,2.92]],["t/439",[195,4.23,196,4.7,197,4.23]],["t/441",[183,3.403,184,3.403,198,3.671,199,3.671]],["t/443",[200,3.671,201,4.078,202,4.078,203,4.078]],["t/445",[204,4.23,205,4.7,206,4.7]],["t/449",[144,3.506,168,3.69,207,4.23]],["t/451",[168,4.354,208,5.545]],["t/453",[209,5.545,210,3.955]],["t/455",[87,3.671,211,4.078,212,4.078,213,4.078]],["t/457",[214,6.76]],["t/459",[207,4.991,215,5.545]],["t/461",[1,2.882,216,5.545]],["t/463",[1,2.443,217,4.7,218,4.7]],["t/465",[1,2.882,70,3.337]],["t/467",[1,2.443,70,2.828,168,3.69]],["t/469",[219,6.76]],["t/471",[64,3.955,210,3.955]],["t/473",[220,6.76]],["t/475",[64,3.955,210,3.955]],["t/477",[221,6.76]],["t/479",[64,3.955,210,3.955]],["t/481",[38,3.69,222,3.506,223,4.7]],["t/483",[64,3.955,210,3.955]],["t/485",[224,6.76]],["t/487",[64,2.909,210,2.909,225,4.078,226,3.671]],["t/493",[227,5.308]],["t/495",[72,4.23,228,4.23,229,4.7]],["t/497",[228,4.23,230,4.7,231,4.7]],["t/501",[232,6.76]],["t/503",[233,5.545,234,5.545]],["t/505",[146,5.64]],["t/507",[235,6.085]],["t/510",[227,5.308]],["t/512",[19,3.353,123,3.921,236,4.23]],["t/514",[4,2.527,123,3.403,236,3.671,237,4.078]],["t/516",[81,4.136,238,5.545]],["t/518",[81,3.506,222,3.506,239,4.7]],["t/520",[81,3.042,91,3.403,222,3.042,240,4.078]],["t/522",[58,2.302,70,2.168,81,2.687,91,3.005,222,2.687]],["t/524",[2,1.641,241,3.225,242,3.225,243,3.225,244,3.225,245,3.225]],["t/527",[227,5.308]],["t/529",[235,6.085]],["t/531",[98,3.921,246,4.23,247,4.23]],["t/533",[246,4.23,247,4.23,248,4.7]],["t/535",[148,4.354,149,4.626]],["t/537",[139,3.506,249,4.7,250,4.7]],["t/539",[100,3.893,139,2.687,251,3.602,252,3.602]],["t/543",[176,3.921,253,4.7,254,4.7]],["t/545",[146,3.921,177,3.921,255,4.7]],["t/547",[182,4.626,256,5.545]],["t/549",[79,4.626,185,4.626]],["t/551",[189,3.921,257,4.7,258,4.7]],["t/555",[227,5.308]],["t/557",[259,6.76]],["t/559",[260,6.76]],["t/561",[222,5.043]],["t/565",[176,5.64]],["t/567",[177,4.626,261,5.545]],["t/569",[182,3.403,262,4.078,263,4.078,264,4.078]],["t/571",[185,3.403,197,3.671,265,4.078,266,4.078]],["t/573",[181,2.828,183,3.005,184,3.005,189,3.005,199,3.242]],["t/575",[55,3.506,195,4.23,267,4.7]],["t/577",[198,4.991,268,5.545]],["t/579",[200,4.991,269,5.545]],["t/581",[204,4.23,270,4.7,271,4.7]],["t/583",[272,5.545,273,5.545]],["t/585",[4,2.527,181,3.202,226,3.671,274,4.078]]],"invertedIndex":[["",{"_index":242,"t":{"524":{"position":[[15,1]]}}}],["1",{"_index":176,"t":{"429":{"position":[[0,2]]},"543":{"position":[[0,2]]},"565":{"position":[[0,2]]}}}],["10",{"_index":272,"t":{"583":{"position":[[0,3]]}}}],["11",{"_index":274,"t":{"585":{"position":[[0,3]]}}}],["2",{"_index":177,"t":{"431":{"position":[[0,2]]},"545":{"position":[[0,2]]},"567":{"position":[[0,2]]}}}],["3",{"_index":182,"t":{"433":{"position":[[0,2]]},"547":{"position":[[0,2]]},"569":{"position":[[0,2]]}}}],["4",{"_index":185,"t":{"435":{"position":[[0,2]]},"549":{"position":[[0,2]]},"571":{"position":[[0,2]]}}}],["5",{"_index":189,"t":{"437":{"position":[[0,2]]},"551":{"position":[[0,2]]},"573":{"position":[[0,2]]}}}],["6",{"_index":195,"t":{"439":{"position":[[0,2]]},"575":{"position":[[0,2]]}}}],["7",{"_index":198,"t":{"441":{"position":[[0,2]]},"577":{"position":[[0,2]]}}}],["8",{"_index":200,"t":{"443":{"position":[[0,2]]},"579":{"position":[[0,2]]}}}],["9",{"_index":204,"t":{"445":{"position":[[0,2]]},"581":{"position":[[0,2]]}}}],["access",{"_index":46,"t":{"55":{"position":[[21,13]]}}}],["addr",{"_index":99,"t":{"155":{"position":[[4,5]]}}}],["address",{"_index":115,"t":{"221":{"position":[[14,9]]},"223":{"position":[[10,9]]},"225":{"position":[[17,9]]}}}],["anonym",{"_index":132,"t":{"255":{"position":[[13,9],[38,9]]}}}],["anonymity/unlink",{"_index":170,"t":{"411":{"position":[[0,23]]}}}],["api",{"_index":56,"t":{"72":{"position":[[0,3]]},"239":{"position":[[15,3]]},"273":{"position":[[13,3]]}}}],["applic",{"_index":95,"t":{"149":{"position":[[0,11]]},"183":{"position":[[10,11]]}}}],["approach",{"_index":234,"t":{"503":{"position":[[8,8]]}}}],["authent",{"_index":173,"t":{"415":{"position":[[37,12]]}}}],["avail",{"_index":229,"t":{"495":{"position":[[10,12]]}}}],["background",{"_index":216,"t":{"461":{"position":[[5,10]]}}}],["band",{"_index":156,"t":{"359":{"position":[[7,4]]}}}],["bandwidth",{"_index":228,"t":{"495":{"position":[[0,9]]},"497":{"position":[[20,9]]}}}],["behind",{"_index":124,"t":{"245":{"position":[[10,6]]}}}],["binari",{"_index":80,"t":{"108":{"position":[[10,6]]},"110":{"position":[[8,6]]},"213":{"position":[[13,6]]}}}],["blockchain",{"_index":214,"t":{"457":{"position":[[0,11]]}}}],["bootstrap",{"_index":48,"t":{"59":{"position":[[8,9]]},"217":{"position":[[0,9]]},"331":{"position":[[0,13]]}}}],["browser",{"_index":37,"t":{"47":{"position":[[0,7]]},"78":{"position":[[0,7]]}}}],["bucket",{"_index":135,"t":{"257":{"position":[[9,7]]}}}],["build",{"_index":79,"t":{"108":{"position":[[0,5]]},"183":{"position":[[0,5]]},"549":{"position":[[3,8]]}}}],["certif",{"_index":43,"t":{"53":{"position":[[6,11]]}}}],["challeng",{"_index":218,"t":{"463":{"position":[[10,10]]}}}],["chang",{"_index":203,"t":{"443":{"position":[[29,6]]}}}],["check",{"_index":38,"t":{"49":{"position":[[0,8]]},"53":{"position":[[0,5]]},"55":{"position":[[0,5]]},"481":{"position":[[14,8]]}}}],["choic",{"_index":196,"t":{"439":{"position":[[8,7]]}}}],["choos",{"_index":22,"t":{"27":{"position":[[0,6]]},"132":{"position":[[0,6]]}}}],["clone",{"_index":77,"t":{"106":{"position":[[0,5]]},"263":{"position":[[0,5]]}}}],["codebas",{"_index":60,"t":{"76":{"position":[[0,8]]}}}],["collect",{"_index":178,"t":{"431":{"position":[[16,10]]}}}],["command",{"_index":83,"t":{"118":{"position":[[0,7]]}}}],["commit",{"_index":256,"t":{"547":{"position":[[3,10]]}}}],["compat",{"_index":57,"t":{"72":{"position":[[4,13]]}}}],["complex",{"_index":61,"t":{"76":{"position":[[9,10]]}}}],["confidenti",{"_index":172,"t":{"415":{"position":[[5,16]]}}}],["config",{"_index":97,"t":{"149":{"position":[[18,6]]},"151":{"position":[[4,6]]},"153":{"position":[[13,6]]},"155":{"position":[[10,6]]},"157":{"position":[[6,6]]},"159":{"position":[[24,6]]},"161":{"position":[[7,6]]},"163":{"position":[[11,6]]},"165":{"position":[[10,6]]},"167":{"position":[[8,6]]},"169":{"position":[[14,6]]},"171":{"position":[[7,6]]},"173":{"position":[[19,6]]},"175":{"position":[[10,6]]}}}],["configur",{"_index":50,"t":{"61":{"position":[[0,9]]},"63":{"position":[[0,9]]},"65":{"position":[[0,9]]},"122":{"position":[[0,13]]},"124":{"position":[[8,13]]},"203":{"position":[[0,9]]},"205":{"position":[[0,9]]},"207":{"position":[[0,9]]},"209":{"position":[[0,9]]},"231":{"position":[[0,9]]},"233":{"position":[[0,9]]},"235":{"position":[[13,9]]},"237":{"position":[[0,9]]},"239":{"position":[[0,9]]},"241":{"position":[[0,9]]},"243":{"position":[[0,9]]},"265":{"position":[[0,9]]}}}],["connect",{"_index":19,"t":{"25":{"position":[[0,7]]},"51":{"position":[[17,10]]},"67":{"position":[[11,9]]},"130":{"position":[[0,7]]},"229":{"position":[[0,7]]},"512":{"position":[[7,7]]}}}],["consider",{"_index":128,"t":{"251":{"position":[[7,14]]},"417":{"position":[[9,14]]}}}],["contact",{"_index":205,"t":{"445":{"position":[[3,7]]}}}],["contain",{"_index":112,"t":{"199":{"position":[[11,9]]}}}],["content",{"_index":23,"t":{"27":{"position":[[9,7]]},"132":{"position":[[9,7]]},"253":{"position":[[19,7]]},"333":{"position":[[0,7]]}}}],["contribut",{"_index":73,"t":{"100":{"position":[[0,12]]}}}],["creat",{"_index":17,"t":{"23":{"position":[[0,6]]},"29":{"position":[[0,6]]},"128":{"position":[[0,6]]},"257":{"position":[[0,8]]}}}],["cross",{"_index":223,"t":{"481":{"position":[[8,5]]}}}],["current",{"_index":233,"t":{"503":{"position":[[0,7]]}}}],["cursor",{"_index":93,"t":{"143":{"position":[[0,6]]}}}],["dappnod",{"_index":150,"t":{"335":{"position":[[0,8]]}}}],["data",{"_index":171,"t":{"415":{"position":[[0,4]]},"431":{"position":[[54,4]]},"433":{"position":[[38,4]]},"437":{"position":[[13,4]]}}}],["databas",{"_index":245,"t":{"524":{"position":[[28,8]]}}}],["debug",{"_index":33,"t":{"43":{"position":[[9,5]]}}}],["decentralis",{"_index":207,"t":{"449":{"position":[[19,13]]},"459":{"position":[[0,13]]}}}],["default",{"_index":47,"t":{"59":{"position":[[0,7]]},"124":{"position":[[0,7]]}}}],["denial",{"_index":166,"t":{"405":{"position":[[14,6]]}}}],["depend",{"_index":106,"t":{"179":{"position":[[12,12]]}}}],["design",{"_index":255,"t":{"545":{"position":[[12,6]]}}}],["develop",{"_index":65,"t":{"82":{"position":[[7,12]]}}}],["devic",{"_index":7,"t":{"7":{"position":[[14,7]]}}}],["disclaim",{"_index":261,"t":{"567":{"position":[[3,11]]}}}],["disclos",{"_index":129,"t":{"253":{"position":[[10,8]]}}}],["discover",{"_index":117,"t":{"225":{"position":[[0,12]]}}}],["discoveri",{"_index":53,"t":{"63":{"position":[[14,9]]},"65":{"position":[[14,9]]},"169":{"position":[[4,9]]},"205":{"position":[[14,9]]},"287":{"position":[[0,9]]},"339":{"position":[[4,9]]},"365":{"position":[[5,9]]}}}],["discuss",{"_index":254,"t":{"543":{"position":[[11,10]]}}}],["discv5",{"_index":104,"t":{"171":{"position":[[0,6]]},"207":{"position":[[10,6]]},"337":{"position":[[0,6]]}}}],["disput",{"_index":273,"t":{"583":{"position":[[4,8]]}}}],["distribut",{"_index":136,"t":{"257":{"position":[[25,12]]}}}],["dn",{"_index":52,"t":{"63":{"position":[[10,3]]},"65":{"position":[[10,3]]},"155":{"position":[[0,3]]},"169":{"position":[[0,3]]},"205":{"position":[[10,3]]},"339":{"position":[[0,3]]}}}],["do",{"_index":167,"t":{"405":{"position":[[32,5]]}}}],["docker",{"_index":110,"t":{"197":{"position":[[4,6]]},"199":{"position":[[4,6]]}}}],["domain",{"_index":119,"t":{"231":{"position":[[12,6]]},"287":{"position":[[10,6]]},"289":{"position":[[7,6]]},"291":{"position":[[17,6]]}}}],["earli",{"_index":211,"t":{"455":{"position":[[0,5]]}}}],["eci",{"_index":68,"t":{"90":{"position":[[0,5]]}}}],["econom",{"_index":147,"t":{"327":{"position":[[0,8]]},"403":{"position":[[0,8]]}}}],["enabl",{"_index":32,"t":{"43":{"position":[[0,8]]}}}],["encrypt",{"_index":67,"t":{"88":{"position":[[10,10]]},"90":{"position":[[6,10]]},"92":{"position":[[8,9]]},"94":{"position":[[8,10]]},"395":{"position":[[21,10]]}}}],["enr",{"_index":118,"t":{"225":{"position":[[13,3]]},"341":{"position":[[0,3]]}}}],["environ",{"_index":36,"t":{"45":{"position":[[7,12]]},"47":{"position":[[8,12]]},"120":{"position":[[0,11]]}}}],["european",{"_index":192,"t":{"437":{"position":[[30,8]]}}}],["evalu",{"_index":224,"t":{"485":{"position":[[0,10]]}}}],["exampl",{"_index":237,"t":{"514":{"position":[[0,8]]}}}],["exchang",{"_index":105,"t":{"173":{"position":[[10,8]]},"209":{"position":[[15,8]]},"367":{"position":[[5,8]]}}}],["export",{"_index":190,"t":{"437":{"position":[[3,9]]}}}],["file",{"_index":87,"t":{"122":{"position":[[14,5]]},"455":{"position":[[10,4]]}}}],["filter",{"_index":28,"t":{"33":{"position":[[23,6]]},"39":{"position":[[8,6]]},"161":{"position":[[0,6]]},"187":{"position":[[23,6]]},"241":{"position":[[10,6]]},"309":{"position":[[0,6]]},"343":{"position":[[0,6]]}}}],["find",{"_index":114,"t":{"221":{"position":[[0,4]]}}}],["format",{"_index":127,"t":{"249":{"position":[[7,6]]}}}],["forward",{"_index":262,"t":{"569":{"position":[[3,7]]}}}],["futur",{"_index":64,"t":{"82":{"position":[[0,6]]},"471":{"position":[[0,6]]},"475":{"position":[[0,6]]},"479":{"position":[[0,6]]},"483":{"position":[[0,6]]},"487":{"position":[[12,6]]}}}],["gener",{"_index":98,"t":{"153":{"position":[[0,7]]},"235":{"position":[[0,8]]},"531":{"position":[[6,10]]}}}],["get",{"_index":12,"t":{"17":{"position":[[0,7]]}}}],["gossip",{"_index":141,"t":{"289":{"position":[[0,6]]}}}],["gossipsub",{"_index":151,"t":{"345":{"position":[[0,9]]}}}],["govern",{"_index":270,"t":{"581":{"position":[[3,9]]}}}],["help",{"_index":14,"t":{"19":{"position":[[4,4]]},"257":{"position":[[17,4]]}}}],["http",{"_index":102,"t":{"165":{"position":[[5,4]]}}}],["i13n",{"_index":217,"t":{"463":{"position":[[5,4]]}}}],["id",{"_index":158,"t":{"369":{"position":[[5,2]]}}}],["imag",{"_index":111,"t":{"197":{"position":[[11,5]]}}}],["implement",{"_index":59,"t":{"74":{"position":[[9,14]]}}}],["incentivis",{"_index":168,"t":{"405":{"position":[[47,15]]},"449":{"position":[[0,15]]},"451":{"position":[[0,15]]},"467":{"position":[[11,15]]}}}],["increas",{"_index":130,"t":{"255":{"position":[[0,10]]}}}],["indemn",{"_index":268,"t":{"577":{"position":[[3,9]]}}}],["inform",{"_index":206,"t":{"445":{"position":[[11,11]]}}}],["initi",{"_index":253,"t":{"543":{"position":[[3,7]]}}}],["initialis",{"_index":107,"t":{"181":{"position":[[0,10]]}}}],["insert",{"_index":239,"t":{"518":{"position":[[0,6]]}}}],["instal",{"_index":9,"t":{"13":{"position":[[0,12]]},"86":{"position":[[0,12]]},"179":{"position":[[0,7]]}}}],["integr",{"_index":3,"t":{"5":{"position":[[0,9]]},"9":{"position":[[5,12]]},"415":{"position":[[22,10]]}}}],["intellectu",{"_index":265,"t":{"571":{"position":[[3,12]]}}}],["interact",{"_index":113,"t":{"219":{"position":[[0,8]]},"271":{"position":[[0,8]]},"293":{"position":[[21,11]]}}}],["interfac",{"_index":109,"t":{"183":{"position":[[22,9]]}}}],["introduct",{"_index":227,"t":{"493":{"position":[[0,12]]},"510":{"position":[[0,12]]},"527":{"position":[[0,12]]},"555":{"position":[[0,12]]}}}],["issu",{"_index":16,"t":{"19":{"position":[[20,6]]}}}],["jmeter",{"_index":240,"t":{"520":{"position":[[19,8]]}}}],["join",{"_index":175,"t":{"421":{"position":[[4,4]]}}}],["k",{"_index":131,"t":{"255":{"position":[[11,1]]}}}],["key",{"_index":71,"t":{"94":{"position":[[19,4]]},"235":{"position":[[30,3]]},"357":{"position":[[5,3]]}}}],["law",{"_index":271,"t":{"581":{"position":[[13,3]]}}}],["level",{"_index":96,"t":{"149":{"position":[[12,5]]}}}],["liabil",{"_index":267,"t":{"575":{"position":[[17,9]]}}}],["libp2p",{"_index":152,"t":{"347":{"position":[[0,6]]}}}],["light",{"_index":18,"t":{"23":{"position":[[9,5]]},"31":{"position":[[20,5]]},"128":{"position":[[9,5]]},"163":{"position":[[0,5]]},"185":{"position":[[20,5]]},"243":{"position":[[10,5]]},"313":{"position":[[0,5]]},"349":{"position":[[0,5]]},"351":{"position":[[0,5]]}}}],["limit",{"_index":55,"t":{"71":{"position":[[0,11]]},"377":{"position":[[5,5]]},"381":{"position":[[9,7]]},"431":{"position":[[6,5]]},"575":{"position":[[3,10]]}}}],["line",{"_index":84,"t":{"118":{"position":[[8,4]]}}}],["link",{"_index":199,"t":{"441":{"position":[[15,5]]},"573":{"position":[[23,5]]}}}],["listen",{"_index":116,"t":{"223":{"position":[[0,9]]}}}],["log",{"_index":34,"t":{"43":{"position":[[15,4]]},"151":{"position":[[0,3]]}}}],["longer",{"_index":225,"t":{"487":{"position":[[0,6]]}}}],["look",{"_index":263,"t":{"569":{"position":[[11,7]]}}}],["maximum",{"_index":231,"t":{"497":{"position":[[12,7]]}}}],["measur",{"_index":186,"t":{"435":{"position":[[12,8]]}}}],["membership",{"_index":140,"t":{"267":{"position":[[17,10]]}}}],["messag",{"_index":10,"t":{"15":{"position":[[0,7]]},"29":{"position":[[9,7]]},"31":{"position":[[5,8]]},"33":{"position":[[8,8]]},"92":{"position":[[18,8]]},"134":{"position":[[9,8]]},"159":{"position":[[10,7]]},"185":{"position":[[5,8]]},"187":{"position":[[8,8]]},"189":{"position":[[9,8]]},"233":{"position":[[29,7]]},"315":{"position":[[5,7]]},"393":{"position":[[5,7]]},"395":{"position":[[5,7]]}}}],["method",{"_index":49,"t":{"59":{"position":[[18,6]]}}}],["metric",{"_index":103,"t":{"167":{"position":[[0,7]]}}}],["mobil",{"_index":6,"t":{"7":{"position":[[7,6]]}}}],["modif",{"_index":269,"t":{"579":{"position":[[3,13]]}}}],["more",{"_index":8,"t":{"9":{"position":[[0,4]]}}}],["mostli",{"_index":153,"t":{"353":{"position":[[0,6]]}}}],["multipl",{"_index":241,"t":{"524":{"position":[[0,8]]}}}],["name",{"_index":120,"t":{"231":{"position":[[19,4]]},"249":{"position":[[0,6]]},"251":{"position":[[0,6]]}}}],["network",{"_index":144,"t":{"323":{"position":[[18,7]]},"397":{"position":[[5,7]]},"421":{"position":[[18,8]]},"425":{"position":[[15,7]]},"449":{"position":[[33,8]]}}}],["new",{"_index":74,"t":{"100":{"position":[[13,3]]}}}],["node",{"_index":2,"t":{"3":{"position":[[11,4]]},"23":{"position":[[15,4]]},"128":{"position":[[15,4]]},"153":{"position":[[8,4]]},"213":{"position":[[8,4]]},"215":{"position":[[8,4]]},"217":{"position":[[14,4]]},"219":{"position":[[18,4]]},"221":{"position":[[9,4]]},"235":{"position":[[25,4]]},"269":{"position":[[8,4]]},"271":{"position":[[18,4]]},"349":{"position":[[6,4]]},"355":{"position":[[0,4]]},"357":{"position":[[0,4]]},"405":{"position":[[42,4]]},"425":{"position":[[23,4]]},"524":{"position":[[9,5]]}}}],["nodej",{"_index":35,"t":{"45":{"position":[[0,6]]}}}],["nois",{"_index":163,"t":{"399":{"position":[[5,5]]}}}],["nullifi",{"_index":161,"t":{"377":{"position":[[11,10]]}}}],["nwaku",{"_index":123,"t":{"245":{"position":[[4,5]]},"512":{"position":[[19,5]]},"514":{"position":[[12,5]]}}}],["offlin",{"_index":154,"t":{"353":{"position":[[7,7]]}}}],["on",{"_index":243,"t":{"524":{"position":[[17,3]]}}}],["ongo",{"_index":257,"t":{"551":{"position":[[3,7]]}}}],["option",{"_index":85,"t":{"118":{"position":[[13,7]]},"140":{"position":[[12,7]]}}}],["out",{"_index":155,"t":{"359":{"position":[[0,3]]}}}],["outsid",{"_index":191,"t":{"437":{"position":[[18,7]]}}}],["overview",{"_index":29,"t":{"37":{"position":[[0,8]]},"277":{"position":[[0,8]]},"281":{"position":[[0,8]]},"293":{"position":[[0,8]]},"297":{"position":[[0,8]]},"301":{"position":[[0,8]]}}}],["p2p",{"_index":212,"t":{"455":{"position":[[6,3]]}}}],["pagedirect",{"_index":92,"t":{"141":{"position":[[0,13]]}}}],["parti",{"_index":184,"t":{"433":{"position":[[9,5]]},"441":{"position":[[9,5]]},"573":{"position":[[9,5]]}}}],["payload",{"_index":157,"t":{"361":{"position":[[0,7]]},"395":{"position":[[13,7]]}}}],["payment",{"_index":220,"t":{"473":{"position":[[0,7]]}}}],["peer",{"_index":21,"t":{"25":{"position":[[18,5]]},"61":{"position":[[17,5]]},"65":{"position":[[35,5]]},"67":{"position":[[21,5]]},"130":{"position":[[17,5]]},"173":{"position":[[5,4]]},"203":{"position":[[17,5]]},"209":{"position":[[10,4]]},"229":{"position":[[17,5]]},"253":{"position":[[37,5]]},"363":{"position":[[0,4]]},"365":{"position":[[0,4]]},"367":{"position":[[0,4]]},"369":{"position":[[0,4]]}}}],["perform",{"_index":251,"t":{"539":{"position":[[0,11]]}}}],["person",{"_index":180,"t":{"431":{"position":[[45,8]]},"433":{"position":[[29,8]]}}}],["ping",{"_index":30,"t":{"39":{"position":[[0,7]]}}}],["polici",{"_index":202,"t":{"443":{"position":[[16,6]]}}}],["port",{"_index":45,"t":{"55":{"position":[[16,4]]}}}],["postgr",{"_index":236,"t":{"512":{"position":[[28,8]]},"514":{"position":[[24,8]]}}}],["prerequisit",{"_index":76,"t":{"104":{"position":[[0,13]]},"195":{"position":[[0,13]]},"261":{"position":[[0,13]]},"423":{"position":[[0,13]]}}}],["preserv",{"_index":133,"t":{"255":{"position":[[23,9]]}}}],["prevent",{"_index":165,"t":{"405":{"position":[[0,10]]}}}],["price",{"_index":219,"t":{"469":{"position":[[0,7]]}}}],["prior",{"_index":209,"t":{"453":{"position":[[0,5]]}}}],["privaci",{"_index":201,"t":{"443":{"position":[[8,7]]}}}],["problem",{"_index":232,"t":{"501":{"position":[[0,7]]}}}],["process",{"_index":179,"t":{"431":{"position":[[31,10]]},"433":{"position":[[15,10]]}}}],["proof",{"_index":246,"t":{"531":{"position":[[0,5]]},"533":{"position":[[0,5]]}}}],["properti",{"_index":266,"t":{"571":{"position":[[16,8]]}}}],["protect",{"_index":149,"t":{"327":{"position":[[14,10]]},"413":{"position":[[5,10]]},"535":{"position":[[5,10]]}}}],["protocol",{"_index":58,"t":{"74":{"position":[[0,8]]},"78":{"position":[[17,9]]},"233":{"position":[[16,8]]},"241":{"position":[[17,8]]},"243":{"position":[[21,8]]},"253":{"position":[[0,9]]},"293":{"position":[[12,8]]},"371":{"position":[[0,8]]},"522":{"position":[[31,9]]}}}],["provid",{"_index":108,"t":{"181":{"position":[[20,8]]}}}],["proxi",{"_index":126,"t":{"245":{"position":[[27,5]]}}}],["pseudonym",{"_index":169,"t":{"409":{"position":[[0,12]]}}}],["pub/sub",{"_index":159,"t":{"373":{"position":[[0,7]]},"375":{"position":[[0,7]]}}}],["push",{"_index":26,"t":{"31":{"position":[[26,4]]},"163":{"position":[[6,4]]},"185":{"position":[[26,4]]},"243":{"position":[[16,4]]},"313":{"position":[[6,4]]},"351":{"position":[[6,4]]}}}],["queri",{"_index":91,"t":{"140":{"position":[[6,5]]},"520":{"position":[[0,5]]},"522":{"position":[[0,5]]}}}],["querygener",{"_index":90,"t":{"138":{"position":[[0,14]]}}}],["querywithorderedcallback",{"_index":89,"t":{"136":{"position":[[0,24]]}}}],["rate",{"_index":160,"t":{"377":{"position":[[0,4]]}}}],["receiv",{"_index":27,"t":{"33":{"position":[[0,7]]},"187":{"position":[[0,7]]}}}],["recommend",{"_index":63,"t":{"80":{"position":[[0,15]]}}}],["regist",{"_index":138,"t":{"267":{"position":[[0,8]]}}}],["relat",{"_index":258,"t":{"551":{"position":[[11,8]]}}}],["relay",{"_index":100,"t":{"157":{"position":[[0,5]]},"305":{"position":[[0,5]]},"307":{"position":[[4,5]]},"379":{"position":[[0,5]]},"383":{"position":[[4,5]]},"539":{"position":[[12,5],[26,5]]}}}],["remot",{"_index":20,"t":{"25":{"position":[[11,6]]}}}],["report",{"_index":15,"t":{"19":{"position":[[13,6]]}}}],["repositori",{"_index":78,"t":{"106":{"position":[[10,10]]},"263":{"position":[[10,10]]}}}],["reput",{"_index":221,"t":{"477":{"position":[[0,10]]}}}],["request/respons",{"_index":142,"t":{"291":{"position":[[0,16]]}}}],["resist",{"_index":164,"t":{"403":{"position":[[14,10]]}}}],["resourc",{"_index":162,"t":{"381":{"position":[[0,8]]}}}],["respect",{"_index":188,"t":{"435":{"position":[[32,7]]}}}],["rest",{"_index":101,"t":{"165":{"position":[[0,4]]},"239":{"position":[[10,4]]},"273":{"position":[[8,4]]}}}],["result",{"_index":222,"t":{"481":{"position":[[0,7]]},"518":{"position":[[12,7]]},"520":{"position":[[11,7]]},"522":{"position":[[11,7]]},"561":{"position":[[0,7]]}}}],["retriev",{"_index":54,"t":{"67":{"position":[[0,10]]},"134":{"position":[[0,8]]},"189":{"position":[[0,8]]}}}],["revers",{"_index":125,"t":{"245":{"position":[[19,7]]}}}],["right",{"_index":197,"t":{"439":{"position":[[20,6]]},"571":{"position":[[25,6]]}}}],["rln",{"_index":139,"t":{"267":{"position":[[13,3]]},"307":{"position":[[0,3]]},"383":{"position":[[0,3]]},"537":{"position":[[0,3]]},"539":{"position":[[22,3]]}}}],["run",{"_index":0,"t":{"3":{"position":[[0,3]]},"7":{"position":[[0,3]]},"110":{"position":[[0,3]]},"112":{"position":[[0,3]]},"199":{"position":[[0,3]]},"215":{"position":[[0,3]]},"245":{"position":[[0,3]]},"269":{"position":[[0,3]]},"425":{"position":[[0,7]]}}}],["sdk",{"_index":5,"t":{"5":{"position":[[16,4]]},"385":{"position":[[0,3]]}}}],["secur",{"_index":174,"t":{"417":{"position":[[0,8]]},"435":{"position":[[3,8]]}}}],["select",{"_index":230,"t":{"497":{"position":[[0,9]]}}}],["send",{"_index":25,"t":{"31":{"position":[[0,4]]},"185":{"position":[[0,4]]}}}],["server",{"_index":122,"t":{"239":{"position":[[19,6]]}}}],["servic",{"_index":143,"t":{"323":{"position":[[10,7]]},"405":{"position":[[24,7]]}}}],["setup",{"_index":40,"t":{"49":{"position":[[19,5]]},"265":{"position":[[14,5]]}}}],["share",{"_index":213,"t":{"455":{"position":[[15,7]]}}}],["sign",{"_index":69,"t":{"92":{"position":[[0,7]]}}}],["simul",{"_index":260,"t":{"559":{"position":[[0,11]]}}}],["singl",{"_index":244,"t":{"524":{"position":[[21,6]]}}}],["solut",{"_index":146,"t":{"325":{"position":[[18,8]]},"505":{"position":[[0,8]]},"545":{"position":[[3,8]]}}}],["spam",{"_index":148,"t":{"327":{"position":[[9,4]]},"403":{"position":[[9,4]]},"413":{"position":[[0,4]]},"535":{"position":[[0,4]]}}}],["specif",{"_index":62,"t":{"78":{"position":[[8,8]]}}}],["start",{"_index":13,"t":{"17":{"position":[[8,7]]}}}],["statement",{"_index":264,"t":{"569":{"position":[[19,10]]}}}],["static",{"_index":51,"t":{"61":{"position":[[10,6]]},"65":{"position":[[28,6]]},"203":{"position":[[10,6]]}}}],["storag",{"_index":215,"t":{"459":{"position":[[14,7]]}}}],["store",{"_index":70,"t":{"94":{"position":[[0,7]]},"130":{"position":[[11,5]]},"140":{"position":[[0,5]]},"159":{"position":[[0,5],[18,5]]},"189":{"position":[[24,5]]},"233":{"position":[[10,5],[37,5]]},"311":{"position":[[0,5]]},"387":{"position":[[0,5]]},"465":{"position":[[5,5]]},"467":{"position":[[5,5]]},"522":{"position":[[25,5]]}}}],["stress",{"_index":238,"t":{"516":{"position":[[0,6]]}}}],["structur",{"_index":11,"t":{"15":{"position":[[8,9]]},"29":{"position":[[17,9]]}}}],["subscript",{"_index":31,"t":{"39":{"position":[[15,13]]}}}],["suit",{"_index":82,"t":{"112":{"position":[[9,5]]}}}],["switzerland",{"_index":194,"t":{"437":{"position":[[49,11]]}}}],["symmetr",{"_index":66,"t":{"88":{"position":[[0,9]]}}}],["sync",{"_index":250,"t":{"537":{"position":[[9,4]]}}}],["take",{"_index":187,"t":{"435":{"position":[[24,4]]}}}],["templat",{"_index":75,"t":{"100":{"position":[[17,9]]}}}],["term",{"_index":226,"t":{"487":{"position":[[7,4]]},"585":{"position":[[24,5]]}}}],["test",{"_index":81,"t":{"112":{"position":[[4,4]]},"516":{"position":[[7,5]]},"518":{"position":[[7,4]]},"520":{"position":[[6,4]]},"522":{"position":[[6,4]]}}}],["theori",{"_index":259,"t":{"557":{"position":[[0,6]]}}}],["third",{"_index":183,"t":{"433":{"position":[[3,5]]},"441":{"position":[[3,5]]},"573":{"position":[[3,5]]}}}],["time",{"_index":247,"t":{"531":{"position":[[17,5]]},"533":{"position":[[19,5]]}}}],["timefilt",{"_index":94,"t":{"145":{"position":[[0,10]]}}}],["tldr",{"_index":235,"t":{"507":{"position":[[0,4]]},"529":{"position":[[0,5]]}}}],["tool",{"_index":208,"t":{"451":{"position":[[16,5]]}}}],["topic",{"_index":24,"t":{"27":{"position":[[17,5]]},"132":{"position":[[17,5]]},"253":{"position":[[27,6]]},"333":{"position":[[8,5]]},"375":{"position":[[8,5]]}}}],["traffic",{"_index":137,"t":{"257":{"position":[[38,7]]}}}],["transport",{"_index":121,"t":{"237":{"position":[[20,9]]},"389":{"position":[[0,9]]}}}],["tree",{"_index":249,"t":{"537":{"position":[[4,4]]}}}],["tri",{"_index":41,"t":{"51":{"position":[[0,3]]}}}],["turnkey",{"_index":145,"t":{"325":{"position":[[10,7]]}}}],["union",{"_index":193,"t":{"437":{"position":[[39,5]]}}}],["us",{"_index":4,"t":{"5":{"position":[[10,5]]},"31":{"position":[[14,5]]},"33":{"position":[[17,5]]},"185":{"position":[[14,5]]},"187":{"position":[[17,5]]},"189":{"position":[[18,5]]},"273":{"position":[[0,3]]},"431":{"position":[[69,3]]},"514":{"position":[[18,5]]},"585":{"position":[[33,3]]}}}],["usag",{"_index":72,"t":{"98":{"position":[[0,5]]},"495":{"position":[[27,5]]}}}],["user",{"_index":134,"t":{"255":{"position":[[33,4]]}}}],["valid",{"_index":44,"t":{"53":{"position":[[18,8]]}}}],["valu",{"_index":88,"t":{"124":{"position":[[22,6]]}}}],["variabl",{"_index":86,"t":{"120":{"position":[[12,9]]}}}],["verif",{"_index":248,"t":{"533":{"position":[[6,12]]}}}],["vs",{"_index":252,"t":{"539":{"position":[[18,3]]}}}],["waku",{"_index":1,"t":{"3":{"position":[[6,4]]},"173":{"position":[[0,4]]},"181":{"position":[[15,4]]},"315":{"position":[[0,4]]},"323":{"position":[[0,4]]},"325":{"position":[[0,4]]},"391":{"position":[[0,4]]},"393":{"position":[[0,4]]},"395":{"position":[[0,4]]},"397":{"position":[[0,4]]},"399":{"position":[[0,4]]},"421":{"position":[[13,4]]},"425":{"position":[[10,4]]},"461":{"position":[[0,4]]},"463":{"position":[[0,4]]},"465":{"position":[[0,4]]},"467":{"position":[[0,4]]}}}],["websit",{"_index":181,"t":{"431":{"position":[[80,7]]},"435":{"position":[[47,7]]},"573":{"position":[[15,7]]},"585":{"position":[[16,7]]}}}],["websocat",{"_index":42,"t":{"51":{"position":[[4,8]]}}}],["websocket",{"_index":39,"t":{"49":{"position":[[9,9]]},"55":{"position":[[6,9]]},"175":{"position":[[0,9]]},"237":{"position":[[10,9]]}}}],["work",{"_index":210,"t":{"453":{"position":[[6,4]]},"471":{"position":[[7,4]]},"475":{"position":[[7,4]]},"479":{"position":[[7,4]]},"483":{"position":[[7,4]]},"487":{"position":[[19,4]]}}}]],"pipeline":["stemmer"]}},{"documents":[{"i":2,"t":"caution Waku has risks and limitations as it is still developing and preparing for extensive adoption. However, it is already demonstrating its capabilities by powering various applications. Join our community to stay updated on our progress. Ready to integrate Waku into your application for private, secure, censorship-free communication? Explore the available SDKs and contribute by running a node.","s":"Getting Started","u":"/","h":"","p":1},{"i":4,"t":"The Waku Network is a decentralised, permissionless system where anyone can run nodes, use the network, and contribute to its support. Description Documentation nwaku Nim-based Waku implementation to run a standalone node and access the network Run a Nwaku Node nwaku-compose Pre-configured Docker Compose setup for running a RLN-enabled nwaku node with Grafana metrics dashboard (recommended) Run Nwaku with Docker Compose go-waku Golang-based Waku implementation to run a standalone node and access the network COMING SOON","s":"Run a Waku node","u":"/","h":"#run-a-waku-node","p":1},{"i":6,"t":"Waku is implemented in multiple SDKs, allowing it to integrate with different languages and address various use cases efficiently. Description Documentation @waku/sdk JavaScript/TypeScript SDK designed for browser environments JavaScript Waku SDK @waku/react React components and UI adapters designed for seamless integration with @waku/sdk Build React DApps Using @waku/react nwaku Nim SDK designed for integration with native Nim applications COMING SOON go-waku Golang SDK designed for integration with Golang applications, includes C bindings for usage in C/C++, C#/Unity, Swift, and Kotlin COMING SOON waku-rust-bindings Rust wrapper using go-waku bindings designed for integration in Rust applications COMING SOON","s":"Integrate using SDKs","u":"/","h":"#integrate-using-sdks","p":1},{"i":8,"t":"Waku provides integrations tailored for mobile applications, enabling Waku to run efficiently on mobile devices. Description Documentation Swift (iOS) go-waku bindings for Swift applications to seamlessly integrate Waku COMING SOON Kotlin (Android) go-waku bindings for Kotlin applications to seamlessly integrate Waku COMING SOON","s":"Run on mobile devices","u":"/","h":"#run-on-mobile-devices","p":1},{"i":10,"t":"Description Documentation REST API REST API interface provided by nwaku and go-waku to interact with the Waku Network Waku Node REST API Reference @waku/create-app Starter kit to bootstrap your next @waku/sdk project from various example templates Scaffold DApps Using @waku/create-app tip Check out the Waku Idea Board for creative project ideas and explore the limitless possibilities of the Waku protocol.","s":"More integrations","u":"/","h":"#more-integrations","p":1},{"i":12,"t":"caution Currently, the JavaScript Waku SDK (@waku/sdk) is NOT compatible with React Native. We plan to add support for React Native in the future. The JavaScript Waku SDK (@waku/sdk) provides a TypeScript implementation of the Waku protocol designed for web browser environments. Developers can seamlessly integrate Waku functionalities into web applications, enabling efficient communication and collaboration among users using the @waku/sdk package.","s":"JavaScript Waku SDK","u":"/guides/js-waku/","h":"","p":11},{"i":14,"t":"Install the @waku/sdk package using your preferred package manager: NPM Yarn npm install @waku/sdk yarn add @waku/sdk You can also use the @waku/sdk package via a CDN without installing it on your system: import * as waku from \"https://unpkg.com/@waku/sdk@latest/bundle/index.js\";","s":"Installation","u":"/guides/js-waku/","h":"#installation","p":11},{"i":16,"t":"We recommend creating a message structure for your application using Protocol Buffers for the following reasons: Consistency: Ensures uniform message format for easy parsing and processing. Interoperability: Facilitates effective communication between different parts of your application. Compatibility: Allows smooth communication between older and newer app versions. Payload Size: Minimizes payload overhead, especially for byte arrays, unlike JSON which adds significant overhead. To get started, install the protobufjs package using your preferred package manager: NPM Yarn npm install protobufjs yarn add protobufjs You can also use the protobufjs package via a CDN without installing it on your system: // Import the CDN import \"https://cdn.jsdelivr.net/npm/protobufjs@latest/dist/protobuf.min.js\"; ","s":"Message structure","u":"/guides/js-waku/","h":"#message-structure","p":11},{"i":18,"t":"Have a look at the quick start guide and comprehensive tutorials to learn how to build applications using @waku/sdk: Guide Description Send and Receive Messages Using Light Push and Filter Learn how to send and receive messages on light nodes using the Light Push and Filter protocols Retrieve Messages Using Store Protocol Learn how to retrieve and filter historical messages on light nodes using the Store protocol Encrypt, Decrypt, and Sign Your Messages Learn how to use the @waku/message-encryption package to encrypt, decrypt, and sign your messages Build React DApps Using @waku/react Learn how to use the @waku/react package seamlessly integrate @waku/sdk into a React application Scaffold DApps Using @waku/create-app Learn how to use the @waku/create-app package to bootstrap your next @waku/sdk project from various example templates Bootstrap Nodes and Discover Peers Learn how to bootstrap your node using Static Peers and discover peers using DNS Discovery Run @waku/sdk in a NodeJS Application Learn our suggested approach for using the @waku/sdk package within a NodeJS application Debug Your Waku DApp and WebSocket Learn how to troubleshoot your Waku DApp using debug logs and check WebSocket connections in nwaku Manage Your Filter Subscriptions Learn how to manage filter subscriptions and handle node disconnections in your application tip Until node incentivisation is in place, you should operate extra nodes alongside the ones provided by the Waku Network. When running a node, we recommend using the DNS Discovery and Static Peers configuration to connect to both the Waku Network and your node.","s":"Getting started","u":"/guides/js-waku/","h":"#getting-started","p":11},{"i":20,"t":"To engage in general discussions, seek assistance, or stay updated with the latest news, visit the #support and #js-waku-contribute channels on the Waku Discord. If you discover bugs or want to suggest new features, do not hesitate to open an issue in the js-waku repository. Your feedback and contributions are highly valued and will help improve the @waku/sdk package.","s":"Get help and report issues","u":"/guides/js-waku/","h":"#get-help-and-report-issues","p":11},{"i":22,"t":"This guide provides detailed steps to start using the @waku/sdk package by setting up a Light Node to send messages using the Light Push protocol, and receive messages using the Filter protocol. Have a look at the installation guide for steps on adding @waku/sdk to your project.","s":"Send and Receive Messages Using Light Push and Filter","u":"/guides/js-waku/light-send-receive","h":"","p":21},{"i":24,"t":"Use the createLightNode() function to create a Light Node and interact with the Waku Network: import { createLightNode } from \"@waku/sdk\"; // Create and start a Light Node const node = await createLightNode({ defaultBootstrap: true }); await node.start(); // Use the stop() function to stop a running node // await node.stop(); info When the defaultBootstrap parameter is set to true, your node will be bootstrapped using the default bootstrap method. Have a look at the Bootstrap Nodes and Discover Peers guide to learn more methods to bootstrap nodes.","s":"Create a light node","u":"/guides/js-waku/light-send-receive","h":"#create-a-light-node","p":21},{"i":26,"t":"Use the waitForRemotePeer() function to wait for the node to connect with peers on the Waku Network: import { waitForRemotePeer } from \"@waku/sdk\"; // Wait for a successful peer connection await waitForRemotePeer(node); The protocols parameter allows you to specify the protocols that the remote peers should have enabled: import { waitForRemotePeer, Protocols } from \"@waku/sdk\"; // Wait for peer connections with specific protocols await waitForRemotePeer(node, [ Protocols.LightPush, Protocols.Filter, ]);","s":"Connect to remote peers","u":"/guides/js-waku/light-send-receive","h":"#connect-to-remote-peers","p":21},{"i":28,"t":"Choose a content topic for your application and create a message encoder and decoder: import { createEncoder, createDecoder } from \"@waku/sdk\"; // Choose a content topic const contentTopic = \"/light-guide/1/message/proto\"; // Create a message encoder and decoder const encoder = createEncoder({ contentTopic }); const decoder = createDecoder(contentTopic); The ephemeral parameter allows you to specify whether messages should NOT be stored by Store peers: const encoder = createEncoder({ contentTopic: contentTopic, // message content topic ephemeral: true, // allows messages NOT be stored on the network }); info In this example, users send and receive messages on a shared content topic. However, real applications may have users broadcasting messages while others listen or only have 1:1 exchanges. Waku supports all these use cases.","s":"Choose a content topic","u":"/guides/js-waku/light-send-receive","h":"#choose-a-content-topic","p":21},{"i":30,"t":"Create your application's message structure using Protobuf's valid message fields: import protobuf from \"protobufjs\"; // Create a message structure using Protobuf const ChatMessage = new protobuf.Type(\"ChatMessage\") .add(new protobuf.Field(\"timestamp\", 1, \"uint64\")) .add(new protobuf.Field(\"sender\", 2, \"string\")) .add(new protobuf.Field(\"message\", 3, \"string\")); info Have a look at the Protobuf installation guide for adding the protobufjs package to your project.","s":"Create a message structure","u":"/guides/js-waku/light-send-receive","h":"#create-a-message-structure","p":21},{"i":32,"t":"To send messages over the Waku Network using the Light Push protocol, create a new message object and use the lightPush.send() function: // Create a new message object const protoMessage = ChatMessage.create({ timestamp: Date.now(), sender: \"Alice\", message: \"Hello, World!\", }); // Serialise the message using Protobuf const serialisedMessage = ChatMessage.encode(protoMessage).finish(); // Send the message using Light Push await node.lightPush.send(encoder, { payload: serialisedMessage, });","s":"Send messages using light push","u":"/guides/js-waku/light-send-receive","h":"#send-messages-using-light-push","p":21},{"i":34,"t":"To receive messages using the Filter protocol, create a callback function for message processing, then use the filter.subscribe() function to subscribe to a content topic: // Create the callback function const callback = (wakuMessage) => { // Check if there is a payload on the message if (!wakuMessage.payload) return; // Render the messageObj as desired in your application const messageObj = ChatMessage.decode(wakuMessage.payload); console.log(messageObj); }; // Create a Filter subscription const subscription = await node.filter.createSubscription(); // Subscribe to content topics and process new messages await subscription.subscribe([decoder], callback); You can use the subscription.unsubscribe() function to stop receiving messages from a content topic: await subscription.unsubscribe([contentTopic]); Congratulations! You have successfully sent and received messages over the Waku Network using the Light Push and Filter protocols. Have a look at the light-js and light-chat examples for working demos.","s":"Receive messages using filter","u":"/guides/js-waku/light-send-receive","h":"#receive-messages-using-filter","p":21},{"i":36,"t":"This guide provides detailed steps to manage Filter subscriptions and handle node disconnections in your application. Have a look at the Send and Receive Messages Using Light Push and Filter guide for using the Light Push and Filter protocols.","s":"Manage Your Filter Subscriptions","u":"/guides/js-waku/manage-filter","h":"","p":35},{"i":38,"t":"Occasionally, your Filter subscriptions might disconnect from the Waku Network, resulting in messages not being received by your application. To manage your subscriptions, periodically ping peers to check for an active connection. The error message \"peer has no subscriptions\" indicates a failed ping due to disconnection. You can stop the pings if the disconnection/unsubscription is deliberate.","s":"Overview","u":"/guides/js-waku/manage-filter","h":"#overview","p":35},{"i":40,"t":"The @waku/sdk package provides a Filter.ping() function to ping subscriptions and check for an active connection. To begin, create a Filter subscription: // Create a Filter subscription const subscription = await node.filter.createSubscription(); // Subscribe to content topics and process new messages await subscription.subscribe([decoder], callback); Next, create a function to ping and reinitiate the subscription: const pingAndReinitiateSubscription = async () => { try { // Ping the subscription await subscription.ping(); } catch (error) { if ( // Check if the error message includes \"peer has no subscriptions\" error instanceof Error && error.message.includes(\"peer has no subscriptions\") ) { // Reinitiate the subscription if the ping fails await subscription.subscribe([decoder], callback); } else { throw error; } } }; // Periodically ping the subscription await pingAndReinitiateSubscription(); info Pings will fail when there are temporary network degradations or reachability issues. This does not mean that the underlying connection has been closed. Congratulations! You have successfully managed your Filter subscriptions to handle node disconnections in your application.","s":"Pinging filter subscriptions","u":"/guides/js-waku/manage-filter","h":"#pinging-filter-subscriptions","p":35},{"i":42,"t":"This guide provides detailed steps to enable and use debug logs to troubleshoot your Waku DApp, whether in a NodeJS or browser environment and check your WebSocket connections in nwaku.","s":"Debug Your Waku DApp and WebSocket","u":"/guides/js-waku/debug-waku-dapp","h":"","p":41},{"i":44,"t":"When resolving issues in your Waku DApp, debug logs can be helpful. The @waku/sdk and libp2p packages use the debug tool to handle and show logs that help you debug effectively.","s":"Enabling debug logs","u":"/guides/js-waku/debug-waku-dapp","h":"#enabling-debug-logs","p":41},{"i":46,"t":"To enable debug logs for @waku/sdk on NodeJS, you must set the DEBUG environment variable. To only enable debug logs for @waku/sdk: export DEBUG=waku* To enable debug logs for both @waku/sdk and libp2p: export DEBUG=waku*,libp2p* To enable debug logs for all components: export DEBUG=*","s":"NodeJS environments","u":"/guides/js-waku/debug-waku-dapp","h":"#nodejs-environments","p":41},{"i":48,"t":"To view debug logs in your browser's console, modify the local storage and add the debug key. Here are guides for various modern browsers: Google Chrome Firefox JavaScript KEY VALUE DESCRIPTION debug waku* Enables @waku/sdk debug logs debug waku*,libp2p* Enables @waku/sdk and libp2p debug logs debug * Enables all debug logs","s":"Browser environments","u":"/guides/js-waku/debug-waku-dapp","h":"#browser-environments","p":41},{"i":50,"t":"Nwaku provides native support for WebSocket (ws) and WebSocket Secure (wss) protocols. These are the only transports supported for connecting to the Waku Network via browsers. It's important to note that browsers impose certain limitations on WebSocket usage: Secure Context Requirement: Insecure subroutines are prohibited in secure contexts. On an https:// webpage, only wss connections are permitted, while ws connections are not allowed. This restriction does not apply if the webpage is served locally, like on localhost or 127.0.0.1. Certificate Validation: Certificate validation rules are consistent for https and wss connections. Certificates must not be expired, issued by a recognized Certificate Authority (CA), and match the domain name, among other criteria. User Feedback on Errors: Web browsers do not display errors related to subroutines to the user. If a WebSocket connection encounters an issue, users won't be alerted directly; you'll need to check the browser's console for error details. If you encounter difficulties when connecting to a remote node using wss, follow these steps:","s":"Checking WebSocket setup","u":"/guides/js-waku/debug-waku-dapp","h":"#checking-websocket-setup","p":41},{"i":52,"t":"Attempt to connect using websocat, a tool for WebSocket interactions. Test the WebSocket port using the command: websocat -v wss://[WEBSOCKET HOST]:[WEBSOCKET PORT] For example, consider a nwaku node with the multiaddr as /dns4/nwakunode.com/tcp/1234/wss/p2p/16...: $ websocat -v wss://nwakunode.com:1234 # ... [INFO websocat::ws_client_peer] Connected to ws The connection works if the [INFO websocat::ws_client_peer] Connected to ws log entry appears. If not, check that the certificate is valid","s":"Try Websocat for connection","u":"/guides/js-waku/debug-waku-dapp","h":"#try-websocat-for-connection","p":41},{"i":54,"t":"Verify the certificate's validity by passing the -k or --insecure flag to handle invalid certificates in websocat: websocat -v -k wss://nwakunode.com:1234 If this works, the certificate's invalidity is the problem, and you should investigate the cause of the error if not, check if the WebSocket port is accessible.","s":"Check certificate validity","u":"/guides/js-waku/debug-waku-dapp","h":"#check-certificate-validity","p":41},{"i":56,"t":"Use telnet or another networking tool to verify if the WebSocket port is open and accessible. For example, if the multiaddr is /dns4/nwakunode.com/tcp/1234/wss/p2p/16..., use the command: $ telnet nwakunode.com 1234 Trying 123.123.123.123... Connected to nwakunode.com. # ... If the connection succeeds, there might be an issue with nwaku. Consider seeking support on the Waku Discord or raise an issue. If the connection fails, ensure that the WebSocket port is open.","s":"Check WebSocket port accessibility","u":"/guides/js-waku/debug-waku-dapp","h":"#check-websocket-port-accessibility","p":41},{"i":58,"t":"This guide provides detailed steps to bootstrap your your node using Static Peers and discover peers in the Waku Network using DNS Discovery. info If you do not set up a bootstrap node or discovery mechanism, your node will not connect to any remote peer. tip Until node incentivisation is in place, you should operate extra nodes alongside the ones provided by the Waku Network. When running a node, we recommend using the DNS Discovery and Static Peers configuration to connect to both the Waku Network and your node.","s":"Bootstrap Nodes and Discover Peers","u":"/guides/js-waku/configure-discovery","h":"","p":57},{"i":60,"t":"The @waku/sdk package provides a built-in bootstrapping method that uses DNS Discovery to locate peers from the waku v2.prod ENR tree. import { createLightNode } from \"@waku/sdk\"; // Bootstrap node using the default bootstrap method const node = await createLightNode({ defaultBootstrap: true });","s":"Default bootstrap method","u":"/guides/js-waku/configure-discovery","h":"#default-bootstrap-method","p":57},{"i":62,"t":"To set static peers, a list of multiaddr to bootstrap the node should be passed to the bootstrapPeers parameter of the createLightNode() function: import { createLightNode } from \"@waku/sdk\"; // Bootstrap node using static peers const node = await createLightNode({ bootstrapPeers: [\"[PEER MULTIADDR]\"], }); For example, consider a node that connects to two static peers on the same local host (IP: 0.0.0.0) using TCP ports 60002 and 60003 with WebSocket enabled: // Define the list of static peers to bootstrap const peers = [ \"/ip4/0.0.0.0/tcp/60002/ws/p2p/16Uiu2HAkzjwwgEAXfeGNMKFPSpc6vGBRqCdTLG5q3Gmk2v4pQw7H\", \"/ip4/0.0.0.0/tcp/60003/ws/p2p/16Uiu2HAmFBA7LGtwY5WVVikdmXVo3cKLqkmvVtuDu63fe8safeQJ\", ]; // Bootstrap node using the static peers const node = await createLightNode({ bootstrapPeers: peers, }); tip For local development using a nwaku node, use a ws address instead of wss. Remember that this setup is functional only when your web server is running locally.","s":"Configure static peers","u":"/guides/js-waku/configure-discovery","h":"#configure-static-peers","p":57},{"i":64,"t":"To bootstrap a node using DNS Discovery, first install the @waku/dns-discovery package: npm install @waku/dns-discovery yarn add @waku/dns-discovery Then, use the wakuDnsDiscovery() function to provide a list of URLs for DNS node list in the format enrtree://@: import { createLightNode } from \"@waku/sdk\"; import { wakuDnsDiscovery } from \"@waku/dns-discovery\"; // Define DNS node list const enrTree = \"enrtree://[PUBLIC KEY]@[DOMAIN NAME]\"; // Define node requirements const NODE_REQUIREMENTS = { store: 3, lightPush: 3, filter: 3, }; // Bootstrap node using DNS Discovery const node = await createLightNode({ libp2p: { peerDiscovery: [ wakuDnsDiscovery( [enrTree], NODE_REQUIREMENTS, ), ], }, }); For example, consider a node that uses the waku v2.prod and waku v2.test ENR trees for DNS Discovery: import { enrTree } from \"@waku/dns-discovery\"; // Bootstrap node using DNS Discovery const node = await createLightNode({ libp2p: { peerDiscovery: [ wakuDnsDiscovery( [enrTree[\"PROD\"], enrTree[\"TEST\"]], NODE_REQUIREMENTS, ), ], }, });","s":"Configure DNS discovery","u":"/guides/js-waku/configure-discovery","h":"#configure-dns-discovery","p":57},{"i":66,"t":"You can also bootstrap your node using DNS Discovery and Static Peers simultaneously: import { createLightNode } from \"@waku/sdk\"; import { bootstrap } from \"@libp2p/bootstrap\"; import { enrTree, wakuDnsDiscovery } from \"@waku/dns-discovery\"; // Define the list of static peers to bootstrap const peers = [ \"/ip4/0.0.0.0/tcp/60002/ws/p2p/16Uiu2HAkzjwwgEAXfeGNMKFPSpc6vGBRqCdTLG5q3Gmk2v4pQw7H\", \"/ip4/0.0.0.0/tcp/60003/ws/p2p/16Uiu2HAmFBA7LGtwY5WVVikdmXVo3cKLqkmvVtuDu63fe8safeQJ\", ]; // Define node requirements const NODE_REQUIREMENTS = { store: 3, lightPush: 3, filter: 3, }; // Bootstrap node using DNS Discovery and static peers const node = await createLightNode({ libp2p: { bootstrapPeers: peers, peerDiscovery: [ wakuDnsDiscovery( [enrTree[\"PROD\"]], NODE_REQUIREMENTS, ), ], }, });","s":"Configure DNS discovery and static peers","u":"/guides/js-waku/configure-discovery","h":"#configure-dns-discovery-and-static-peers","p":57},{"i":68,"t":"You can retrieve the array of peers connected to a node using the libp2p.getPeers() function within the @waku/sdk package: import { createLightNode, waitForRemotePeer } from \"@waku/sdk\"; const node = await createLightNode({ defaultBootstrap: true }); await waitForRemotePeer(node); // Retrieve array of peers connected to the node console.log(node.libp2p.getPeers());","s":"Retrieving connected peers","u":"/guides/js-waku/configure-discovery","h":"#retrieving-connected-peers","p":57},{"i":70,"t":"While the @waku/sdk package is primarily designed for browser environments, you can use it in a NodeJS application. However, there are certain limitations and considerations to keep in mind. This guide provides a comprehensive overview of using @waku/sdk in NodeJS.","s":"Run @waku/sdk in a NodeJS Application","u":"/guides/js-waku/run-waku-nodejs","h":"","p":69},{"i":73,"t":"@waku/sdk prioritises browser compatibility, avoiding NodeJS APIs for simpler bundling. This design choice enhances browser API compatibility but sacrifices NodeJS optimisation. While many browser APIs work in NodeJS, they might need better optimisation.","s":"API compatibility","u":"/guides/js-waku/run-waku-nodejs","h":"#api-compatibility","p":69},{"i":75,"t":"@waku/sdk focuses on the client side of the Request/Response protocol. We'll have to replicate all the functionalities added to nwaku to implement extra features.","s":"Protocol implementation","u":"/guides/js-waku/run-waku-nodejs","h":"#protocol-implementation","p":69},{"i":77,"t":"@waku/sdk aims to provide optimal default for the browser, striking a balance between browser and NodeJS compatibility while ensuring simplicity will add complexity.","s":"Codebase complexity","u":"/guides/js-waku/run-waku-nodejs","h":"#codebase-complexity","p":69},{"i":79,"t":"Certain features in @waku/sdk are tailored for browsers and might not translate seamlessly to NodeJS. For example, only WebSocket is supported in the browser, whereas a NodeJS application can benefit from using transport methods like TCP. @waku/sdk default peer management caters to the browser's ephemeral nature, which is different for NodeJS. This is why DNS Discovery and Peer Exchange are the default discovery mechanisms for the browser but not for NodeJS and desktop applications.","s":"Browser-specific protocols","u":"/guides/js-waku/run-waku-nodejs","h":"#browser-specific-protocols","p":69},{"i":81,"t":"Before using @waku/sdk in a NodeJS environment, take into account these limitations. For a more optimised solution, we recommend running nwaku in a Docker container and consuming its REST API.","s":"Recommendations","u":"/guides/js-waku/run-waku-nodejs","h":"#recommendations","p":69},{"i":83,"t":"There are plans to release a NodeJS package based on nwaku to streamline the process of using Waku Network features in NodeJS applications. You can track the progress and updates here: https://github.com/waku-org/nwaku/issues/1332.","s":"Future developments","u":"/guides/js-waku/run-waku-nodejs","h":"#future-developments","p":69},{"i":85,"t":"This guide provides detailed steps to use the @waku/message-encryption package to encrypt, decrypt, and sign your messages using Waku message payload encryption methods. info Waku uses libp2p noise encryption for node-to-node connections. However, no default encryption method is applied to the data sent over the network. This design choice enhances Waku's encryption flexibility, encouraging developers to freely use custom protocols or Waku message payload encryption methods.","s":"Encrypt, Decrypt, and Sign Your Messages","u":"/guides/js-waku/message-encryption","h":"","p":84},{"i":87,"t":"Install the required packages for integrating @waku/message-encryption using your preferred package manager: NPM Yarn npm install @waku/message-encryption @waku/utils yarn add @waku/message-encryption @waku/utils","s":"Installation","u":"/guides/js-waku/message-encryption","h":"#installation","p":84},{"i":89,"t":"Symmetric encryption uses a single, shared key for message encryption and decryption. Use the generateSymmetricKey() function to generate a random symmetric key: import { generateSymmetricKey } from \"@waku/message-encryption\"; // Generate a random symmetric key const symmetricKey = generateSymmetricKey(); To send encrypted messages, create a Symmetric message encoder and send the message as usual: Sender client import { createEncoder } from \"@waku/message-encryption/symmetric\"; // Create a symmetric message encoder const encoder = createEncoder({ contentTopic: contentTopic, // message content topic symKey: symmetricKey, // symmetric key for encrypting messages }); // Send the message using Light Push await node.lightPush.send(encoder, { payload }); To decrypt the messages you receive, create a symmetric message decoder and process the messages as usual: Receiver client import { createDecoder } from \"@waku/message-encryption/symmetric\"; // Create a symmetric message decoder const decoder = createDecoder(contentTopic, symmetricKey); // Receive messages from a Filter subscription await subscription.subscribe([decoder], callback); // Retrieve messages from Store peers await node.store.queryWithOrderedCallback([decoder], callback); tip The symmetric key exchange between users can happen through an out-of-band method. For example, where the key is embedded within the URL shared by a user to access a specific resource.","s":"Symmetric encryption","u":"/guides/js-waku/message-encryption","h":"#symmetric-encryption","p":84},{"i":91,"t":"ECIES encryption uses a public key for encryption and a private key for decryption. Use the generatePrivateKey() function to generate a random ECDSA private key: import { generatePrivateKey, getPublicKey } from \"@waku/message-encryption\"; // Generate a random ECDSA private key, keep secure const privateKey = generatePrivateKey(); // Generate a public key from the private key, provide to the sender const publicKey = getPublicKey(privateKey); To send encrypted messages, create an ECIES message encoder with the public key and send the message as usual: Sender client import { createEncoder } from \"@waku/message-encryption/ecies\"; // Create an ECIES message encoder const encoder = createEncoder({ contentTopic: contentTopic, // message content topic publicKey: publicKey, // ECIES public key for encrypting messages }); // Send the message using Light Push await node.lightPush.send(encoder, { payload }); To decrypt the messages you receive, create an ECIES message decoder with the private key and process the messages as usual: Receiver client import { createDecoder } from \"@waku/message-encryption/ecies\"; // Create an ECIES message decoder const decoder = createDecoder(contentTopic, privateKey); // Receive messages from a Filter subscription await subscription.subscribe([decoder], callback); // Retrieve messages from Store peers await node.store.queryWithOrderedCallback([decoder], callback); tip Users can share their public key through broadcasting or out-of-band methods, such as embedding it in a URL or sending an unencrypted message on another content topic for others to retrieve.","s":"ECIES encryption","u":"/guides/js-waku/message-encryption","h":"#ecies-encryption","p":84},{"i":93,"t":"Message signing helps in proving the authenticity of received messages. By attaching a signature to a message, you can verify its origin and integrity with absolute certainty. info Signing messages is only possible when encrypted, but if your application does not require encryption, you can generate a symmetric key through hardcoded or deterministic methods using information available to all users. The sigPrivKey parameter allows the Symmetric and ECIES message encoders to sign the message before encryption using an ECDSA private key: Alice (sender) client import { generatePrivateKey, getPublicKey } from \"@waku/message-encryption\"; import { createEncoder as createSymmetricEncoder } from \"@waku/message-encryption/symmetric\"; import { createEncoder as createECIESEncoder } from \"@waku/message-encryption/ecies\"; // Generate a random ECDSA private key for signing messages // ECIES encryption and message signing both use ECDSA keys // For this example, we'll call the sender of the message Alice const alicePrivateKey = generatePrivateKey(); const alicePublicKey = getPublicKey(alicePrivateKey); // Create a symmetric encoder that signs messages const symmetricEncoder = createSymmetricEncoder({ contentTopic: contentTopic, // message content topic symKey: symmetricKey, // symmetric key for encrypting messages sigPrivKey: alicePrivateKey, // private key for signing messages before encryption }); // Create an ECIES encoder that signs messages const ECIESEncoder = createECIESEncoder({ contentTopic: contentTopic, // message content topic publicKey: publicKey, // ECIES public key for encrypting messages sigPrivKey: alicePrivateKey, // private key for signing messages before encryption }); // Send and receive your messages as usual with Light Push and Filter await subscription.subscribe([symmetricEncoder], callback); await node.lightPush.send(symmetricEncoder, { payload }); await subscription.subscribe([ECIESEncoder], callback); await node.lightPush.send(ECIESEncoder, { payload }); You can extract the signature and its public key (signaturePublicKey) from the DecodedMessage and compare it with the expected public key or use the verifySignature() function to verify the message origin: Bob (receiver) client import { generatePrivateKey } from \"@waku/message-encryption\"; import { createEncoder } from \"@waku/message-encryption/symmetric\"; // Generate a random private key for signing messages // For this example, we'll call the receiver of the message Bob const bobPrivateKey = generatePrivateKey(); // Create an encoder that signs messages const encoder = createEncoder({ contentTopic: contentTopic, symKey: symmetricKey, sigPrivKey: bobPrivateKey, }); // Modify the callback function to verify message signature const callback = (wakuMessage) => { // Extract the message signature and public key of the signature // You can compare the signaturePublicKey with Alice public key const signature = wakuMessage.signature; const signaturePublicKey = wakuMessage.signaturePublicKey; // Verify the message was actually signed and sent by Alice // Alice's public key can be gotten from broadcasting or out-of-band methods if (wakuMessage.verifySignature(alicePublicKey)) { console.log(\"This message was signed by Alice\"); } else { console.log(\"This message was NOT signed by Alice\"); } }; await subscription.subscribe([encoder], callback);","s":"Signing encrypted messages","u":"/guides/js-waku/message-encryption","h":"#signing-encrypted-messages","p":84},{"i":95,"t":"We used randomly generated keys for encryption and message signing in the provided examples, but real-world applications require consistent keys among client restarts. Have a look at the Key Pair Handling example, which demonstrates the secure storage and retrieval of key information from local storage using Subtle Crypto. If you need a simple way to store your keys in hexadecimal format across your application, you can use the @waku/utils package: import { bytesToHex, hexToBytes } from \"@waku/utils/bytes\"; // Generate random symmetric and private keys const symmetricKey = generateSymmetricKey(); const privateKey = generatePrivateKey(); // Store the keys in hexadecimal format const symmetricKeyHex = bytesToHex(symmetricKey); const privateKeyHex = bytesToHex(privateKey); // Restore the keys from hexadecimal format const restoredSymmetricKey = hexToBytes(symmetricKeyHex); const restoredPrivateKey = hexToBytes(privateKeyHex); Congratulations! You have successfully encrypted, decrypted, and signed your messages using Symmetric and ECIES encryption methods. Have a look at the eth-pm example for a working demo.","s":"Storing encryption keys","u":"/guides/js-waku/message-encryption","h":"#storing-encryption-keys","p":84},{"i":97,"t":"This guide provides detailed steps to bootstrap your next @waku/sdk project from various example templates using the @waku/create-app package.","s":"Scaffold DApps Using @waku/create-app","u":"/guides/js-waku/use-waku-create-app","h":"","p":96},{"i":99,"t":"Initialise a new @waku/sdk template using any of the following methods: NPM Yarn npx @waku/create-app [PROJECT DIRECTORY] yarn create @waku/app [PROJECT DIRECTORY] Next, select a template to initialise your app from: tip If you have previously installed @waku/create-app globally, we recommend uninstalling the package to ensure that npx always uses the latest version.","s":"Usage","u":"/guides/js-waku/use-waku-create-app","h":"#usage","p":96},{"i":101,"t":"We welcome and appreciate the contributions of templates for the @waku/create-app package. To contribute a template, please follow these steps: Create the template, ensuring it is user-friendly and thoroughly tested. Place the template in the examples folder in the js-waku-examples repository's root. Commit your changes with a detailed message and push them to your forked repository. Finally, submit a pull request to the js-waku-examples repository. Our team will carefully review and merge your submission upon approval. Waku also provides bounties to encourage community members to contribute to the network and earn rewards. To participate in the bounty program, head to https://github.com/waku-org/bounties.","s":"Contributing new templates","u":"/guides/js-waku/use-waku-create-app","h":"#contributing-new-templates","p":96},{"i":103,"t":"This guide provides detailed steps to build a nwaku node from the source code to access the latest development version or a specific commit or release of nwaku. For your convenience, you may want to download a pre-compiled binary instead. info A minimum of 2GB of RAM is required to build nwaku. Nwaku is available for Linux and macOS, with experimental Windows support.","s":"Build Nwaku from Source","u":"/guides/nwaku/build-source","h":"","p":102},{"i":105,"t":"To build nwaku, you need the standard developer tools, including a C compiler, GNU Make, Bash, Git, Rustup, and PostgreSQL client library. Debian and Ubuntu Fedora Arch Linux MacOS (Homebrew) sudo apt-get install build-essential git libpq5 jq curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source \"$HOME/.cargo/env\" sudo dnf install @development-tools git libpq-devel curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh # Using your favoured AUR helper sudo [AUR HELPER] -S base-devel git postgresql-libs curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh brew install cmake git postgresql@15 rustup-init # Create a symbolic link to libpq.5.dylib in /usr/local/lib/ sudo mkdir -p /usr/local/lib/ sudo ln -s /opt/homebrew/opt/postgresql@15/lib/libpq.5.dylib /usr/local/lib/libpq.dylib","s":"Prerequisites","u":"/guides/nwaku/build-source","h":"#prerequisites","p":102},{"i":107,"t":"Get the source code from the GitHub repository. The default branch is master, the release candidate for major updates. git clone https://github.com/waku-org/nwaku cd nwaku tip You can use git tag -l to check specific version tags.","s":"Clone the repository","u":"/guides/nwaku/build-source","h":"#clone-the-repository","p":102},{"i":109,"t":"Build the nwaku binary: make wakunode2 The first make invocation updates to all Git submodules. After each git pull, run make update to keep the submodules updated in the future. make update","s":"Build the binary","u":"/guides/nwaku/build-source","h":"#build-the-binary","p":102},{"i":111,"t":"Nwaku will create the wakunode2 binary in the ./build/ directory. # Run with default configuration ./build/wakunode2 # See available command line options ./build/wakunode2 --help To learn more about running nwaku, have a look at these guides: Run a Nwaku Node Run Nwaku in a Docker Container Run Nwaku with Docker Compose Node Configuration Methods","s":"Run the binary","u":"/guides/nwaku/build-source","h":"#run-the-binary","p":102},{"i":113,"t":"Run the tests for Waku: make test Congratulations! You have successfully built the nwaku binary from the source code. Have a look at the Node Configuration Examples guide to learn how to configure nwaku for different use cases.","s":"Run test suite","u":"/guides/nwaku/build-source","h":"#run-test-suite","p":102},{"i":115,"t":"How do I install the @waku/sdk package in my project? You can add the JavaScript SDK to your project using NPM, Yarn, or a CDN. Check out the installation guide to get started. Why should I use Protocol Buffers for my application's message structure when using Waku? Protocol Buffers ensure consistent formatting, interoperability, and backward compatibility for your application's messages, with a smaller payload size than JSON. Check out the installation guide and Protobuf documentation to learn more. What are the steps to retrieve historical messages on Waku? Check out the Retrieve Messages Using Store Protocol guide to learn how to retrieve and filter historical messages using the Store protocol. How can I prevent Store peers from storing my messages? When creating your message encoder, you can configure the ephemeral option to prevent Store peers from keeping your messages on the Waku Network. How can I encrypt, decrypt, and sign messages in my Waku application? You can encrypt and decrypt your messages using symmetric, ECIES, and noise encryption methods. Check out the Encrypt, Decrypt, and Sign Your Messages guide to get started. How do I integrate Waku into a React application? Waku has a specialized SDK designed for building React applications. Check out the Build React DApps Using @waku/react guide for instructions on installation and usage. How can I bootstrap and discover peers in the Waku Network for browser nodes? The JavaScript SDK has a default bootstrap method that can be configured with Static Peers and DNS Discovery. Check out the Bootstrap Nodes and Discover Peers guide for setting up peer discovery for your node. How can I integrate Waku into a NodeJS application? Though the JavaScript SDK isn't directly usable in NodeJS due to certain limitations, we recommend running nwaku in a Docker container and consuming its REST API in a NodeJS application. How can I debug my Waku DApp and check WebSocket connections? Check out the Debug Your Waku DApp and WebSocket guide to discover how to use debug logs to troubleshoot your Waku DApp and resolve connection issues with nwaku WebSockets. How can I manage unexpected disconnections of my Filter subscription from Waku? We recommend regularly pinging peers to check for an active connection and reinitiating the subscription when it disconnects. Check out the Manage Your Filter Subscriptions guide for a detailed explanation and step-by-step instructions. How can I send images and videos on the Waku Network? While it's possible to transmit media such as images as bytes on Waku, we recommend uploading your media to a CDN or a file system like IPFS and then sharing the corresponding URL via Waku.","s":"JavaScript SDK FAQ","u":"/guides/js-waku/faq","h":"","p":114},{"i":117,"t":"Waku nodes can be configured using a combination of the following methods: Command line options and flags Environment variables TOML configuration files (currently the only supported format) Default values info Take note of the precedence order: Each configuration method overrides the one below it (e.g., command line options override environment variables and configuration files).","s":"Node Configuration Methods","u":"/guides/nwaku/config-methods","h":"","p":116},{"i":119,"t":"Node configuration is primarily done using command line options, which override other methods. Specify configuration options by providing them in this format after the binary name: ./build/wakunode2 --tcp-port=65000 When running your node with Docker, provide the command line options after the image name in this format: docker run statusteam/nim-waku --tcp-port=65000","s":"Command line options","u":"/guides/nwaku/config-methods","h":"#command-line-options","p":116},{"i":121,"t":"Nodes can be configured using environment variables by prefixing the variable name with WAKUNODE2_ and using the configuration option in SCREAMING_SNAKE_CASE format. To set the tcp-port configuration, the wakunode2 binary should be called in this format: WAKUNODE2_TCP_PORT=65000 ./build/wakunode2 When running your node with Docker, start the node using the -e command option: docker run -e \"WAKUNODE2_TCP_PORT=65000\" statusteam/nim-waku info This is the second configuration method in order of precedence. Command Line Options override environment variables.","s":"Environment variables","u":"/guides/nwaku/config-methods","h":"#environment-variables","p":116},{"i":123,"t":"Nodes can be configured using a configuration file following the TOML format: TOML Config File log-level = \"DEBUG\" tcp-port = 65000 topic = [\"/waku/2/default-waku/proto\"] metrics-logging = false The config-file configuration option lets you specify the configuration file path: ./build/wakunode2 --config-file=[TOML CONFIGURATION FILE] You can also specify the configuration file via environment variables: # Using environment variables WAKUNODE2_CONFIG_FILE=[TOML CONFIGURATION FILE] ./build/wakunode2 # Using environment variables with Docker docker run -e \"WAKUNODE2_CONFIG_FILE=[TOML CONFIGURATION FILE]\" statusteam/nim-waku info This is the third configuration method in order of precedence. Command Line Options and Environment Variables override configuration files.","s":"Configuration files","u":"/guides/nwaku/config-methods","h":"#configuration-files","p":116},{"i":125,"t":"The default configuration is used when no other options are specified. By default, a nwaku node does the following: Generate a new Node Key and PeerID. Listen for incoming libp2p connections on the default TCP port (60000). Subscribe to the default Pub/Sub topic (/waku/2/default-waku/proto). Enable the Relay protocol for relaying messages. Enable the Store protocol as a client, allowing it to query peers for historical messages but not store any message itself. To see the default values of all configuration options, run wakunode2 --help: ./build/wakunode2 --help tip To explore the available node configuration options, have a look at the Node Configuration Options guide.","s":"Default configuration values","u":"/guides/nwaku/config-methods","h":"#default-configuration-values","p":116},{"i":127,"t":"This guide provides detailed steps to create a Light Node for retrieving and filtering historical messages using the Store protocol.","s":"Retrieve Messages Using Store Protocol","u":"/guides/js-waku/store-retrieve-messages","h":"","p":126},{"i":129,"t":"Use the createLightNode() function to create a Light Node and interact with the Waku Network: import { createLightNode } from \"@waku/sdk\"; // Create and start a Light Node const node = await createLightNode({ defaultBootstrap: true }); await node.start();","s":"Create a light node","u":"/guides/js-waku/store-retrieve-messages","h":"#create-a-light-node","p":126},{"i":131,"t":"Use the waitForRemotePeer() function to wait for the node to connect with Store peers: import { waitForRemotePeer, Protocols } from \"@waku/sdk\"; // Wait for a successful peer connection await waitForRemotePeer(node, [Protocols.Store]);","s":"Connect to store peers","u":"/guides/js-waku/store-retrieve-messages","h":"#connect-to-store-peers","p":126},{"i":133,"t":"Choose a content topic for filtering the messages to retrieve and create a message decoder: import { createDecoder } from \"@waku/sdk\"; // Choose a content topic const contentTopic = \"/store-guide/1/message/proto\"; // Create a message decoder const decoder = createDecoder(contentTopic);","s":"Choose a content topic","u":"/guides/js-waku/store-retrieve-messages","h":"#choose-a-content-topic","p":126},{"i":135,"t":"@waku/sdk provides the queryWithOrderedCallback() and queryGenerator() functions for querying Store nodes and retrieving historical or missed messages. The responses from Store nodes are paginated and require you to process each page sequentially.","s":"Retrieve messages","u":"/guides/js-waku/store-retrieve-messages","h":"#retrieve-messages","p":126},{"i":137,"t":"The store.queryWithOrderedCallback() function provides a straightforward method for querying Store nodes and processing messages in chronological order through a callback function. It accepts these parameters: decoders: List of decoders that specify the content topic to query for and their message decryption methods. callback: The callback function for processing the retrieved messages. options (optional): Query options to filter the retrieved messages. // Create the callback function const callback = (wakuMessage) => { // Render the message/payload in your application console.log(wakuMessage); }; // Query the Store peer await node.store.queryWithOrderedCallback( [decoder], callback, ); info The queryWithOrderedCallback() function always returns the most recent messages in a page first.","s":"queryWithOrderedCallback","u":"/guides/js-waku/store-retrieve-messages","h":"#querywithorderedcallback","p":126},{"i":139,"t":"The store.queryGenerator() function provides more control and flexibility over processing messages retrieved from Store nodes through Async Generators. It accepts these parameters: decoders: List of decoders that specify the content topic to query for and their message decryption methods. options (optional): Query options to filter the retrieved messages. // Create the store query const storeQuery = node.store.queryGenerator([decoder]); // Process the messages for await (const messagesPromises of storeQuery) { // Fulfil the messages promises const messages = await Promise.all(messagesPromises .map(async (p) => { const msg = await p; // Render the message/payload in your application console.log(msg); }) ); } info The queryGenerator() function always returns the oldest messages in a page first.","s":"queryGenerator","u":"/guides/js-waku/store-retrieve-messages","h":"#querygenerator","p":126},{"i":142,"t":"The pageDirection option specifies the direction in which pages are retrieved: BACKWARD (default): Most recent page first. FORWARD: Oldest page first. import { PageDirection } from \"@waku/sdk\"; // Retrieve recent messages first const queryOptions = { pageDirection: PageDirection.BACKWARD, }; // Retrieve oldest messages first const queryOptions = { pageDirection: PageDirection.FORWARD, }; // Query the Store peer with options await node.store.queryWithOrderedCallback([decoder], callback, options); const storeQuery = node.store.queryGenerator([decoder, options]);","s":"pageDirection","u":"/guides/js-waku/store-retrieve-messages","h":"#pagedirection","p":126},{"i":144,"t":"The cursor option specifies the starting index for retrieving messages. For example, consider a query that retrieves the first page messages and then continues with the next page: import { waku } from \"@waku/sdk\"; // Create the callback function const messages = []; const callback = (wakuMessage) => { messages.push(wakuMessage); // Return \"true\" to stop retrieving pages // Here, it retrieves only the first page return true; }; // Retrieve the first page of messages // This retrieves all the messages if \"return true\" is not present await node.store.queryWithOrderedCallback( [decoder], callback, ); // Create the cursor const lastMessage = messages[messages.length - 1]; const cursor = await waku.createCursor(lastMessage); // Retrieve the next page of messages // The message at the cursor index is excluded from the result await node.store.queryWithOrderedCallback( [decoder], callback, { cursor: cursor, }, ); console.log(messages); info If you omit the cursor option, the query will start from the beginning or end of the history, depending on the page direction.","s":"cursor","u":"/guides/js-waku/store-retrieve-messages","h":"#cursor","p":126},{"i":146,"t":"The timeFilter option specifies a time frame to retrieve messages from. For example, consider a query that retrieves messages from the previous week: // Get the time frame const endTime = new Date(); const startTime = new Date(); startTime.setDate(endTime.getDate() - 7); // Retrieve a week of messages const queryOptions = { timeFilter: { startTime, endTime, }, }; // Query the Store peer with options await node.store.queryWithOrderedCallback([decoder], callback, options); const storeQuery = node.store.queryGenerator([decoder, options]); info The timeFilter option significantly reduces message retrieval performance. To optimise it, consider resuming message retrieval using a cursor that starts from the last seen message. Congratulations! You have successfully retrieved and filtered historical messages on a Light Node using the Store protocol. Have a look at the store-js and store-reactjs-chat examples for working demos.","s":"timeFilter","u":"/guides/js-waku/store-retrieve-messages","h":"#timefilter","p":126},{"i":148,"t":"Here are the available node configuration options, along with their default values and descriptions:","s":"Node Configuration Options","u":"/guides/nwaku/config-options","h":"","p":147},{"i":150,"t":"Name Default Value Description config-file Loads configuration from a TOML file (cmd-line parameters take precedence) protected-topic newSeq[ProtectedTopic](0) Topics and its public key to be used for message validation, topic:pubkey. Argument may be repeated","s":"Application-level config","u":"/guides/nwaku/config-options","h":"#application-level-config","p":147},{"i":152,"t":"Name Default Value Description log-level logging.LogLevel.INFO Sets the log level for process. Supported levels: TRACE, DEBUG, INFO, NOTICE, WARN, ERROR or FATAL log-format logging.LogFormat.TEXT Specifies what kind of logs should be written to stdout. Supported formats: TEXT, JSON","s":"Log config","u":"/guides/nwaku/config-options","h":"#log-config","p":147},{"i":154,"t":"Name Default Value Description cluster-id 0 Cluster id that the node is running in. Node in a different cluster id is disconnected agent-string nwaku Node agent string which is used as identifier in network nodekey P2P node private key as 64-char hex string listen-address defaultListenAddress() Listening address for LibP2P (and Discovery v5, if enabled) traffic tcp-port 60000 TCP listening port ports-shift 0 Add a shift to all port numbers nat any Specify method to use for determining public address. Must be one of: any, none, upnp, pmp, extip: ext-multiaddr External multiaddresses to advertise to the network. Argument may be repeated ext-multiaddr-only false Only announce external multiaddresses max-connections 50 Maximum allowed number of libp2p connections max-relay-peers Maximum allowed number of relay peers peer-store-capacity Maximum stored peers in the peerstore peer-persistence false Enable peer persistence","s":"General node config","u":"/guides/nwaku/config-options","h":"#general-node-config","p":147},{"i":156,"t":"Name Default Value Description dns-addrs true Enable resolution of dnsaddr, dns4 or dns6 multiaddrs dns-addrs-name-server [\"1.1.1.1\", \"1.0.0.1\"] DNS name server IPs to query for DNS multiaddrs resolution. Argument may be repeated dns4-domain-name The domain name resolving to the node's public IPv4 address","s":"DNS addrs config","u":"/guides/nwaku/config-options","h":"#dns-addrs-config","p":147},{"i":158,"t":"Name Default Value Description relay true Enable relay protocol: true|false relay-peer-exchange false Enable gossipsub peer exchange in relay protocol: true|false rln-relay false Enable spam protection through rln-relay: true|false rln-relay-cred-path The path for persisting rln-relay credential rln-relay-membership-index The index of the onchain commitment to use rln-relay-dynamic false Enable waku-rln-relay with on-chain dynamic group management: true|false rln-relay-id-key Rln relay identity secret key as a Hex string rln-relay-id-commitment-key Rln relay identity commitment key as a Hex string rln-relay-eth-client-address ws://localhost:8540/ WebSocket address of an Ethereum testnet client e.g., ws://localhost:8540/ rln-relay-eth-contract-address Address of membership contract on an Ethereum testnet rln-relay-eth-private-key Private key for broadcasting transactions execute false Runs the registration function on-chain. By default, a dry-run will occur rln-relay-cred-password Password for encrypting RLN credentials rln-relay-tree-path Path to the RLN merkle tree sled db (https://github.com/spacejam/sled) rln-relay-bandwidth-threshold 0 # to maintain backwards compatibility Message rate in bytes/sec after which verification of proofs should happen staticnode Peer multiaddr to directly connect with. Argument may be repeated keep-alive false Enable keep-alive for idle connections: true|false topic [\"/waku/2/default-waku/proto\"] Default topic to subscribe to. Argument may be repeated. Deprecated! Please use pubsub-topic and/or content-topic instead pubsub-topic Default pubsub topic to subscribe to. Argument may be repeated content-topic Default content topic to subscribe to. Argument may be repeated","s":"Relay config","u":"/guides/nwaku/config-options","h":"#relay-config","p":147},{"i":160,"t":"Name Default Value Description store false Enable/disable waku store protocol storenode Peer multiaddress to query for storage store-message-retention-policy time:172800 Message store retention policy. Time retention policy: time:. Capacity retention policy: capacity:. Size retention policy: size:. Set to none to disable store-message-db-url sqlite://store.sqlite3 The database connection URL for persistent storage store-message-db-vacuum false Enable database vacuuming at start. Only supported by SQLite database engine store-message-db-migration true Enable database migration at start","s":"Store and message store config","u":"/guides/nwaku/config-options","h":"#store-and-message-store-config","p":147},{"i":162,"t":"Name Default Value Description filter false Enable filter protocol: true|false filternode Peer multiaddr to request content filtering of messages filter-timeout 14400 # 4 hours Timeout for filter node in seconds filter-subscription-timeout 300 # 5 minutes Timeout for filter subscription without ping or refresh it, in seconds. Only for v2 filter protocol filter-max-peers-to-serve 1000 Maximum number of peers to serve at a time. Only for v2 filter protocol filter-max-criteria 1000 Maximum number of pubsub and content topic combinations per peer at a time. Only for v2 filter protocol","s":"Filter config","u":"/guides/nwaku/config-options","h":"#filter-config","p":147},{"i":164,"t":"Name Default Value Description lightpush false Enable lightpush protocol: true|false lightpushnode Peer multiaddr to request lightpush of published messages","s":"Light push config","u":"/guides/nwaku/config-options","h":"#light-push-config","p":147},{"i":166,"t":"Name Default Value Description rest false Enable Waku REST HTTP server: true|false rest-address 127.0.0.1 Listening address of the REST HTTP server rest-port 8645 Listening port of the REST HTTP server rest-relay-cache-capacity 30 Capacity of the Relay REST API message cache rest-admin false Enable access to REST HTTP Admin API: true|false rest-private false Enable access to REST HTTP Private API: true|false rest-allow-origin Allow cross-origin requests from the specified origin. When using the REST API in a browser, specify the origin host to get a valid response from the node REST HTTP server. This option may be repeated and can contain wildcards (?,*) for defining URLs and ports such as localhost:*, 127.0.0.1:8080, or allow any website with *","s":"REST HTTP config","u":"/guides/nwaku/config-options","h":"#rest-http-config","p":147},{"i":168,"t":"Name Default Value Description metrics-server false Enable the metrics server: true|false metrics-server-address 127.0.0.1 Listening address of the metrics server metrics-server-port 8008 Listening HTTP port of the metrics server metrics-logging true Enable metrics logging: true|false","s":"Metrics config","u":"/guides/nwaku/config-options","h":"#metrics-config","p":147},{"i":170,"t":"Name Default Value Description dns-discovery false Enable discovering nodes via DNS dns-discovery-url URL for DNS node list in format 'enrtree://@' dns-discovery-name-server [\"1.1.1.1\", \"1.0.0.1\"] DNS name server IPs to query. Argument may be repeated","s":"DNS discovery config","u":"/guides/nwaku/config-options","h":"#dns-discovery-config","p":147},{"i":172,"t":"Name Default Value Description discv5-discovery false Enable discovering nodes via Node Discovery v5 discv5-udp-port 9000 Listening UDP port for Node Discovery v5 discv5-bootstrap-node Text-encoded ENR for bootstrap node. Used when connecting to the network. Argument may be repeated discv5-enr-auto-update false Discovery can automatically update its ENR with the IP address discv5-table-ip-limit 10 Maximum amount of nodes with the same IP in discv5 routing tables discv5-bucket-ip-limit 2 Maximum amount of nodes with the same IP in discv5 routing table buckets discv5-bits-per-hop 1 Kademlia's b variable, increase for less hops per lookup","s":"Discv5 config","u":"/guides/nwaku/config-options","h":"#discv5-config","p":147},{"i":174,"t":"Name Default Value Description peer-exchange false Enable waku peer exchange protocol (responder side): true|false peer-exchange-node Peer multiaddr to send peer exchange requests to. (enables peer exchange protocol requester side)","s":"Waku peer exchange config","u":"/guides/nwaku/config-options","h":"#waku-peer-exchange-config","p":147},{"i":176,"t":"Name Default Value Description websocket-support false Enable websocket: true|false websocket-port 8000 WebSocket listening port websocket-secure-support false Enable secure websocket: true|false websocket-secure-key-path Secure websocket key path: '/path/to/key.txt' websocket-secure-cert-path Secure websocket Certificate path: '/path/to/cert.txt' tip To configure your node using the provided configuration options, have a look at the Node Configuration Methods guide.","s":"WebSocket config","u":"/guides/nwaku/config-options","h":"#websocket-config","p":147},{"i":178,"t":"caution Currently, the JavaScript Waku SDK (@waku/sdk) is NOT compatible with React Native. We plan to add support for React Native in the future. The @waku/react package provides components and UI adapters to integrate @waku/sdk into React applications effortlessly. This guide provides detailed steps for using @waku/react in your project.","s":"Build React DApps Using @waku/react","u":"/guides/js-waku/use-waku-react","h":"","p":177},{"i":180,"t":"First, set up a project using any production-grade React framework or an existing React application. For this guide, we will create a boilerplate using ViteJS: NPM Yarn npm create vite@latest [PROJECT DIRECTORY] -- --template react yarn create vite [PROJECT DIRECTORY] --template react Next, install the required packages for integrating @waku/sdk using your preferred package manager: NPM Yarn npm install @waku/react @waku/sdk protobufjs yarn add @waku/react @waku/sdk protobufjs","s":"Install the dependencies","u":"/guides/js-waku/use-waku-react","h":"#install-the-dependencies","p":177},{"i":182,"t":"In the main.jsx file, which serves as the entry point for a React app, we will set up the LightNodeProvider context provider to wrap the entire application within the Waku provider. Import the following on top of your file: src/main.jsx import { LightNodeProvider } from \"@waku/react\"; // Set the Light Node options const NODE_OPTIONS = { defaultBootstrap: true }; ReactDOM.createRoot(document.getElementById('root')).render( // Use the Light Node context provider , ) Next, create and start a Light Node using the useWaku() function within the App.jsx file: src/App.jsx import { useWaku } from \"@waku/react\"; function App() { // Create and start a Light Node const { node, error, isLoading } = useWaku(); // \"node\" is the created Light Node // \"error\" captures any error that occurs during node creation // \"isLoading\" indicates whether the node is still being created }","s":"Initialise the Waku provider","u":"/guides/js-waku/use-waku-react","h":"#initialise-the-waku-provider","p":177},{"i":184,"t":"Let's build a user interface for sending messages and viewing past messages, modify the App.jsx file with the following code block: src/App.jsx import { useState, useEffect } from 'react'; import { useWaku } from \"@waku/react\"; import { createEncoder, createDecoder } from \"@waku/sdk\"; import protobuf from 'protobufjs'; import './App.css' function App() { const [inputMessage, setInputMessage] = useState(\"\"); const [messages, setMessages] = useState([]); // Update the inputMessage state as the user input changes const handleInputChange = (e) => { setInputMessage(e.target.value); }; // Create and start a Light Node const { node, error, isLoading } = useWaku(); // Create a message encoder and decoder const contentTopic = \"/waku-react-guide/1/chat/proto\"; const encoder = createEncoder({ contentTopic }); const decoder = createDecoder(contentTopic); // Create a message structure using Protobuf const ChatMessage = new protobuf.Type(\"ChatMessage\") .add(new protobuf.Field(\"timestamp\", 1, \"uint64\")) .add(new protobuf.Field(\"message\", 2, \"string\")); // Send the message using Light Push const sendMessage = async () => {} return ( <>

Waku React Demo

{messages.map((message, index) => (
{new Date(message.timestamp).toUTCString()}
{message.message}
))}
) } export default App info In the code above, we also created a message encoder and decoder using the createEncoder() and createDecoder() functions, along with the application message structure with Protobuf. Next, modify the App.css file with the following code block: src/App.css #root { margin: 0 auto; } .chat-interface { display: flex; flex-direction: column; height: 100vh; border: 1px solid #ccc; } .chat-body { flex-grow: 1; overflow-y: auto; padding: 10px; } .message-text { background-color: #f1f1f1; color: #000; padding: 10px; margin-bottom: 10px; } .chat-footer { display: flex; padding: 10px; background-color: #f1f1f1; align-items: center; } #message-input { flex-grow: 1; border-radius: 4px; padding: 10px; margin-right: 10px; } .send-button { background-color: #007bff; border-radius: 4px; }","s":"Build the application interface","u":"/guides/js-waku/use-waku-react","h":"#build-the-application-interface","p":177},{"i":186,"t":"To send messages in our application, we need to modify the sendMessage() function to serialize user input into our Protobuf structure and push it to the network using the useLightPush() function: src/App.jsx import { useLightPush } from \"@waku/react\"; function App() { // Bind push method to a node and encoder const { push } = useLightPush({ node, encoder }); // Send the message using Light Push const sendMessage = async () => { if (!push || inputMessage.length === 0) return; // Create a new message object const timestamp = Date.now(); const protoMessage = ChatMessage.create({ timestamp: timestamp, message: inputMessage }); // Serialise the message and push to the network const payload = ChatMessage.encode(protoMessage).finish(); const { recipients, errors } = await push({ payload, timestamp }); // Check for errors if (errors.length === 0) { setInputMessage(\"\"); console.log(\"MESSAGE PUSHED\"); } else { console.log(errors); } }; }","s":"Send messages using light push","u":"/guides/js-waku/use-waku-react","h":"#send-messages-using-light-push","p":177},{"i":188,"t":"To display messages in our application, we need to use the useFilterMessages() function to create a Filter subscription, receive incoming messages, and render them in our interface: src/App.jsx import { useFilterMessages } from \"@waku/react\"; function App() { // Receive messages from Filter subscription const { messages: filterMessages } = useFilterMessages({ node, decoder }); // Render the list of messages useEffect(() => { setMessages(filterMessages.map((wakuMessage) => { if (!wakuMessage.payload) return; return ChatMessage.decode(wakuMessage.payload); })); }, [filterMessages]); }","s":"Receive messages using filter","u":"/guides/js-waku/use-waku-react","h":"#receive-messages-using-filter","p":177},{"i":190,"t":"To display messages from the past, we need to retrieve them from the Store protocol using the useStoreMessages() function when our application initialises and then render them alongside newly received messages: src/App.jsx import { useFilterMessages, useStoreMessages } from \"@waku/react\"; function App() { // Query Store peers for past messages const { messages: storeMessages } = useStoreMessages({ node, decoder }); // Receive messages from Filter subscription const { messages: filterMessages } = useFilterMessages({ node, decoder }); // Render both past and new messages useEffect(() => { const allMessages = storeMessages.concat(filterMessages); setMessages(allMessages.map((wakuMessage) => { if (!wakuMessage.payload) return; return ChatMessage.decode(wakuMessage.payload); })); }, [filterMessages, storeMessages]); } info To explore the available Store query options, have a look at the Retrieve Messages Using Store Protocol guide. tip You have successfully integrated @waku/sdk into a React application using the @waku/react package. Have a look at the web-chat example for a working demo and the Building a Tic-Tac-Toe Game with Waku tutorial to learn more.","s":"Retrieve messages using store","u":"/guides/js-waku/use-waku-react","h":"#retrieve-messages-using-store","p":177},{"i":192,"t":"How can I run a Waku node? Check out the Run Nwaku with Docker Compose guide to learn the simplest and fastest way to run a node. You can also check the comprehensive Run a Nwaku Node guide to explore other options like downloading binaries and building from source. What are the system requirements for running a node? We recommend running a nwaku node with at least 2GB of RAM, especially if WSS is enabled. If running just a Relay node, 0.5GB of RAM is sufficient. How can I interact with my running nwaku node? You can interact with a running nwaku node using the REST API interface or the JavaScript Waku SDK. How can I view the logs of a nwaku node running in Docker? To check your node logs in Docker, use the command: \"docker-compose logs -f nwaku\" What configuration methods are available for nwaku nodes? You can configure Nwaku nodes using command line options and flags, environment variables, and TOML configuration files. Check out the Node Configuration Methods guide to understand their usage and priority. How can I configure my nwaku node before running? Check out the Node Configuration Options guide for available node configuration options, their default values and descriptions. For examples of common configuration use cases, visit the Node Configuration Examples guide. What peer discovery mechanisms are available for nwaku nodes, and how can I configure them? You can configure peer discovery for nwaku nodes through options like Static Peers, DNS Discovery, DiscV5, and Peer Exchange. Check out the Configure Peer Discovery guide for setting up your node. How do I find my nwaku node's addresses for peer discovery? The node listening and ENR addresses can be found through the node's logs and REST API. Check out the Find the node addresses section to understand how to locate your node addresses.","s":"Nwaku FAQ","u":"/guides/nwaku/faq","h":"","p":191},{"i":194,"t":"This guide provides detailed steps to build and run a nwaku node in a Docker container. If you prefer a pre-configured setup with a monitoring dashboard, see the Run Nwaku with Docker Compose guide.","s":"Run Nwaku in a Docker Container","u":"/guides/nwaku/run-docker","h":"","p":193},{"i":196,"t":"Ensure Docker is installed on your system using the appropriate instructions provided in the Docker documentation.","s":"Prerequisites","u":"/guides/nwaku/run-docker","h":"#prerequisites","p":193},{"i":198,"t":"The Nwaku Docker images are available on the Docker Hub public registry under the statusteam/nim-waku repository. Please visit statusteam/nim-waku/tags for images of specific releases. You can also build the Docker image locally: # Clone the repository git clone --recurse-submodules https://github.com/waku-org/nwaku cd nwaku # Build docker image make docker-image","s":"Get Docker image","u":"/guides/nwaku/run-docker","h":"#get-docker-image","p":193},{"i":200,"t":"Run nwaku in a new Docker container: docker run [OPTIONS] [IMAGE] [ARG...] OPTIONS are your selected Docker options IMAGE is the image and tag you pulled from the registry or built locally ARG... is the list of arguments for your node configuration options Run nwaku using the most typical configuration: docker run -i -t -p 60000:60000 -p 9000:9000/udp statusteam/nim-waku:v0.20.0 \\ --dns-discovery=true \\ --dns-discovery-url=enrtree://AIRVQ5DDA4FFWLRBCHJWUWOO6X6S4ZTZ5B667LQ6AJU6PEYDLRD5O@sandbox.waku.nodes.status.im \\ --discv5-discovery=true \\ --nat=extip:[YOUR PUBLIC IP] # or, if you are behind a nat: --nat=any To find your public IP, use: dig TXT +short o-o.myaddr.l.google.com @ns1.google.com | awk -F'\"' '{ print $2}' tip We recommend using explicit port mappings (-p) when exposing ports accessible from outside the host (listening and discovery ports, API servers). Congratulations! You have successfully built and started a nwaku node in a Docker container. Have a look at the Node Configuration Examples guide to learn how to configure nwaku for different use cases.","s":"Run Docker container","u":"/guides/nwaku/run-docker","h":"#run-docker-container","p":193},{"i":202,"t":"This guide provides detailed steps to configure a nwaku node to discover and connect with peers in the Waku Network. info You can configure a nwaku node to use multiple peer discovery mechanisms simultaneously.","s":"Configure Peer Discovery","u":"/guides/nwaku/configure-discovery","h":"","p":201},{"i":204,"t":"You can provide static peers to a nwaku node during startup using the staticnode configuration option. To connect to multiple peers on startup, repeat the staticnode option: ./build/wakunode2 \\ --staticnode=[PEER MULTIADDR 1] \\ --staticnode=[PEER MULTIADDR 2] For example, consider a nwaku node that connects to two static peers on the same local host (IP: 0.0.0.0) using TCP ports 60002 and 60003: ./build/wakunode2 \\ --staticnode=/ip4/0.0.0.0/tcp/60002/p2p/16Uiu2HAkzjwwgEAXfeGNMKFPSpc6vGBRqCdTLG5q3Gmk2v4pQw7H \\ --staticnode=/ip4/0.0.0.0/tcp/60003/p2p/16Uiu2HAmFBA7LGtwY5WVVikdmXVo3cKLqkmvVtuDu63fe8safeQJ","s":"Configure static peers","u":"/guides/nwaku/configure-discovery","h":"#configure-static-peers","p":201},{"i":206,"t":"To enable DNS Discovery in a nwaku node, use the following configuration options: dns-discovery: Enables DNS Discovery on the node (disabled by default). dns-discovery-url: URL for DNS node list in the format enrtree://@ where is the fully qualified domain name and is the base32 encoding of the compressed 32-byte public key that signed the list at that location. dns-discovery-name-server (optional): DNS name server IPs to query. You can repeat this option to provide multiple DNS name servers. ./build/wakunode2 \\ --dns-discovery=true \\ --dns-discovery-url=enrtree://[PUBLIC KEY]@[DOMAIN NAME] \\ --dns-discovery-name-server=[DNS NAME SERVER IP] info If you omit the dns-discovery-name-server option, nwaku will attempt to use the CloudFlare servers 1.1.1.1 and 1.0.0.1. For example, consider a nwaku node that enables DNS Discovery, connects to a DNS node list, and queries the IPs 8.8.8.8 and 8.8.4.4: ./build/wakunode2 \\ --dns-discovery=true \\ --dns-discovery-url=enrtree://AIRVQ5DDA4FFWLRBCHJWUWOO6X6S4ZTZ5B667LQ6AJU6PEYDLRD5O@sandbox.waku.nodes.status.im \\ --dns-discovery-name-server=8.8.8.8 \\ --dns-discovery-name-server=8.8.4.4","s":"Configure DNS discovery","u":"/guides/nwaku/configure-discovery","h":"#configure-dns-discovery","p":201},{"i":208,"t":"To enable Discv5 in a nwaku node, use the following configuration options: discv5-discovery: Enables Discv5 on the node (disabled by default). discv5-bootstrap-node: ENR for Discv5 routing table bootstrap node. You can repeat this option to provide multiple bootstrap entries. ./build/wakunode2 \\ --discv5-discovery=true \\ --discv5-bootstrap-node=[DISCV5 ENR BOOTSTRAP ENTRY 1] \\ --discv5-bootstrap-node=[DISCV5 ENR BOOTSTRAP ENTRY 2] For example, consider a nwaku node that enables Discv5 and bootstraps its routing table using a static ENR: ./build/wakunode2 \\ --discv5-discovery=true \\ --discv5-bootstrap-node=enr:-IO4QDxToTg86pPCK2KvMeVCXC2ADVZWrxXSvNZeaoa0JhShbM5qed69RQz1s1mWEEqJ3aoklo_7EU9iIBcPMVeKlCQBgmlkgnY0iXNlY3AyNTZrMaEDdBHK1Gx6y_zv5DVw5Qb3DtSOMmVHTZO1WSORrF2loL2DdWRwgiMohXdha3UyAw info When Discv5 is enabled and used with DNS Discovery, the nwaku node will attempt to bootstrap the Discv5 routing table by extracting ENRs from peers discovered through DNS.","s":"Configure Discv5","u":"/guides/nwaku/configure-discovery","h":"#configure-discv5","p":201},{"i":210,"t":"To enable Peer Exchange in a nwaku node, use the following configuration options: peer-exchange: Enables Peer Exchange on the node as a responder (disabled by default). peer-exchange-node (optional): Multiaddr for bootstrap node with the peer exchange protocol enabled. ./build/wakunode2 \\ --peer-exchange=true \\ --peer-exchange-node=[PEER MULTIADDR WITH EXCHANGE ENABLED] For example, consider two nwaku nodes configured as a server (peer exchange responder node) and client (node using peer exchange) on the same local host (IP: 0.0.0.0): Server: Nwaku Node with Peer Exchange Enabled ./build/wakunode2 --peer-exchange=true Client: Nwaku Node Bootstrapping with Peer Exchange ./build/wakunode2 \\ --tcp-port=30305 \\ --ports-shift=1 \\ --peer-exchange-node=/ip4/0.0.0.0/tcp/60000/p2p/16Uiu2HAmLCe6zVqCS6KMqqRbbhyoJjfYZGr1Q3thTSbyKzibQkFR info nwaku provides a relay-peer-exchange option via libp2p for peer exchange, allowing network growth through neighbouring nodes. However, this feature can compromise security and network robustness, so we recommend only using it in high-trust environments.","s":"Configure peer exchange","u":"/guides/nwaku/configure-discovery","h":"#configure-peer-exchange","p":201},{"i":212,"t":"Nwaku is a lightweight and robust Nim client for running a Waku node, equipped with tools to monitor and maintain a running node. Nwaku is highly configurable, enabling operators to select the protocols they want to support based on their needs, motivations, and available resources. This guide provides detailed steps to download, build, configure, and connect a nwaku node to the Waku Network. It also includes interacting with the node and finding its addresses. info We recommend running a nwaku node with at least 2GB of RAM, especially if WSS is enabled. If running just a Relay node, 0.5GB of RAM is sufficient.","s":"Run a Nwaku Node","u":"/guides/nwaku/run-node","h":"","p":211},{"i":214,"t":"To run a node, you must have the nwaku binary. Nwaku provides multiple options for running a node: Run nwaku in Docker (recommended)​ Description Documentation Docker Compose Run a nwaku node with Docker Compose Run Nwaku with Docker Compose Docker Container Run a nwaku node in a Docker Container Run Nwaku in a Docker Container tip We recommend using Docker Compose to run a node because it's the simplest and fastest way to configure and run one. Download the binary​ Description Documentation Precompiled Binary Download a precompiled binary of the nwaku node Download Nwaku Binary Nightly Release Try the latest nwaku updates without compiling the binaries Download Nightly Release Build the binary​ Description Documentation Build from Source Build the node from the nwaku source code Build Nwaku from Source tip You can run the nwaku binaries and Docker images on cloud service providers like Google Cloud, Microsoft Azure, Amazon Web Services, and DigitalOcean.","s":"Get the node binary","u":"/guides/nwaku/run-node","h":"#get-the-node-binary","p":211},{"i":216,"t":"Once you have gotten the nwaku binary, run it using the default configuration: # Run with default configuration ./build/wakunode2 # See available command line options ./build/wakunode2 --help tip To learn how to customise the configuration of a nwaku node, have a look at the Node Configuration Methods and Node Configuration Examples guides.","s":"Run the node","u":"/guides/nwaku/run-node","h":"#run-the-node","p":211},{"i":218,"t":"To join the Waku Network, nodes must bootstrap for an entry point before discovering more peers. Nwaku provides multiple peer discovery mechanisms: Description Documentation Static Peers Configure the bootstrap nodes that nwaku should establish connections upon startup Configure Static Peers DNS Discovery Enable nwaku to bootstrap nodes using the DNS Discovery mechanism Configure DNS Discovery Discv5 Enable nwaku to discover peers using the Discv5 mechanism Configure Discv5 Peer Exchange Enable Peer Exchange protocol for light nodes to request peers from your nwaku node Configure Peer Exchange info You can configure a nwaku node to use multiple peer discovery mechanisms simultaneously.","s":"Bootstrap the node","u":"/guides/nwaku/run-node","h":"#bootstrap-the-node","p":211},{"i":220,"t":"You can interact with a running nwaku node through the REST API, such as querying the node information using the Get node info endpoint: Request Response curl --location 'http://127.0.0.1:8645/debug/v1/info' \\ --header 'Accept: application/json' { \"listenAddresses\": [ \"/ip4/0.0.0.0/tcp/60000/p2p/16Uiu2HAmUbPquFQqje3jiqoB5YoiUbBya59NB4qqEzeiTNGHeA6w\" ], \"enrUri\": \"enr:-Iu4QCQZXZDb_JsYmLoYor0F5E_95HbIywgO_wgx2rIdDbmCJZkTzmlCr0wmMzV47lgik_tVwww5mIng90Ris83TisMBgmlkgnY0gmlwhAAAAACJc2VjcDI1NmsxoQPszztG-Ev52ZB7tk0jF8s6Md4KvyY_rhzNZokaaB_ABIN0Y3CC6mCFd2FrdTIB\" } info The listenAddresses field stores the node's listening addresses, while the enrUri field stores the discoverable ENR URI for peer discovery. tip We suggest configuring WebSocket transport for your node to enable support and serving of browser peers using @waku/sdk.","s":"Interact with the node","u":"/guides/nwaku/run-node","h":"#interact-with-the-node","p":211},{"i":222,"t":"You can find the addresses of a running node through its logs or by calling the Get node info endpoint of the REST API. info When starting the node, nwaku will display all the public listening and discovery addresses at the INFO log level.","s":"Find the node addresses","u":"/guides/nwaku/run-node","h":"#find-the-node-addresses","p":211},{"i":224,"t":"Look for the log entry that begins with Listening on, for example: Nwaku Log Output INF 2023-06-15 16:09:54.448+01:00 Listening on topics=\"waku node\" tid=1623445 file=waku_node.nim:922 full=[/ip4/0.0.0.0/tcp/60000/p2p/16Uiu2HAmQCsH9V81xoqTwGuT3qwkZWbwY1TtTQwpr3DjHU2TSwMn][/ip4/0.0.0.0/tcp/8000/ws/p2p/16Uiu2HAmQCsH9V81xoqTwGuT3qwkZWbwY1TtTQwpr3DjHU2TSwMn] # Listening TCP transport address /ip4/0.0.0.0/tcp/60000/p2p/16Uiu2HAmQCsH9V81xoqTwGuT3qwkZWbwY1TtTQwpr3DjHU2TSwMn # Listening WebSocket address /ip4/0.0.0.0/tcp/8000/ws/p2p/16Uiu2HAmQCsH9V81xoqTwGuT3qwkZWbwY1TtTQwpr3DjHU2TSwMn","s":"Listening addresses","u":"/guides/nwaku/run-node","h":"#listening-addresses","p":211},{"i":226,"t":"A nwaku node can encode its addressing information in an Ethereum Node Record (ENR) following the WAKU2-ENR specification, primarily for peer discovery. ENR for DNS discovery​ Look for the log entry that begins with DNS: discoverable ENR, for example: Nwaku Log Output INF 2023-06-15 16:09:54.448+01:00 DNS: discoverable ENR topics=\"waku node\" tid=1623445 file=waku_node.nim:923 enr=enr:-Iu4QBKYj8Ovxwz4fIalxZ_1a8dOCU2WC-1LQrcBCCb4Np93f9-UuSZXn3vagJL1S3k3hwRYfOp3JSbW7_VqwtqMIeMBgmlkgnY0gmlwhAAAAACJc2VjcDI1NmsxoQOrmyV59dAzY4ZKrvrj32VOoZbLby8dCKFnXnqhIdQ0NYN0Y3CC6mCFd2FrdTIB # ENR the node addresses are encoded in enr:-Iu4QBKYj8Ovxwz4fIalxZ_1a8dOCU2WC-1LQrcBCCb4Np93f9-UuSZXn3vagJL1S3k3hwRYfOp3JSbW7_VqwtqMIeMBgmlkgnY0gmlwhAAAAACJc2VjcDI1NmsxoQOrmyV59dAzY4ZKrvrj32VOoZbLby8dCKFnXnqhIdQ0NYN0Y3CC6mCFd2FrdTIB ENR for Discv5​ Look for the log entry that begins with Discv5: discoverable ENR, for example: Nwaku Log Output INF 2023-06-15 16:09:54.448+01:00 Discv5: discoverable ENR topics=\"waku node\" tid=1623445 file=waku_node.nim:924 enr=enr:-IO4QDxToTg86pPCK2KvMeVCXC2ADVZWrxXSvNZeaoa0JhShbM5qed69RQz1s1mWEEqJ3aoklo_7EU9iIBcPMVeKlCQBgmlkgnY0iXNlY3AyNTZrMaEDdBHK1Gx6y_zv5DVw5Qb3DtSOMmVHTZO1WSORrF2loL2DdWRwgiMohXdha3UyAw # ENR the node addresses are encoded in enr:-IO4QDxToTg86pPCK2KvMeVCXC2ADVZWrxXSvNZeaoa0JhShbM5qed69RQz1s1mWEEqJ3aoklo_7EU9iIBcPMVeKlCQBgmlkgnY0iXNlY3AyNTZrMaEDdBHK1Gx6y_zv5DVw5Qb3DtSOMmVHTZO1WSORrF2loL2DdWRwgiMohXdha3UyAw Congratulations! You have successfully started, configured, and connected a nwaku node to the Waku Network. Have a look at the Node Configuration Examples guide to learn how to configure nwaku for different use cases.","s":"Discoverable ENR addresses","u":"/guides/nwaku/run-node","h":"#discoverable-enr-addresses","p":211},{"i":228,"t":"This guide provides detailed steps to configure a nwaku node for different use cases.","s":"Node Configuration Examples","u":"/guides/nwaku/configure-nwaku","h":"","p":227},{"i":230,"t":"To join the Waku Network, nodes must bootstrap for an entry point before discovering more peers. Nwaku provides multiple peer discovery mechanisms: Configure Static Peers Configure DNS Discovery Configure Discv5 Configure Peer Exchange","s":"Connect to other peers","u":"/guides/nwaku/configure-nwaku","h":"#connect-to-other-peers","p":227},{"i":232,"t":"You can set up an IPv4 DNS domain name that resolves to the public IPv4 address of a node using the dns4-domain-name option. This allows the node's publicly announced multiaddrs to use the /dns4 scheme. ./build/wakunode2 --dns4-domain-name=[DOMAIN NAME] For example, consider the domain name nwakunode.com, which resolves to a nwaku node: ./build/wakunode2 --dns4-domain-name=nwakunode.com Browser nodes can only connect to nodes with a domain name and secure WebSocket (wss) configured. These nodes will generate a discoverable ENR with /wss as the multiaddr and /dns4 as the domain name. This configuration is essential for verifying domain certificates when establishing a secure connection. info This example describes configuring a domain name that resolves to your node's IP address and is unrelated to DNS Discovery. tip You can use the domain name provided by your cloud provider to configure the domain name for your node.","s":"Configure a domain name","u":"/guides/nwaku/configure-nwaku","h":"#configure-a-domain-name","p":227},{"i":234,"t":"To enable message caching and serve them to network peers, enable the Store protocol using the following configuration options: store: Enables storing messages to serve them to peers (disabled by default). store-message-retention-policy: Retention policy of the store node (how long messages will be stored). Three different retention policies are supported: Time retention policy: time: (e.g., time:14400) Capacity retention policy: capacity: (e.g, capacity:25000) Size retention policy: size: (e.g, size:512MB or size:10GB) Set this option to none to disable the retention policy. If you omit this option, it will default to time:172800 (48 hours). store-message-db-url: Database connection URL for storing messages in the SQLAlchemy database URL format. Setting this option to an empty string will instruct the node to use the fallback in-memory message store. If you omit this option, it will default to sqlite://store.sqlite3. ./build/wakunode2 \\ --store=true \\ --store-message-retention-policy=[MESSAGE RETENTION POLICY] \\ --store-message-db-url=[DATABASE CONNECTION URL] For example, consider a nwaku node that is configured to be a Store protocol and retain messages received in the last 21600 seconds (6 hours): ./build/wakunode2 \\ --store=true \\ --store-message-retention-policy=time:21600 \\ --store-message-db-url=sqlite://store.sqlite3 You can configure nwaku as a Store client using the storenode option. This allows the node to query peers for historical messages but not store any message itself. ./build/wakunode2 --storenode=[STORE PEER MULTIADDR] For example, consider a nwaku node that does not store messages but can query peers for historical messages: ./build/wakunode2 --storenode=/dns4/node-01.ac-cn-hongkong-c.waku.sandbox.status.im/tcp/30303/p2p/16Uiu2HAmSJvSJphxRdbnigUV5bjRRZFBhTtWFTSyiKaQByCjwmpV","s":"Configure store protocol and message store","u":"/guides/nwaku/configure-nwaku","h":"#configure-store-protocol-and-message-store","p":227},{"i":236,"t":"Nodes generate new random key pairs at each boot, leading to different multiaddrs. To maintain consistency, you can use a pre-generated private key with the nodekey option: ./build/wakunode2 --nodekey=[NODE PRIVATE KEY] This option takes a Secp256k1 private key (64-char hex string). On Linux, you can use the OpenSSL rand command for a pseudo-random 32-byte hex string: openssl rand -hex 32 # 286cae9f2990bfc49dafdd3a9e737f56ddba3656e5e427108cef456fb67680e8 On Linux, you can create a reusable key file using OpenSSL. To get the 32-byte private key in hex format, use the ecparam command and some standard utilities: # Generate key file openssl ecparam -genkey -name secp256k1 -out my_private_key.pem # Extract 32-byte private key openssl ec -in my_private_key.pem -outform DER | tail -c +8 | head -c 32| xxd -p -c 32 # read EC key # writing EC key # 286cae9f2990bfc49dafdd3a9e737f56ddba3656e5e427108cef456fb67680e8 You can use the output 286cae9f2990bfc49dafdd3a9e737f56ddba3656e5e427108cef456fb67680e8 as a Node Key for nwaku: ./build/wakunode2 --nodekey=286cae9f2990bfc49dafdd3a9e737f56ddba3656e5e427108cef456fb67680e8","s":"Generate and configure a node key","u":"/guides/nwaku/configure-nwaku","h":"#generate-and-configure-a-node-key","p":227},{"i":238,"t":"WebSocket is the only transport method browser nodes support using @waku/sdk. To enable WebSocket in nwaku to serve browser peers, use the following configuration options: websocket-support: Enables WebSocket (ws) on the node (disabled by default). websocket-port (optional): WebSocket listening port. If you omit this option, it will default to 8000. websocket-secure-support: Enables Secure WebSocket (wss) on the node (disabled by default). websocket-secure-key-path: Secure WebSocket key path. websocket-secure-cert-path: Secure WebSocket Certificate path. ./build/wakunode2 \\ --websocket-support=true \\ --websocket-port=[WEBSOCKET LISTENING PORT] \\ --websocket-secure-support=true \\ --websocket-secure-key-path=[SECURE WEBSOCKET KEY PATH] \\ --websocket-secure-cert-path=[SECURE WEBSOCKET CERTIFICATE PATH] For example, consider a nwaku node that enabled WebSocket (unencrypted) for local testing on port 8001: ./build/wakunode2 \\ --websocket-support=true \\ --websocket-port=8001 Consider a nwaku node that enabled Secure WebSocket (encrypted) using its key and certificate (privkey.pem and fullchain.pem) on port 8002: ./build/wakunode2 \\ --websocket-secure-support=true \\ --websocket-secure-key-path=privkey.pem \\ --websocket-secure-cert-path=fullchain.pem \\ --websocket-port=8002 tip You can use Let's Encrypt or Certbot to generate a valid certificate for your nwaku node: sudo certbot certonly -d ","s":"Configure WebSocket transport","u":"/guides/nwaku/configure-nwaku","h":"#configure-websocket-transport","p":227},{"i":240,"t":"Nwaku provides a REST API to interact with the node and Waku Network. To enable the REST API, use the following configuration options: rest: Enables the REST API server on the node (disabled by default). rest-address (optional): Listening address of the REST API server. If you omit this option, it will default to 127.0.0.1. rest-port (optional): Listening port of the REST API server. If you omit this option, it will default to 8645. rest-relay-cache-capacity (optional): Capacity of the Relay REST API message cache. If you omit this option, it will default to 30. rest-admin (optional): Enables access to REST admin API (disabled by default). rest-private (optional): Enables access to REST private API (disabled by default). ./build/wakunode2 \\ --rest=true \\ --rest-address=[REST SERVER LISTENING ADDRESS] \\ --rest-port=[REST SERVER LISTENING PORT] \\ --rest-relay-cache-capacity=[MESSAGE CACHE CAPACITY] \\ --rest-admin=[true|false] \\ --rest-private=[true|false] For example, consider a nwaku node that enabled the REST API server on port 9000: ./build/wakunode2 \\ --rest=true \\ --rest-port=9000 \\ --rest-address=127.0.0.1 Consider a nwaku node that enabled the REST admin and private API with a message cache capacity of 100: ./build/wakunode2 \\ --rest=true \\ --rest-admin=true \\ --rest-private=true \\ --rest-relay-cache-capacity=100","s":"Configure REST API server","u":"/guides/nwaku/configure-nwaku","h":"#configure-rest-api-server","p":227},{"i":242,"t":"To enable nwaku to serve light clients, enable the Filter protocol using filter option: ./build/wakunode2 --filter=true You can configure nwaku as a Filter client using the filternode and filter-timeout options. This allows the node to request content filtering of messages from peers. ./build/wakunode2 \\ --filternode=[FILTER PEER MULTIADDR] \\ --filter-timeout=[FILTER PEER TIMEOUT] For example, consider a nwaku node that requests content filtering of messages from peers with a timeout of 21600 seconds (6 hours): ./build/wakunode2 \\ --filternode=/dns4/node-01.ac-cn-hongkong-c.waku.sandbox.status.im/tcp/30303/p2p/16Uiu2HAmSJvSJphxRdbnigUV5bjRRZFBhTtWFTSyiKaQByCjwmpV \\ --filter-timeout=21600 info If you omit the filter-timeout option, it will default to 14400 seconds (4 hours).","s":"Configure filter protocol","u":"/guides/nwaku/configure-nwaku","h":"#configure-filter-protocol","p":227},{"i":244,"t":"To enable nwaku to serve light clients, enable the Light Push protocol using the lightpush option: ./build/wakunode2 --lightpush=true You can configure nwaku as a Light Push client using the lightpushnode option. This allows the node to request lightpush of published messages from peers. ./build/wakunode2 --lightpushnode=[LIGHT PUSH PEER MULTIADDR] For example, consider a nwaku node that requests lightpush of published messages from peers: ./build/wakunode2 --lightpushnode=/dns4/node-01.ac-cn-hongkong-c.waku.sandbox.status.im/tcp/30303/p2p/16Uiu2HAmSJvSJphxRdbnigUV5bjRRZFBhTtWFTSyiKaQByCjwmpV","s":"Configure light push protocol","u":"/guides/nwaku/configure-nwaku","h":"#configure-light-push-protocol","p":227},{"i":246,"t":"When using a reverse proxy server for SSL/TLS encryption, you only want to announce the proxy server's IP or domain. Nwaku provides the ext-multiaddr-only and ext-multiaddr options for specifying published multiaddr: ./build/wakunode2 \\ --ext-multiaddr-only=true \\ --ext-multiaddr=[MULTIADDR TO PUBLISH] info The ext-multiaddr-only option takes precedence over the nat and dns4-domain-name options, using the values provided by the ext-multiaddr option instead.","s":"Run nwaku behind a reverse proxy","u":"/guides/nwaku/configure-nwaku","h":"#run-nwaku-behind-a-reverse-proxy","p":227},{"i":248,"t":"Content Topics are metadata strings set by developers on outgoing messages to facilitate protocol-level features like selectively processing incoming messages (Relay or Filter) and retrieving historical messages (Store) that meet specific filtering criteria. Have a look at the WAKU2-TOPICS specification to learn more.","s":"Content Topics","u":"/learn/concepts/content-topics","h":"","p":247},{"i":250,"t":"Here is the recommended format for content topics: /{application-name}/{version}/{content-topic-name}/{encoding} application-name: This is the unique name of your decentralised application (DApp) to prevent conflicts with other DApps. version: Typically starting at 1, this field helps track breaking changes in your messages. content-topic-name: The specific name of the content topic used for filtering. encoding: The message encoding or serialisation format, with Protocol Buffers (proto) being the recommended choice. For example, if your DApp is called SuperCrypto and it allows users to receive notifications and send private messages, you can consider using the following content topics: /supercrypto/1/notification/proto /supercrypto/1/private-message/proto tip While you can choose any encoding format for your Content Topic, we highly recommend using Protocol Buffers (proto) because of its efficiency. Choosing a lightweight format ensures optimal performance of your DApp.","s":"Naming format","u":"/learn/concepts/content-topics","h":"#naming-format","p":247},{"i":252,"t":"When choosing a content topic, it is essential to consider the privacy implications. Here are several factors to keep in mind:","s":"Naming considerations","u":"/learn/concepts/content-topics","h":"#naming-considerations","p":247},{"i":254,"t":"The Filter, Store, and Light Push protocols share content topics with peers, allowing them to link IP and content topic interests. The Relay protocol, using GossipSub, provides recipient anonymity, which can be compromised if the content topic exposes user information. For example, instead of using Personally Identifiable Information (PII) in the content topic (e.g., a public key), you can create buckets (e.g., based on the first 4 bytes of the public key hash). info Waku is developing privacy-preserving features like Anonymous Filter Subscription for the Filter protocol and Anonymous Query for the Store protocol to hide content topics from potential adversaries.","s":"Protocols disclose content topics to peers","u":"/learn/concepts/content-topics","h":"#protocols-disclose-content-topics-to-peers","p":247},{"i":256,"t":"You can increase k-anonymity within the network by using a unified content topic across the entire application or targeting specific features like notifications or private messages, allowing multiple users to share it. We recommend switching functionality using the Protocol Buffer (proto) message format. By doing so, applications can retain a high granularity and functionality while using a single content topic, preserving user privacy. For example: message NotificationPayload { ... } message FeatureAbcPayload { ... } // By default, all fields in protobuf are optional so only field may be encoded at a time message Payload { NotificationPayload notification = 1; FeatureAbcPayload feature_abc = 2; }","s":"Increasing k-anonymity preserves user anonymity","u":"/learn/concepts/content-topics","h":"#increasing-k-anonymity-preserves-user-anonymity","p":247},{"i":258,"t":"When an application uses a single content topic, all users using request/response protocols (Filter, Store) receive all its messages. For heavy traffic, developers can create buckets by hashing a unique identifier (e.g., recipient's ID, public key, or app domain topic) and adding its first byte to the content topic, like /my-app/0/a/proto. This approach divides traffic into multiple topics, reducing the messages users have to download. Developers can add more first bytes to the content topic over time to improve efficiency and privacy based on messages and user needs. info The k value of k-anonymity equals the number of IDs for which the first character of the hash is \"a\". For example, using a single content topic in an application with 10,000 users results in k = 10,000. However, using the hash ID's first character, k reduces to 10,000 / 16 = 625.","s":"Creating buckets help in distributing traffic","u":"/learn/concepts/content-topics","h":"#creating-buckets-help-in-distributing-traffic","p":247},{"i":260,"t":"nwaku-compose is a ready-to-use Docker Compose setup that runs the following: nwaku node running Relay and Store protocols with RLN enabled. Simple frontend to interact with the node and Waku network to send and receive messages. Grafana metrics dashboard for advanced users and node operators to monitor the node. This guide provides detailed steps to configure, run, monitor, and interact with a nwaku node with nwaku-compose.","s":"Run Nwaku with Docker Compose","u":"/guides/nwaku/run-docker-compose","h":"","p":259},{"i":262,"t":"Git or GitHub Desktop Docker and Docker Compose Ethereum Sepolia WebSocket Endpoint Wallet with Sepolia Ethereum (less than 0.01 Sepolia ETH) A password to protect your RLN membership","s":"Prerequisites","u":"/guides/nwaku/run-docker-compose","h":"#prerequisites","p":259},{"i":264,"t":"git clone https://github.com/waku-org/nwaku-compose cd nwaku-compose","s":"Clone the repository","u":"/guides/nwaku/run-docker-compose","h":"#clone-the-repository","p":259},{"i":266,"t":"Docker Compose reads the ./.env file from the filesystem. You can use .env.example as a template to provide the above values. The recommended process for working with .env files is to duplicate .env.example, rename it as .env, and then make the necessary value edits. cp .env.example .env ${EDITOR} .env caution Ensure that you do NOT include any secrets in the .env.example file, as it could accidentally be shared in the Git repository.","s":"Configure the setup","u":"/guides/nwaku/run-docker-compose","h":"#configure-the-setup","p":259},{"i":268,"t":"The RLN membership is your access key to The Waku Network. Its registration is done on-chain, allowing your nwaku node to send messages decentralised and privately, respecting some rate limits. Other peers won't relay messages that exceed the rate limit. This command registers your membership and saves it in the keystore/keystore.json file: ./register_rln.sh info If you only want to relay traffic without sending messages to the network, you don't need to register for RLN membership.","s":"Register for RLN membership","u":"/guides/nwaku/run-docker-compose","h":"#register-for-rln-membership","p":259},{"i":270,"t":"Start all processes: nwaku node, database for storing messages, and Grafana for metrics. Your RLN membership is loaded into nwaku under the hood: docker-compose up -d View the logs of the node to confirm that it is running correctly: docker-compose logs -f nwaku","s":"Run the node","u":"/guides/nwaku/run-docker-compose","h":"#run-the-node","p":259},{"i":272,"t":"Visit http://localhost:3000/d/yns_4vFVk/nwaku-monitoring to view your node metrics in real time. tip To access Grafana from outside your machine, remove 127.0.0.1 and open the port. Consider setting up a password for Grafana to ensure security.","s":"Interact with the node","u":"/guides/nwaku/run-docker-compose","h":"#interact-with-the-node","p":259},{"i":274,"t":"Your nwaku node provides a REST API on port 8645 for interacting with it: # Get nwaku version curl --location 'http://127.0.0.1:8645/debug/v1/version' # Get nwaku info curl --location 'http://127.0.0.1:8645/debug/v1/info' Send a message to a contentTopic, which all subscribers will receive. Please note that the payload is encoded in base64. curl --location 'http://127.0.0.1:8645/relay/v1/auto/messages' \\ --header 'Content-Type: application/json' \\ --data '{ \"payload\": \"'$(echo -n \"Hello Waku Network - from Anonymous User\" | base64)'\", \"contentTopic\": \"/my-app/2/chatroom-1/proto\" }' Retrieve messages sent to a contentTopic. Please note that this query can be made to any Store node within the network: curl --location 'http://127.0.0.1:8645/store/v1/messages?contentTopics=%2Fmy-app%2F2%2Fchatroom-1%2Fproto&pageSize=50&ascending=true' \\ --header 'Accept: application/json' Congratulations! You have successfully started a nwaku node with RLN enabled using Docker Compose. Have a look at the Node Configuration Examples and Advanced Configuration guides to learn how to configure nwaku for different use cases.","s":"Use the REST API","u":"/guides/nwaku/run-docker-compose","h":"#use-the-rest-api","p":259},{"i":276,"t":"Discv5 is a decentralised and efficient peer discovery mechanism for the Waku Network. It uses a Distributed Hash Table (DHT) for storing ENR records, providing resistance to censorship. Discv5 offers a global view of participating nodes, enabling random sampling for load distribution. It uses bootstrap nodes as an entry point to the network, providing randomised sets of nodes for mesh expansion. Have a look at the Discv5 specification to learn more. Pros​ Decentralised with random sampling from a global view. Continuously researched and improved. Cons​ Requires lots of connections and involves frequent churn. Relies on User Datagram Protocol (UDP), which is not supported in web browsers.","s":"Discv5","u":"/learn/concepts/discv5","h":"","p":275},{"i":278,"t":"DNS Discovery protocol is executed. Alice retrieves Bob's ENR (Ethereum Node Record) from DNS Server. Alice executes the Discv5 protocol with Bob using UDP connection details from ENR. Bob returns Carol's, David's and Erin's ENRs to Alice. Alice decodes ENRs and extracts the details of Carol, David, and Erin's TCP and UDP connections. Alice executes the Discv5 protocol with Carol using UDP connection details from ENR. Carol returns Frank's, Gwen's and Harry's ENRs to Alice. Alice decodes ENRs and extracts Frank's, Gwen's and Harry's TCP and UDP connection details. Alice selects to dial David, Frank and Gwen. Alice dials David, Frank and Gwen over libp2p using TCP connection details from ENRs.","s":"Overview","u":"/learn/concepts/discv5","h":"#overview","p":275},{"i":280,"t":"Built upon the foundation of EIP-1459: Node Discovery via DNS, DNS Discovery allows the retrieval of an ENR tree from the TXT field of a domain name. This innovative approach enables the storage of essential node connection details, including IP, port, and multiaddr, using the standardised ENR format. This bootstrapping method allows anyone to register and publish a domain name for the network, promoting increased decentralisation. Pros​ Low latency, low resource requirements. Easy bootstrap list updates by modifying the domain name, eliminating the need for code changes. Ability to reference a larger list of nodes by including other domain names in the code or ENR tree. Cons​ Vulnerable to censorship: Domain names can be blocked or restricted. Limited scalability: The listed nodes are at risk of being overwhelmed by receiving all queries. Also, operators must provide their ENR to the domain owner for listing.","s":"DNS Discovery","u":"/learn/concepts/dns-discovery","h":"","p":279},{"i":282,"t":"DNS lookup query to retrieve TXT data stored on example.com domain. enrtree-root is returned, and the value of e is the enr-root, the root hash of the node subtree. DNS lookup query to retrieve TXT data stored on .example.com domain. enrtree-branch is returned; this tree contains hashes of node subtrees. DNS lookup query to retrieve TXT data stored on DU...VQ.example.com domain, the first leaf of enrtree-branch. enr record is returned. Returned value is decoded, and peer connection details such as IP address and port are learned.","s":"Overview","u":"/learn/concepts/dns-discovery","h":"#overview","p":279},{"i":284,"t":"When initialising a Waku node, it must connect with other peers to enable message sending, receiving, and retrieval. To achieve this, a discovery mechanism is employed to locate other peers in the network. This process is known as bootstrapping. Once a connection is established, the node must actively seek out additional peers to have: Sufficient peers in the Relay mesh: The goal is to have at least 6 peers in the mesh. This ensures a robust network where messages can be efficiently relayed. Reserve peers for backup: It is essential to have a surplus of peers available as reserves. These reserves are backups when the current peers become overloaded or experience unexpected disconnections. Peers with specific capabilities: The node seeks out peers with specific capabilities, such as Store, Light Push, or Filter. This allows for targeted interactions and enhanced functionality based on the desired capabilities. Waku supports multiple peer discovery mechanisms, such as: Configuring Static Peers Peer Discovery via DNS Discv5 Ambient Peer Discovery Peer Exchange","s":"Peer Discovery","u":"/learn/concepts/peer-discovery","h":"","p":283},{"i":286,"t":"Waku is a unified and cohesive entity that offers a rich ecosystem with three distinct network interaction domains. These domains serve specialised purposes and contribute to the robust functionality of Waku, forming its foundation.","s":"Network Domains","u":"/learn/concepts/network-domains","h":"","p":285},{"i":288,"t":"Peer discovery in Waku facilitates locating other nodes within the network. As a modular protocol, Waku incorporates various discovery mechanisms, such as Discv5 and Peer Exchange. These mechanisms allow developers to choose the most suitable option(s) for their specific use cases and user environments, including mobile phones, desktop browsers, servers, and more.","s":"Discovery domain","u":"/learn/concepts/network-domains","h":"#discovery-domain","p":285},{"i":290,"t":"GossipSub derives its name from the practice within Pub/Sub networks where peers gossip about the messages they have encountered, thus establishing a message delivery network. Waku employs gossiping through Relay to distribute messages across the network. Additionally, Waku introduces RLN Relay, an experimental mechanism that combines privacy preservation and economic spam protection.","s":"Gossip domain","u":"/learn/concepts/network-domains","h":"#gossip-domain","p":285},{"i":292,"t":"Waku provides a set of protocols to optimise its performance in resource-limited environments like low bandwidth or mostly offline scenarios for multiple purposes. Store enables the retrieval of historical messages. Filter efficiently retrieves a subset of messages to conserve bandwidth. Light Push facilitates message publication for nodes with limited bandwidth and short connection windows.","s":"Request/response domain","u":"/learn/concepts/network-domains","h":"#requestresponse-domain","p":285},{"i":294,"t":"Here is a diagram illustrating the interaction between different protocols within the Waku Network. The Pub/Sub topic pubtopic1 serves as a means of routing messages (the network employs a default Pub/Sub topic) and indicates that it is subscribed to messages on that topic for a relay. Node D serves as a Store and is responsible for storing messages. Node A creates a WakuMessage msg1 with Content Topic contentTopic1. Node F requests to get messages filtered by Pub/Sub topic pubtopic1 and Content Topic contentTopic1. Node D subscribes F to this filter and will forward messages that match that filter in the future. Node A publishes msg1 on pubtopic1. The message is sent from Node A to Node B and then forwarded to Node D. Node D, upon receiving msg1, stores the message for future retrieval by other nodes and forwards it to Node C. Node D also pushes msg1 to Node F, informing it about the arrival of a new message. At a later time, Node E comes online and requests messages matching pubtopic1 and contentTopic1 from Node D. Node D responds with msg1 and potentially other messages that match the query.","s":"Overview of protocol interaction","u":"/learn/concepts/network-domains","h":"#overview-of-protocol-interaction","p":285},{"i":296,"t":"Waku applications have the flexibility to embed bootstrap node addresses directly into their codebase. Developers can either use static peers operated by Status or run a node. Pros​ Low latency. Low resource requirements. Cons​ Vulnerable to censorship: Node IPs can be blocked or restricted. Limited scalability: The number of nodes is fixed and cannot easily be expanded. Maintenance challenges: Updating the node list requires modifying the code, which can be cumbersome and involves releasing and deploying.","s":"Static Peers","u":"/learn/concepts/static-peers","h":"","p":295},{"i":298,"t":"Alice establishes connections with Bob and Carol using their node details, which are predefined (hard-coded) into Alice's node.","s":"Overview","u":"/learn/concepts/static-peers","h":"#overview","p":295},{"i":300,"t":"The primary objective of this protocol is to facilitate peer connectivity for resource-limited devices without relying on Discv5. The peer exchange protocol enables light nodes to request peers from other nodes within the network. Have a look at the Peer Exchange specification to learn more. info Peer Exchange enables requesting random peers from other network nodes without revealing information about their connectivity or neighbourhood. Pros​ Low resource requirements. Decentralised with random sampling of nodes from a global view using Discv5. Cons​ Decreased anonymity. Imposes additional load on responder nodes.","s":"Peer Exchange","u":"/learn/concepts/peer-exchange","h":"","p":299},{"i":302,"t":"DNS Discovery protocol is executed. Alice retrieves Bob's websocket multiaddr from DNS Server. Alice dials Bob using libp2p protocols. Alice executes a Peer Exchange query to Bob. Bob returns Carol's and David's ENR to Alice. Alice decodes ENRs and extracts Carol's and David's websocket multiaddrs. Alice dials Carol and David. Alice can now drop the connection with Bob (bootstrap node); Alice has 2 connections to the Waku Network.","s":"Overview","u":"/learn/concepts/peer-exchange","h":"#overview","p":299},{"i":304,"t":"Waku takes a modular approach, providing a range of protocols that enable applications to control the trade-offs involved in the Anonymity Trilemma. This flexibility empowers applications to make informed choices regarding the desired balance between anonymity, scalability, and latency. Here are the main protocols provided by Waku:","s":"Protocols","u":"/learn/concepts/protocols","h":"","p":303},{"i":306,"t":"Relay protocol employs a Pub/Sub architecture to facilitate the sending and receiving of messages among peers. It extends the libp2p GossipSub protocol to create a privacy-focused peer-to-peer messaging protocol that enables secure communication channels, encryption, and protection against censorship. It also scales the Waku Network to accommodate many nodes efficiently.","s":"Relay","u":"/learn/concepts/protocols","h":"#relay","p":303},{"i":308,"t":"RLN Relay protocol extends the Relay protocol by using Rate Limit Nullifiers (RLN) to provide efficient and economic spam-prevention. It enforces a rate limit on messages over time for all peers in the network, economically preventing spam, and imposes financial penalties and network removal for spammers. You can find more details in the RLN Relay blog post.","s":"RLN relay","u":"/learn/concepts/protocols","h":"#rln-relay","p":303},{"i":310,"t":"Filter protocol allows light nodes to selectively subscribe to specific messages relayed by other peers using content topics. It is designed to be a lightweight alternative for accessing the Relay network, particularly tailored for devices with limited bandwidth. info Filter protocol helps optimise bandwidth usage, but it has fewer privacy guarantees as it must disclose the content topic to its peers to retrieve messages.","s":"Filter","u":"/learn/concepts/protocols","h":"#filter","p":303},{"i":312,"t":"Store protocol is responsible for storing messages relayed in the network, making it possible to query and retrieve them later. This functionality benefits offline peers by enabling them to retrieve missed messages upon reconnection. info Using Relay and Filter protocols is recommended when a node is online, as Store does not guarantee data availability. The Store protocol is suitable for retrieving messages when connecting to the network, like when a DApp starts.","s":"Store","u":"/learn/concepts/protocols","h":"#store","p":303},{"i":314,"t":"Light Push is a Request/Response protocol for nodes with limited bandwidth and short connection windows. It allows a client to receive an acknowledgement when sending messages, indicating that at least one peer has received them. Subsequently, the remote peer forwards these messages to the Relay network. info While the Light Push protocol acknowledges the receipt by the remote peer, it does not guarantee network-wide propagation.","s":"Light push","u":"/learn/concepts/protocols","h":"#light-push","p":303},{"i":316,"t":"Waku Message specifies the structure and format of messages in the Waku Network. It includes the following attributes: content_topic attribute for content-based filtering. payload attribute containing the message data payload to be sent. meta attribute for conveying additional details to various protocols for application-specific processing. timestamp attribute signifying the time at which the message was generated by its sender. ephemeral attribute specifying whether the network should not store the message.","s":"Waku message","u":"/learn/concepts/protocols","h":"#waku-message","p":303},{"i":318,"t":"How can I start building my application using Waku? Check out the Getting Started guide to explore our numerous SDKs and learn how to run a Waku node. Does messaging on Waku require a gas fee? No, sending and receiving messages on Waku involves no gas fee. What encryption does Waku use? Waku uses libp2p noise encryption for node-to-node connections. However, no default encryption method is applied to the data sent over the network. This design choice enhances Waku's encryption flexibility, encouraging developers to use custom protocols or Waku message payload encryption methods freely. Where does Waku store the messages? Waku's Store protocol is designed to temporarily store messages within the network. However, Waku does not guarantee the message's availability and recommends using Codex for long-term storage. Can Waku only be used for wallet-to-wallet messaging? No, Waku is flexible and imposes no specific rules on identifiers. How does Waku differ from IPFS? Waku focuses on short, ephemeral, real-time time messages, while IPFS focuses on large, long-term data storage. Although there's an overlap between the two technologies, Waku does not currently support large data for privacy reasons. What are Rate Limiting Nullifiers (RLN)? Rate Limiting Nullifier is a zero-knowledge (ZK) protocol enabling spam protection in a decentralized network while preserving privacy. Each message must be accompanied by a ZK proof, which Relay nodes verify to ensure the publishers do not send more messages than they are allowed. The ZK proof does not leak any private information about message publishers - it only proves they are members of a set of users allowed to publish a certain number of messages per given time frame.","s":"Waku FAQ","u":"/learn/faq","h":"","p":317},{"i":320,"t":"Transports help move data packets across a network by establishing connections between peers. They define the rules and protocols to ensure efficient network transmission, routing, and data delivery. Waku is a transport-agnostic framework that allows developers to choose and support multiple protocols according to their requirements. For Waku nodes, the following transports are recommended: TCP: By default, Waku nodes use TCP for communication. Service nodes should employ TCP for listening to and connecting with other nodes. Secure WebSocket: In browser environments, secure WebSocket is used. Service nodes are encouraged to set up SSL certificates to enable incoming connections from browsers and serve them securely. Other protocols like WebRTC, WebTransport, and QUIC have been researched and studied for potential integration. info Waku ensures compatibility and improved communication capabilities by following these recommended transports.","s":"Transports","u":"/learn/concepts/transports","h":"","p":319},{"i":322,"t":"Since Waku is built on top of libp2p, they share a lot of concepts and terminologies between them. However, there are key differences between them that are worth noting.","s":"Comparing Waku and libp2p","u":"/learn/waku-vs-libp2p","h":"","p":321},{"i":324,"t":"Waku intends to incentivise mechanisms to run nodes, but it is not part of libp2p's scope. Additionally, users or developers do not have to deploy their infrastructure as a prerequisite to use Waku. It is a service network. However, you are encouraged to run a node to support and decentralise the network.","s":"Waku as a service network","u":"/learn/waku-vs-libp2p","h":"#waku-as-a-service-network","p":321},{"i":326,"t":"Waku includes various protocols covering the following domains: privacy preservation, censorship resistance, and platform agnosticism, allowing it to run on any platform or environment. Waku provides out-of-the-box protocols to enable mostly offline/resource-limited devices, Store/Light Push/Filter caters to those use cases.","s":"Waku as a turnkey solution","u":"/learn/waku-vs-libp2p","h":"#waku-as-a-turnkey-solution","p":321},{"i":328,"t":"libp2p does not have strong spam protection guarantees, RLN Relay is a protocol being developed by the Waku team towards this goal.","s":"Economic spam protection","u":"/learn/waku-vs-libp2p","h":"#economic-spam-protection","p":321},{"i":330,"t":"Definitions and usage of the terminology used in the Waku ecosystem.","s":"Waku Docs Glossary","u":"/learn/glossary","h":"","p":329},{"i":332,"t":"Bootstrapping is the initial entry point of a node to the Waku Network. Once connected, other peer discovery methods can be employed to locate other peers in the network.","s":"Bootstrapping","u":"/learn/glossary","h":"#bootstrapping","p":329},{"i":334,"t":"A content topic is a string attached to messages to enable protocol-level features like selective message processing and retrieval based on specific criteria.","s":"Content topic","u":"/learn/glossary","h":"#content-topic","p":329},{"i":336,"t":"Dappnode is an open-source platform that simplifies the hosting and management of decentralised applications and blockchain nodes, including Waku.","s":"Dappnode","u":"/learn/glossary","h":"#dappnode","p":329},{"i":338,"t":"Discv5 is a peer discovery mechanism using a Distributed Hash Table (DHT) to store ENR records, providing censorship resistance, load distribution, and enhanced network resilience.","s":"Discv5","u":"/learn/glossary","h":"#discv5","p":329},{"i":340,"t":"DNS discovery is a peer discovery mechanism that allows the retrieval of an ENR tree from the TXT field of a domain name, enabling the storage of node connection details and promoting decentralisation.","s":"DNS discovery","u":"/learn/glossary","h":"#dns-discovery","p":329},{"i":342,"t":"Ethereum Node Record (ENR) is a specification used to represent and identify nodes, facilitating discovery and communication within the network. Besides connection details, ENR also includes node configuration information like enabled protocol and shards.","s":"ENR","u":"/learn/glossary","h":"#enr","p":329},{"i":344,"t":"Filter is a protocol that enables light nodes to selectively subscribe to specific messages transmitted by peers using content topics. It is designed to be a lightweight alternative for accessing the Relay network.","s":"Filter","u":"/learn/glossary","h":"#filter","p":329},{"i":346,"t":"GossipSub is a protocol for efficient and scalable information dissemination in decentralised networks commonly used in blockchain systems.","s":"GossipSub","u":"/learn/glossary","h":"#gossipsub","p":329},{"i":348,"t":"Libp2p is a modular network stack and protocol suite that allows developers to build decentralised, peer-to-peer applications across various network protocols.","s":"Libp2p","u":"/learn/glossary","h":"#libp2p","p":329},{"i":350,"t":"A light node is a resource-limited device or client that leverages service nodes to access the Relay network.","s":"Light node","u":"/learn/glossary","h":"#light-node","p":329},{"i":352,"t":"Light push is a protocol enabling light nodes to send messages to the Relay network and receive acknowledgements confirming that a peer has received them.","s":"Light push","u":"/learn/glossary","h":"#light-push","p":329},{"i":354,"t":"Mostly offline devices are clients who spend most of their time offline or disconnected from the internet and only occasionally to the internet and Waku Network. Examples include browsers and mobile phones.","s":"Mostly offline","u":"/learn/glossary","h":"#mostly-offline","p":329},{"i":356,"t":"A node is a device or client that implements Waku protocols and leverages the Waku Network to enable secure and private peer-to-peer web3 communication.","s":"Node","u":"/learn/glossary","h":"#node","p":329},{"i":358,"t":"A node key is a Secp256k1 (64-char hex string) private key for generating the PeerID, listening addresses, and discovery addresses of a Waku node.","s":"Node key","u":"/learn/glossary","h":"#node-key","p":329},{"i":360,"t":"Out-of-band refers to exchanging information through a separate, secure channel distinct from the main communication method to enhance security.","s":"Out-of-band","u":"/learn/glossary","h":"#out-of-band","p":329},{"i":362,"t":"The payload field in a Waku Message contains the application data, serving as the business logic message transmitted between clients over Waku. Applications can encrypt the payload or employ encryption methods specified in Waku Message Payload Encryption.","s":"Payload","u":"/learn/glossary","h":"#payload","p":329},{"i":364,"t":"A peer refers to other nodes and participants of the Waku Network with whom communication and interaction are possible.","s":"Peer","u":"/learn/glossary","h":"#peer","p":329},{"i":366,"t":"Peer discovery is when a node locates and gets information about other peers in the Waku Network.","s":"Peer discovery","u":"/learn/glossary","h":"#peer-discovery","p":329},{"i":368,"t":"Peer exchange is a peer discovery mechanism that enables light nodes to request and receive peers from other nodes in the network, allowing them to bootstrap and expand their connections without depending on Discv5.","s":"Peer exchange","u":"/learn/glossary","h":"#peer-exchange","p":329},{"i":370,"t":"PeerID is the unique identifier of a node in the Waku Network generated from the cryptographic hash of the node's public key.","s":"Peer ID","u":"/learn/glossary","h":"#peer-id","p":329},{"i":372,"t":"A protocol is a set of rules that enables nodes within the Waku Network to perform various functionalities such as message sending, relaying, filtering, storing, retrieving, and more.","s":"Protocol","u":"/learn/glossary","h":"#protocol","p":329},{"i":374,"t":"Publish/Subscribe (Pub/Sub) is an asynchronous messaging pattern where publishers send messages to topics, and subscribers receive messages from topics of interest, allowing efficient one-to-many communication.","s":"Pub/Sub","u":"/learn/glossary","h":"#pubsub","p":329},{"i":376,"t":"A Pub/Sub topic is a string that serves as an identifier for the topic of interest among GossipSub peers. Peers interested in the same topic are likely to maintain a connection and forward messages received on that topic.","s":"Pub/Sub topic","u":"/learn/glossary","h":"#pubsub-topic","p":329},{"i":378,"t":"Rate Limit Nullifiers (RLN) are a construct based on zero-knowledge proofs that enables rate limiting functionality while preserving the users's anonymity.","s":"Rate limit nullifiers","u":"/learn/glossary","h":"#rate-limit-nullifiers","p":329},{"i":380,"t":"Relay is a protocol that extends the GossipSub protocol to enable secure and censorship resistant message sending and receiving among peers while preserving privacy. It also scales the Waku Network to accommodate many nodes efficiently.","s":"Relay","u":"/learn/glossary","h":"#relay","p":329},{"i":382,"t":"Resource-limited refers to environments or devices restricting available resources, including bandwidth, CPU, memory, disk, and battery power.","s":"Resource-limited","u":"/learn/glossary","h":"#resource-limited","p":329},{"i":384,"t":"RLN Relay is an extension of the Relay protocol that uses Rate Limit Nullifiers (RLN) to prevent spam economically by enforcing a rate limit on messages over time, imposing penalties, and facilitating network removal for spammers.","s":"RLN relay","u":"/learn/glossary","h":"#rln-relay","p":329},{"i":386,"t":"SDKs are tools, libraries, and resources to integrate Waku's private, secure, and censorship-free communication features into various applications.","s":"SDK","u":"/learn/glossary","h":"#sdk","p":329},{"i":388,"t":"Store is a protocol that enables the storage of relayed messages in the network, allowing offline peers to retrieve missed messages upon reconnecting to the network.","s":"Store","u":"/learn/glossary","h":"#store","p":329},{"i":390,"t":"A transport is a network mechanism that establishes connections between peers and enables efficient transmission, routing, and delivery of data packets.","s":"Transport","u":"/learn/glossary","h":"#transport","p":329},{"i":392,"t":"Waku is a family of private, secure, decentralised, and peer-to-peer web3 communication protocols designed to operate in resource-limited environments and suitable for node or desktop application use. Additionally, these protocols collectively form the Waku Network.","s":"Waku","u":"/learn/glossary","h":"#waku","p":329},{"i":394,"t":"Waku Message defines the structure of messages in the Waku Network, including the content topic, payload, and metadata for application-specific processing.","s":"Waku message","u":"/learn/glossary","h":"#waku-message","p":329},{"i":396,"t":"Waku Message Payload Encryption provides guidelines for implementing secure and private communication in the Waku Network. It covers encryption, decryption, and signing methods for message payloads, focusing on confidentiality, authenticity, integrity, and unlinkability.","s":"Waku message payload encryption","u":"/learn/glossary","h":"#waku-message-payload-encryption","p":329},{"i":398,"t":"The Waku Network is an open-access, scalable peer-to-peer messaging network emphasizing privacy protection and accessibility to resource limited devices.","s":"Waku network","u":"/learn/glossary","h":"#waku-network","p":329},{"i":400,"t":"Waku Noise is a specified way to use the Noise Protocol Framework to build protocols that enable secure key-exchange mechanisms for encrypted communication with confidentiality, authenticity, integrity, strong forward secrecy, and identity-hiding properties.","s":"Waku noise","u":"/learn/glossary","h":"#waku-noise","p":329},{"i":402,"t":"The following features are currently experimental and under research and initial implementation:","s":"Research","u":"/learn/research","h":"","p":401},{"i":404,"t":"We aim to enable an incentivised spam protection technique to enhance Relay by using Rate Limit Nullifiers (RLN). In this advanced method, peers are limited to a certain messaging rate per epoch, and an immediate financial penalty is enforced for spammers who break this rate. You can find more details in the RLN Relay blog post. We have prepared a PoC implementation of this method in JS: https://examples.waku.org/rln-js/","s":"Economic spam resistance","u":"/learn/research","h":"#economic-spam-resistance","p":401},{"i":406,"t":"Denial of service signifies the case where an adversarial peer exhausts another node's service capacity (e.g., by making a large number of requests) and makes it unavailable to the rest of the system. RnD on DoS attack mitigation can tracked from here: https://github.com/vacp2p/research/issues/148. In a nutshell, peers have to pay for the service they obtain from each other. In addition to incentivising the service provider, accounting also makes DoS attacks costly for malicious peers. The accounting model can be used in Store and Filter to protect against DoS attacks. Additionally, along with RLN, this gives node operators who provide a useful service to the network an incentive to perform that service. Read more here: https://vac.dev/building-privacy-protecting-infrastructure You can also read more about the ongoing challenges the Waku team is working on here: https://github.com/waku-org/research","s":"Prevention of denial of service (DoS) and node incentivisation","u":"/learn/research","h":"#prevention-of-denial-of-service-dos-and-node-incentivisation","p":401},{"i":408,"t":"Waku's protocol layers offer different services and security considerations, shaping the overall security of Waku. We document the security models in the RFCs of the protocols, aiming to provide transparent and open-source references. This empowers Waku users to understand each protocol's security guarantees and limitations. Some of the Waku's security features include the following:","s":"Security Features","u":"/learn/security-features","h":"","p":407},{"i":410,"t":"Waku ensures pseudonymity across its protocol layers, using libp2p PeerID as identifiers instead of disclosing true identities. However, it is important to note that pseudonymity does not provide complete anonymity. Actions performed under the same pseudonym (PeerID) can be linked, leading to the potential re-identification of the actual actor.","s":"Pseudonymity","u":"/learn/security-features","h":"#pseudonymity","p":407},{"i":412,"t":"Anonymity means an adversary cannot connect an actor to their actions or data. To achieve anonymity, avoiding linking activities with actors or their Personally Identifiable Information (PII) is crucial. In Waku, the following anonymity features are provided: Publisher-message unlinkability: Ensures that the publisher of messages in the Relay protocol cannot be linked to their published messages. Subscriber-topic unlinkability: Ensures that the subscriber of topics in the Relay protocol cannot be linked to the topics they have subscribed to.","s":"Anonymity/unlinkability","u":"/learn/security-features","h":"#anonymityunlinkability","p":407},{"i":414,"t":"The spam protection feature in Relay ensures that no adversary can flood the system with many messages, intentionally or not, regardless of the content's validity or usefulness. This protection is achieved through the scoring mechanism of GossipSub v1.1. Peers assign scores to their connections based on their behaviour and remove peers with low scores. Ongoing research is being conducted, including developing Rate Limit Nullifiers (RLN), which can be explored further at: https://github.com/vacp2p/research/issues/148.","s":"Spam protection","u":"/learn/security-features","h":"#spam-protection","p":407},{"i":416,"t":"Confidentiality in Waku is ensured through data encryption, while integrity and authenticity are achieved through digital signatures. These security measures are available in Waku Message (version 1) and Noise protocols, which offer payload encryption and encrypted signatures. Noise protocols also facilitate secure channel negotiation within the Waku Network.","s":"Data confidentiality, integrity, and authenticity","u":"/learn/security-features","h":"#data-confidentiality-integrity-and-authenticity","p":407},{"i":418,"t":"In protocols like Store and Filter, where direct connections are required for the designated service, anonymity or unlinkability is not guaranteed. This is because nodes use their PeerID to identify each other during direct connections, making the service obtained in these protocols linkable to the beneficiary's PeerID, considered Personally Identifiable Information (PII). In Store, the queried node can link the querying node's PeerID to the topics being queried. Similarly, in Filter, a node can link the PeerID of a light node to its content filter.","s":"Security considerations","u":"/learn/security-features","h":"#security-considerations","p":407},{"i":420,"t":"The Waku Network is a shared p2p messaging network that is open-access, useful for generalized messaging, privacy-preserving, scalable and accessible even to resource-restricted devices. Some of the most prominent features include: DoS/spam protection with privacy-preserving Rate-Limiting Nullifiers. Scalability by sharding traffic into 8 pubsub topics. Automatic shard selection based on content topic. Services for resource-restricted nodes, including historical message storage and retrieval, filtering, etc. If you want to learn more about the Waku Network, the WAKU2-NETWORK RFC provides an in-depth look under the hood. info The public Waku Network replaces the previous experimental shared routing layer based on a default pubsub topic (/waku/2/default-waku/proto). If your project currently uses this or any other shared pubsub topics, we encourage you to migrate to the public Waku Network with built-in DoS protection, scalability, and reasonable bandwidth usage.","s":"The Waku Network","u":"/learn/waku-network","h":"","p":419},{"i":422,"t":"Applications or projects can build decentralized communication components on this network, gaining from the fault-tolerance of shared infrastructure, the out-of-the-box censorship resistance of a p2p network and the privacy-preservation of Waku protocols. Supporters of public goods and decentralized infrastructure can run their nodes to support the network. We are also working on incentivisation vectors to encourage more node operators to provide services to the network.","s":"Why join the Waku network?","u":"/learn/waku-network","h":"#why-join-the-waku-network","p":419},{"i":424,"t":"Ethereum Sepolia WebSocket endpoint, which can be yours or from a third party. Have a look at the Access a Sepolia Node Using Infura guide for a free Infura option. This node is used to interact with the on-chain RLN membership contract. Wallet with Sepolia Ethereum (less than 0.1 Sepolia ETH). Have a look at the Create a Sepolia Ethereum Wallet and Obtain Sepolia Ethereum from Faucet guides to get a Sepolia wallet and fund it with some Sepolia Ethereum. This wallet is required to register RLN membership, which is essential for publishing on the network.","s":"Prerequisites","u":"/learn/waku-network","h":"#prerequisites","p":419},{"i":426,"t":"Have a look at the Run Nwaku with Docker Compose guide for instructions on running a nwaku node in the Waku Network. Use the Sepolia node and wallet you obtained above.","s":"Running a Waku network node","u":"/learn/waku-network","h":"#running-a-waku-network-node","p":419},{"i":428,"t":"On this page Last updated: 9 February 2024 This Privacy Policy is intended to inform users of our approach to privacy in respect of this website (\"Website\"). In this regard, if you are visiting our Website, this Privacy Policy applies to you.","s":"Privacy Policy","u":"/privacy-policy","h":"","p":427},{"i":430,"t":"For the purposes of this Privacy Policy and the collection and processing of personal data as a controller, the relevant entity is the Logos Collective Association, which has its registered office in Zug and its legal domicile address at Logos Collective Association c/o PST Consulting GmbH Baarerstrasse 10 6300 Zug Switzerland Whenever we refer to “Logos”, “we” or other similar references, we are referring to the Logos Collective Association.","s":"1) Who we are","u":"/privacy-policy","h":"#1-who-we-are","p":427},{"i":432,"t":"We aim to limit the collection and collection and processing of personal data from users of the Website. We only collect and process certain personal data for specific purposes and where we have the legal basis to do so under applicable privacy legislation. We will not collect or process any personal data that we don’t need and where we do store any personal data, we will only store it for the least amount of time needed for the indicated purpose. In this regard, we collect and process the following personal data from your use of the Website: IP address: As part of such use of the Website we briefly process your IP address but we have no way of identifying you. We however have a legitimate interest in processing such IP addresses to ensure the technical functionality and enhance the security measures of the Website. This IP address is not stored by us over time.","s":"2) We limit the collection and processing of personal data from your use of the Website","u":"/privacy-policy","h":"#2-we-limit-the-collection-and-processing-of-personal-data-from-your-use-of-the-website","p":427},{"i":434,"t":"In addition to our limited and collection of personal data, third parties may collect or process personal data as a result of the Website making use of certain features or to provide certain content. To the extent you interact with such third party content or features, their respective privacy policies will apply.","s":"3) Third party processing of personal data","u":"/privacy-policy","h":"#3-third-party-processing-of-personal-data","p":427},{"i":436,"t":"As a general approach, we take data security seriously and we have implemented a variety of security measures on the Website to maintain the safety of your personal data when you submit such information to us.","s":"4) Security measures we take in respect of the Website","u":"/privacy-policy","h":"#4-security-measures-we-take-in-respect-of-the-website","p":427},{"i":438,"t":"We are obliged to protect the privacy of personal data that you may have submitted in the unlikely event that we export your personal data to places outside the European Union or Switzerland. This means that personal data will only be processed in countries or by parties that provide an adequate level of protection as deemed by Switzerland or the European Commission. Otherwise, we will use other forms of protections, such as specific forms of contractual clauses to ensure such personal data is provided the same protection as required in Switzerland or Europe. In any event, the transmission of personal data outside the European Union and Switzerland will always occur in conformity with applicable privacy legislation.","s":"5) Exporting data outside the European Union and Switzerland","u":"/privacy-policy","h":"#5-exporting-data-outside-the-european-union-and-switzerland","p":427},{"i":440,"t":"As explained in this Privacy Policy, we limit our collection and processing of your personal data wherever possible. Nonetheless, you still have certain choices and rights in respect of the personal data which we do collect and process. As laid out in relevant privacy legislation, you have the right to: Ask us to correct or update your personal data (where reasonably possible); Ask us to remove your personal data from our systems; Ask us for a copy of your personal data, which may also be transferred to another data controller at your request; Withdraw your consent to process your personal data (only if consent was asked for a processing activity), which only affects processing activities that are based on your consent and doesn’t affect the validity of such processing activities before you have withdrawn your consent; Object to the processing of your personal data; and File a complaint with the Federal Data Protection and Information Commissioner (FDPIC), if you believe that your personal data has been processed unlawfully.","s":"6) Your choices and rights","u":"/privacy-policy","h":"#6-your-choices-and-rights","p":427},{"i":442,"t":"On this Website, you may come across links to third party websites. These third party sites have separate and independent privacy policies. We therefore have no responsibility or liability for the content and activities of these third party websites.","s":"7) Third party links","u":"/privacy-policy","h":"#7-third-party-links","p":427},{"i":444,"t":"We may modify or replace any part of this Privacy Policy at any time and without notice. Please check the Website periodically for any changes. The new Privacy Policy will be effective immediately upon its posting on our Website.","s":"8) This Privacy Policy might change","u":"/privacy-policy","h":"#8-this-privacy-policy-might-change","p":427},{"i":446,"t":"To the extent that you have any questions about the Privacy Policy, please contact us at legal@free.technology. This document is licensed under CC-BY-SA.","s":"9) Contact information","u":"/privacy-policy","h":"#9-contact-information","p":427},{"i":448,"t":"Waku is a family of decentralised communication protocols. The Waku Network (TWN) consists of independent nodes running Waku protocols. TWN needs incentivisation (shortened to i13n) to ensure proper node behaviour. The goal of this document is to outline and contextualize our approach to TWN i13n. After providing an overview of Waku and relevant prior work, we focus on Waku Store - a client-server protocol for querying historical messages. We introduce a minimal viable addition to Store to enable i13n, and list research directions for future work.","s":"Incentivisation","u":"/research/research-and-studies/incentivisation","h":"","p":447},{"i":450,"t":"On this page","s":"Incentivisation in decentralised networks","u":"/research/research-and-studies/incentivisation","h":"","p":447},{"i":452,"t":"We can think of incentivisation tools as a two-by-two matrix: rewards vs punishment; monetary vs reputation. In other words, there are four quadrants: monetary reward: the node gets rewarded; monetary punishment: the nodes deposits funds that are taken away (slashed) if it misbehaves; reputation reward: the node's reputation increases if it behaves well; reputation punishment: the node's reputation decreases if it behaves badly. Reputation only works if high reputation brings tangible benefits. For example, if nodes chose neighbors based on reputation, low-reputation nodes miss out on potential revenue. Reputation scores may be local (a node assigns scores to its neighbors) or global (each node gets a uniform score). Global reputation in its simplest form involves a trusted third party, although decentralised approaches are also possible.","s":"Incentivisation tools","u":"/research/research-and-studies/incentivisation","h":"#incentivisation-tools","p":447},{"i":454,"t":"We may split incentivized decentralised networks into early file-sharing, blockchains, and decentralised storage.","s":"Prior work","u":"/research/research-and-studies/incentivisation","h":"#prior-work","p":447},{"i":456,"t":"Early P2P file-sharing networks employ reputation-based approaches and sticky defaults. For instance, the BitTorrent protocol rewards uploading peers with faster downloads. The download bandwidth available to a peer depends on how much it has uploaded. Moreover, peers share pieces of a file before having received it in whole. This non-monetary i13n policy has been proved to work in practice.","s":"Early P2P file-sharing","u":"/research/research-and-studies/incentivisation","h":"#early-p2p-file-sharing","p":447},{"i":458,"t":"Bitcoin has introduced proof-of-work (PoW) for native monetary rewards in a P2P network. PoW miners are automatically assigned newly mined coins for generating blocks. Miners must expend physical resources to generate a block. If the block is invalid, these expenses are not compensated (implicit monetary punishment). Proof-of-stake (PoS), used in Ethereum and many other cryptocurrencies, introduces explicit monetary punishments. PoS validators lock up (stake) native tokens and get rewarded for validating blocks or slashed for misbehaviour.","s":"Blockchains","u":"/research/research-and-studies/incentivisation","h":"#blockchains","p":447},{"i":460,"t":"Post-Bitcoin decentralised storage networks include Codex, Storj, Sia, Filecoin, IPFS. Their i13n methods combine techniques from early P2P file-sharing with blockchain-inspired reward mechanisms.","s":"Decentralised storage","u":"/research/research-and-studies/incentivisation","h":"#decentralised-storage","p":447},{"i":462,"t":"On this page Waku is a family of protocols for a modular privacy-preserving censorship-resistant decentralised communication network. The backbone of Waku is the Relay protocol (and its spam-protected version RLN-Relay). Additionally, there are light protocols: Store, Filter, and Lightpush. Light protocols are also referred to as client-server protocols and request-response protocols. A server is a node running Relay and a server-side of at least one light protocol. A client is a node running a client-side of any of the light protocols. A server may sometimes be referred to as a full node, and a client as a light node. There is no strict definition of a full node vs a light node in Waku (see discussion). In light protocols, a client sends a request to a server, and a server performs some actions and returns a response: Store: the server responds with messages relayed that match a set of criteria; Filter: the server will relay (only) messages that pass a filter to the client; Lightpush: the server publishes the client's message to the Relay network.","s":"Waku background","u":"/research/research-and-studies/incentivisation","h":"","p":447},{"i":464,"t":"Waku has no consensus and no native token, which brings it closer to reputation-incentivised file-sharing networks. As of late 2023, Waku only operates under reputation-based rewards and punishments. While RLN-Relay adds monetary punishments for spammers, slashing is yet to be activated. Monetary rewards and punishments should ideally be atomically linked with the node's behaviour. A benefit of blockchains in this respect is that the desired behaviour of miners or validators can be verified automatically. Enforcing atomicity in a communication network is more challenging: it is non-trivial to prove that a given piece of data has been relayed. Our goal is to combine monetary and reputation-based incentives for Waku. Monetary incentives have demonstrated their robustness in blockchains. We think they are necessary to scale the network beyond the initial phase when it's maintained altruistically.","s":"Waku i13n challenges","u":"/research/research-and-studies/incentivisation","h":"#waku-i13n-challenges","p":447},{"i":466,"t":"Waku Store is a light protocol for querying historic messages that works as follows: the client sends a HistoryQuery to the server; the server sends a HistoryResponse to the client. The response may be split into multiple parts, as specified by pagination parameters in PagingInfo. We define a relevant message as a message that matches client-defined criteria (e.g., relayed within a given time frame). Upon receiving a request, a server should quickly send back a response containing all and only relevant messages.","s":"Waku Store","u":"/research/research-and-studies/incentivisation","h":"#waku-store","p":447},{"i":468,"t":"On this page An incentivised Store protocol has the following extra steps: pricing: cost calculation price advertisement price negotiation payment: payment itself proof of payment reputation results cross-checking In this document, we focus on the simplest proof-of-concept (PoC) i13n for Store. Compared to the fully-fledged protocol, the PoC version is simplified in the following ways: cost calculation is based on a common-knowledge price; there is no price advertisement and no price negotiation; each query is paid for in a separate transaction, txid acts a proof of payment; the reputation system is simplified (see below); the results are not cross-checked. In the PoC protocol: the client calculates the price based on the known rate per hour of history; the client pays the appropriate amount to the server's address; the client sends a HistoryQuery to the server alongside the proof of payment (txid); the server checks that the txid corresponds to a confirmed transaction with at least the required amount; the server sends a HistoryResponse to the client. In further subsections, we list the potential direction for future work towards a fully-fledged i13n mechanism.","s":"Waku Store incentivisation","u":"/research/research-and-studies/incentivisation","h":"","p":447},{"i":470,"t":"For PoC, we assume a constant price per hour of history. This price and the blockchain address of the server are assumed to be common knowledge. This simplifies the client-server interaction, avoiding the price negotiation step. In the future versions of the protocol, the price will be negotiated and will depend on multiple parameters, such as the total size of the relevant messages in the response.","s":"Pricing","u":"/research/research-and-studies/incentivisation","h":"#pricing","p":447},{"i":472,"t":"DoS protection - see https://github.com/waku-org/research/issues/66 Cost calculation - see https://github.com/waku-org/research/issues/35 Price advertisement - see https://github.com/waku-org/research/issues/51 Price negotiation - see https://github.com/waku-org/research/issues/52","s":"Future work","u":"/research/research-and-studies/incentivisation","h":"#future-work","p":447},{"i":474,"t":"For the PoC, each request is paid for with a separate transaction. The transaction hash (txid) acts as a proof of payment. The server verifies the payment by ensuring that: the transaction has been confirmed; the transaction is paying the proper amount to the server's account; the txid does not correspond to any prior response. The client gives proof of payment before it receives the response. Other options could be: the client pays after the fact; the client pays partly upfront and partly after the fact; a centralised third party (either trusted or semi-trusted, like a smart contract) ensures atomicity; cryptographically ensured atomicity (similar to atomic swaps, Lightning, or Hopr). Our design considerations are: the PoC protocol should be simple; servers are more \"permanent\" entities and are more likely to have long-lived identities; it is more important to protect the clients's privacy than the server's privacy. In light of these criteria, we suggest that the client pays first. This is simpler than splitting the payment, or involving an extra atomicity-enforcing mechanism. Moreover, pre-payment is arguably more privacy-preserving than post-payment, which encourages servers to deanonymise clients to prevent fraud.","s":"Payment","u":"/research/research-and-studies/incentivisation","h":"#payment","p":447},{"i":476,"t":"Add more payment methods - see https://github.com/waku-org/research/issues/58 Design a subscription model with service credentials - see https://github.com/waku-org/research/issues/59 Add privacy to service credentials - see https://github.com/waku-org/research/issues/60 Consider the impact of network disruptions - see https://github.com/waku-org/research/issues/65","s":"Future work","u":"/research/research-and-studies/incentivisation","h":"#future-work-1","p":447},{"i":478,"t":"We use reputation to discourage the server from taking the payment and not responding. The client keeps track of the server's reputation: all servers start with zero reputation points; if the server honours the request, it gets +n points; if the server does not respond before a timeout, it gets -m points. if the server's reputation drops below k points, the client will never query it again. n, m, and k are subject to configuration. Optionally, a client may treat a given server as trusted, assigning it a constant positive reputation. Potential issues: An attacker can establish new server identities and continue running away with clients' money. Countermeasures: a client only queries trusted servers (which however leads to centralisation); when querying a new server, a client first sends a small (i.e. cheap) request as a test; more generally, the client selects a server on a case-by-case basis, weighing the payment amount against the server's reputation. The ban mechanism can theoretically be abused. For instance, a competitor may attack the victim server and cause the clients who were awaiting the response to ban that server. Countermeasure: prevent DoS-attacks.","s":"Reputation","u":"/research/research-and-studies/incentivisation","h":"#reputation","p":447},{"i":480,"t":"Design a more comprehensive reputation system: local reputation - see https://github.com/waku-org/research/issues/48 global reputation - see https://github.com/waku-org/research/issues/49","s":"Future work","u":"/research/research-and-studies/incentivisation","h":"#future-work-2","p":447},{"i":482,"t":"As there is no consensus over past messages, a client may want to query multiple servers and merge their responses. Cross-checking helps ensure that servers are a) not censoring real messages; b) not injecting fake messages into history. Cross-checking is absent in PoC but may be considered later.","s":"Results cross-checking","u":"/research/research-and-studies/incentivisation","h":"#results-cross-checking","p":447},{"i":484,"t":"Cross-checking the results against censorship - see https://github.com/waku-org/research/issues/57 Use RLN to limit fake message insertion - see https://github.com/waku-org/research/issues/38","s":"Future work","u":"/research/research-and-studies/incentivisation","h":"#future-work-3","p":447},{"i":486,"t":"On this page We should think about what the success metrics for an incentivised protocol are, and how to measure them both in simulated settings, as well as in a live network.","s":"Evaluation","u":"/research/research-and-studies/incentivisation","h":"","p":447},{"i":488,"t":"On this page Analyze privacy issues - see https://github.com/waku-org/research/issues/61 Analyze decentralised storage protocols and their relevance e.g. as back-end storage for Store servers - see https://github.com/waku-org/research/issues/34 Analyze the role of message senders, in particular, whether they should pay for sending non-ephemeral messages - see https://github.com/waku-org/research/issues/32 Generalise incentivisation protocol to other Waku light protocols (Lightpush and Filter) - see https://github.com/waku-org/research/issues/67.","s":"Longer-term future work","u":"/research/research-and-studies/incentivisation","h":"","p":447},{"i":490,"t":"Research and Studies: Protocol simulations and theoretical analysis to support the design of Waku protocols. The protocol definitions are on the Vac RFC website. Benchmarks: Results of implementations and engineering-related benchmarks for Waku clients.","s":"Research","u":"/research/","h":"","p":489},{"i":492,"t":"TLDR: This issue aims to set the maximum bandwidth in x Mbps that each waku shard should consume so that the maximum amount of people can run a full waku node. It is up to https://github.com/waku-org/research/issues/22 to specify how this maximum will be enforced. Conclusion: Limit to 10 Mbps each waku shard.","s":"Maximum Bandwidth for Global Adoption","u":"/research/research-and-studies/maximum-bandwidth","h":"","p":491},{"i":494,"t":"Waku is designed in a way that everyone should be able to run a full node on an average laptop with a residential Internet connection, at least in one shard. This will enable true decentralization and give power to the users, since they won't need to rely on third parties to send/receive messages. Professional node operators running in data centers, can of course contribute to multiple shards, but we should keep the bandwidth/hardware requirements of single shard rather low. This vision opposes the federated approach, where a few nodes requiring vast amounts of resources (cpu, memory, bandwidth) run in data centres, taking the power from the user. While federated approaches are an improvement from traditional client-server architectures, waku envisions a fully peer-to-peer architecture where anyone should be able to run a node. In order to ensure that anyone can run a node in desktop, there are two main limiting factors: Bandwidth consumption in Mbps CPU/memory resources (mainly limited by RLN proof verification) This issue focuses on i) bandwidth consumption and https://github.com/waku-org/research/issues/30 on ii) CPU/memory resources. Note that on https://github.com/waku-org/research/issues/23 an analysis on the impact on RLN was already made, but wasn't focused on scalability. Said issues do. In https://github.com/waku-org/research/issues/22 we discussed why and how to limit the maximum bandwidth per shard, but we haven't come up with a specific number in Mbps. This issue i) presents data from the available bandwidth at different locations and ii) suggests a maximum bandwidth in Mbps that waku should enforce.","s":"Introduction","u":"/research/research-and-studies/maximum-bandwidth","h":"#introduction","p":491},{"i":496,"t":"The following tables show: Table [1] The Q25, Q75 and average bandwidth (upload/download) in Mbps available on different continents. Raw data is available here and credits to @leobago for the summarized version. Note: The below numbers were rounded to the nearest integer. Table [2] The median global bandwidth (upload/download) in Mbps, taken from speedtest (accessed 12 Oct 2023). Table [3] Download bandwidth requirements in Mbps for Netflix video streaming, source. Table [1] Download (Mbps) Upload (Mbps) Q25 Average Q75 Q25 Average Q75 North-America 58 107 137 38 68 85 South-America 21 54 72 13 33 44 Europe 49 93 119 30 56 72 Asia 23 53 71 15 37 50 Oceania 44 84 108 27 50 63 Africa 12 26 33 7 17 22 Table [2] Median Download (Mbps) Median Upload (Mbps) Global 83 38 Table [3] Video resolution Recommended Bandwidth HD 3 Mbps Full HD 5 Mbps 4K/UHD 15 Mbps","s":"Bandwidth availability and usage","u":"/research/research-and-studies/maximum-bandwidth","h":"#bandwidth-availability-and-usage","p":491},{"i":498,"t":"With the above data, we should be informed to take a decision on the maximum bandwidth that we should enforce per shard. With this number, we will apply the techniques explained in https://github.com/waku-org/research/issues/22 to ensure (with some statistical confidence) that the bandwidth won't exceed that number. The trade-off is clear: We enforce a low bandwidth: more people can run full waku nodes, overall network throughput is less, network decentralization is easier, gives power to the user as its fully sovereign. We don't enforce a low bandwidth: not possible to run full waku nodes in laptops acting as a centralization force, nodes are run by few professional operators in data centers, waku users just use light clients, network throughput can scale way easier, federated approach. So it's about where to draw this line. Points to take into account: Relay contributes to bandwidth the most: Relay is the protocol that mostly contributes to bandwidth usage, and it can't choose to allocate fewer bandwidth resources like other protocols (eg store can choose to provide less resources and it will work). In other words, the network sets the relay bandwidth requirements, and if the node can't meet them, it just wont work. Upload and download bandwidth are the same: Due to how gossipsub works, and hence relay, the bandwidth consumption is symmetric, meaning that upload and download bandwidth is the same. This is because of D and the reciprocity of the connections, meaning that one node upload is another download. Nodes not meeting requirements can use light clients. Note that nodes not meeting the bandwidth requirements can still use waku, but they will have to use light protocols, which are a great alternative, especially on mobile, but with some drawbacks (trust assumptions, less reliability, etc) Waku can't take all the bandwidth: Waku is meant to be used in conjunction with other services, so it shouldn't consume all the existing bandwidth. If Waku consumes x Mbps and someone bandwidth is x Mpbs, the UX won't be good. Compare with existing well-known services: As shown in Table [3], Netflix 4K video streaming takes 15Mbps, so that is an order of magnitude to take into account. Coming up with a number: Lowest average download speed across continents is Africa (26 Mbps) Lowest average upload speed across continents is Africa (17 Mbps) Since in waku the bandwidth consumption is symmetric, we are limited by the lowest (17 Mpbs) However waku should not consume all bandwidth, leaving some room for other applications. We could set 10 Mbps, which is between Full HD video and 4K. With 10Mbps the % of average bandwidth waku will consume is: North-America 9 % South-America 18 % Europe 11 % Asia 18 % Oceania 12 % Africa 38 % Conclusion: Limit to 10 Mbps each waku shard. How? Not trivial, see https://github.com/waku-org/research/issues/22#issuecomment-1727795042 Note: This number is not set in stone and is subject to modifications, but it will most likely stay in the same order of magnitude if changed.","s":"Selecting a maximum bandwidth","u":"/research/research-and-studies/maximum-bandwidth","h":"#selecting-a-maximum-bandwidth","p":491},{"i":500,"t":"This issue explains i) why The Waku Network requires a capped bandwidth per shard and ii) how to solve it by rate limiting with RLN by daily requests (instead of every x seconds), which would require RLN v2, or some modifications in the current circuits to work. It also explains why the current rate limiting RLN approach (limit 1 message every x seconds) is not practical to solve this problem.","s":"Capped Bandwidth in Waku","u":"/research/research-and-studies/capped-bandwidth","h":"","p":499},{"i":502,"t":"First of all, lets begin with the terminology. We have talked in the past about \"predictable\" bandwidth, but a better name would be \"capped\" bandwidth. This is because it is totally fine that the waku traffic is not predictable, as long as its capped. And it has to be capped because otherwise no one will be able to run a node. Since we aim that everyone is able to run a full waku node (at least subscribed to a single shard) its of paramount importance that the bandwidth requirements (up/down) are i) reasonable to run with a residential internet connection in every country and ii) limited to an upper value, aka capped. If the required bandwidth to stay up to date with a topic is higher than what the node has available, then it will start losing messages and won't be able to stay up to date with the topic messages. And not to mention the problems this will cause to other services and applications being used by the user. The main problem is that one can't just chose the bandwidth it allocates to relay. One could set the maximum bandwidth willing to allocate to store but this is not how relay works. The required bandwidth is not set by the node, but by the network. If a pubsub topic a has a traffic of 50 Mbps (which is the sum of all messages being sent multiplied by its size, times the D_out degree), then if a node wants to stay up to date in that topic, and relay traffic in it, then it will require 50 Mbps. There is no thing such as \"partially contribute\" to the topic (with eg 25Mbps) because then you will be losing messages, becoming an unreliable peer. The network sets the pace. So waku needs an upper boundary on the in/out bandwidth (mbps) it consumes. Just like apps have requirements on cpu and memory, we should set a requirement on bandwidth, and then guarantee that if you have that bandwidth, you will be able to run a node without any problem. And this is the tricky part.","s":"Problem","u":"/research/research-and-studies/capped-bandwidth","h":"#problem","p":499},{"i":504,"t":"With the recent productisation effort of RLN, we have part of the problem solved, but not entirely. RLN offers an improvement, since now have a pseudo-identity (RLN membership) that can be used to rate limit users, enforcing a limit on how often it can send a message (eg 1 message every 10 seconds). We assume of course, that getting said RLN membership requires to pay something, or put something at stake, so that it can't be sibyl attacked. Rate limiting with RLN so that each entity just sends 1 message every x seconds indeed solves the spam problem but it doesn't per se cap the traffic. In order to cap the traffic, we would first need to cap the amount of memberships we allow. Lets see an example: We limit to 10.000 RLN memberships Each ones is rate limited to send 1 message/10 seconds Message size of 50 kBytes Having this, the worst case bandwidth that we can theoretically have, would be if all of the memberships publish messages at the same time, with the maximum size, continuously. That is 10.000 messages/sec * 50 kBytes = 500 MBytes/second. This would be a burst every 10 seconds, but enough to leave out the majority of the nodes. Of course this assumption is not realistic as most likely not everyone will continuously send messages at the same time and the size will vary. But in theory this could happen. A naive (and not practical) way of fixing this, would be to design the network for this worst case. So if we want to cap the maximum bandwidth to 5 MBytes/s then we would have different options on the maximum i) amount of RLN memberships and ii) maximum message size: 1.000 RLN memberships, 5 kBytes message size: 1000 * 5 = 5 MBytes/s 10.000 RLN memberships, 500 Bytes message size: 10000 * 0.5 = 5 MBytes/s In both cases we cap the traffic, however, if we design The Waku Network like this, it will be massively underutilized. As an alternative, the approach we should follow is to rely on statistics, and assume that i) not everyone will be using the network at the same time and ii) message size will vary. So while its impossible to guarantee any capped bandwidth, we should be able to guarantee that with 95 or 99% confidence the bandwidth will stay around a given value, with a maximum variance. The current RLN approach of rate limiting 1 message every x seconds is not very practical. The current RLN limitations are enforced on 1 message every x time (called epoch). So we currently can allow 1 msg per second or 1 msg per 10 seconds by just modifying the epoch size. But this has some drawbacks. Unfortunately, neither of the options are viable for waku: A small epoch size (eg 1 seconds) would allow a membership to publish 24*3600/1=86400 messages a day, which would be too much. In exchange, this allows a user to publish messages right after the other, since it just have to wait 1 second between messages. Problem is that having an rln membership being able to publish this amount of messages, is a bit of a liability for waku, and hinders scalability. A high epoch size (eg 240 seconds) would allow a membership to publish 24*3600/240=360 messages a day, which is a more reasonable limit, but this won't allow a user to publish two messages one right after the other, meaning that if you publish a message, you have to way 240 seconds to publish the next one. Not practical, a no go. But what if we widen the window size, and allow multiple messages within that window?","s":"Current approach","u":"/research/research-and-studies/capped-bandwidth","h":"#current-approach","p":499},{"i":506,"t":"In order to fix this, we need bigger windows sizes, to smooth out particular bursts. Its fine that a user publishes 20 messages in one second, as long as in a wider window it doesn't publish more than, lets say 500. This wider window could be a day. So we could say that a membership can publish 250 msg/day. With this we solve i) and ii) from the previous section. Some quick napkin math on how this can scale: 10.000 RLN memberships Each RLN membership allow to publish 250 msg/day Message size of 5 kBytes Assuming a completely random distribution: 10.000 * 250 = 2 500 000 messages will be published a day (at max) A day has 86 400 seconds. So with a random distribution we can say that 30 msg/sec (at max) 30 msg/sec * 5 kBytes/msg = 150 kBytes/sec (at max) Assuming D_out=8: 150 kBytes/sec * 8 = 1.2 MBytes/sec (9.6 Mbits/sec) So while its still not possible to guarantee 100% the maximum bandwidth, if we rate limit per day we can have better guarantees. Looking at these numbers, considering a single shard, it would be feasible to serve 10.000 users considering a usage of 250 msg/day. TODO: Analysis on 95%/99% interval confidence on bandwidth given a random distribution.","s":"Solution","u":"/research/research-and-studies/capped-bandwidth","h":"#solution","p":499},{"i":508,"t":"Waku should guarantee a capped bandwidth so that everyone can run a node. The guarantee is a \"statistical guarantee\", since there is no way of enforcing a strict limit. Current RLN approach is to rate limit 1 message every x seconds. A better approach would be x messages every day, which helps achieving such bandwidth limit. To follow up: Variable RLN memberships. Eg. allow to chose tier 1 (100msg/day) tier 2 (200msg/day) etc.","s":"TLDR","u":"/research/research-and-studies/capped-bandwidth","h":"#tldr","p":499},{"i":511,"t":"The Nim Waku Node, nwaku, has the capability of archiving messages until a certain limit (e.g. 30 days) so that other nodes can synchronize their message history throughout the Store protocol. The nwaku originally used SQLite to archive messages but this has an impact on the node. Nwaku is single-threaded and therefore, any SQLite operation impacts the performance of other protocols, like Relay. Therefore, the Postgres adoption is needed to enhance that. https://github.com/waku-org/nwaku/issues/1888","s":"Introduction","u":"/research/benchmarks/postgres-adoption","h":"#introduction","p":509},{"i":513,"t":"Simply pass the next parameter to nwaku --store-message-db-url=\"postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/postgres Notice that this only makes sense if the nwaku has the Store protocol mounted --store=true (start the nwaku node with --help parameter for more Store options)","s":"How to connect the nwaku to Postgres","u":"/research/benchmarks/postgres-adoption","h":"#how-to-connect-the-nwaku-to-postgres","p":509},{"i":515,"t":"https://github.com/waku-org/nwaku-compose https://github.com/waku-org/test-waku-query","s":"Examples of nwaku using Postgres","u":"/research/benchmarks/postgres-adoption","h":"#examples-of-nwaku-using-postgres","p":509},{"i":517,"t":"The following repository was created as a tool to stress and compare performance between nwaku+Postgres and nwaku+SQLite: https://github.com/waku-org/test-waku-query","s":"Stress tests","u":"/research/benchmarks/postgres-adoption","h":"#stress-tests","p":509},{"i":519,"t":"Maximum insert throughput​ Scenario 1 node subscribed to pubsubtopic ‘x’ and the Store protocol mounted. ‘n’ nodes connected to the “store” node, and publishing messages simultaneously to pubsubtopic ‘x’. All nodes running locally in a Dell Latitude 7640. Each published message is fixed, 1.4 KB: publish_one_client.sh The next script is used to simulate multiple nodes publishing messages: publish_multiple_clients.sh Sought goal Find out the maximum number of concurrent inserts that both SQLite and Postgres could support, and check whether Postgres behaves better than SQLite or not. Conclusion Messages are lost after a certain threshold, and this message loss is due to limitations in the Relay protocol (GossipSub - libp2p.) For example, if we set 30 nodes publishing 300 messages simultaneously, then 8997 rows were stored and not the expected 9000, in both SQLite and Postgres databases. The reason why few messages were lost is because the message rate was higher than the relay protocol can support, and therefore a few messages were not stored. In this example, the test took 38.8’’, and therefore, the node was receiving 232 msgs/sec, which is much more than the normal rate a node will work with, which is ~10 msgs/sec (rate extracted from Grafana’s stats for the status.prod fleet.) As a conclusion, the bottleneck is within the Relay protocol itself and not the underlying databases. Or, in other words, both SQLite and Postgres can support the maximum insert rate a Waku node will operate within normal conditions.","s":"Insert test results","u":"/research/benchmarks/postgres-adoption","h":"#insert-test-results","p":509},{"i":521,"t":"In this case, we are comparing Store performance by means of Rest service. Scenario nodea: one _nwaku node with Store and connected to Postgres. nodeb: one _nwaku node with Store and using SQLite. Both Postgres and SQLite contain +1 million rows. nodec: one _nwaku node with REST enabled and acting as a Store client for node_a. noded: one _nwaku node with REST enabled and acting as a Store client for node_b. With jmeter, 10 users make REST Store requests concurrently to each of the “rest” nodes (node_c and node_d.) All nwaku nodes running statusteam/nim-waku:v0.19.0 This is the jmeter project used. Results With this, the node_b brings a higher throughput than the node_a and that indicates that the node that uses SQLite performs better. The following shows the measures taken by jmeter with regard to the REST requests.","s":"Query test results (jmeter)","u":"/research/benchmarks/postgres-adoption","h":"#query-test-results-jmeter","p":509},{"i":523,"t":"In this test suite, only the Store protocol is being analyzed, i.e. without REST. For that, a go-waku node is used, which acts as Store client. On the other hand, we have another go-waku app that publishes random Relay messages periodically. Therefore, this can be considered a more realistic approach. The following diagram shows the topology used: For that, the next apps were used: Waku-publisher. This app can publish Relay messages with different numbers of clients Waku-store-query-generator. This app is based on the Waku-publisher but in this case, it can spawn concurrent go-waku Store clients. That topology is defined in this docker-compose file. Notice that the two nwaku nodes run the very same version, which is compiled locally. Comparing archive SQLite & Postgres performance in nwaku-b6dd6899​ The next results were obtained by running the docker-compose-manual-binaries.yml from test-waku-query-c078075 in the sandbox machine (metal-01.he-eu-hel1.wakudev.misc.statusim.net.) Scenario 1 Store rate: 1 user generating 1 store-req/sec. Relay rate: 1 user generating 10msg/sec, 10KB each. In this case, we can see that the SQLite performance is better regarding the store requests. The following graph shows how the SQLite node has blocking periods whereas the Postgres always gives a steady rate. Scenario 2 Store rate: 10 users generating 1 store-req/sec. Relay rate: 1 user generating 10msg/sec, 10KB each. In this case, is more evident that the SQLite performs better. Scenario 3 Store rate: 25 users generating 1 store-req/sec. Relay rate: 1 user generating 10msg/sec, 10KB each. In this case, the performance is similar regarding the timings. The store rate is bigger in SQLite and Postgres keeps the same level as in scenario 2. Comparing archive SQLite & Postgres performance in nwaku-b452ed8​ This nwaku commit is after a few Postgres optimizations were applied. The next results were obtained by running the docker-compose-manual-binaries.yml from test-waku-query-c078075 in the sandbox machine (metal-01.he-eu-hel1.wakudev.misc.statusim.net.) Scenario 1 Store rate 1 user generating 1 store-req/sec. Notice that the current Store query used generates pagination which provokes more subsequent queries than the 1 req/sec that would be expected without pagination. Relay rate: 1 user generating 10msg/sec, 10KB each. It cannot be appreciated but the average *Store* time was 11ms. Scenario 2 Store rate: 10 users generating 1 store-req/sec. Notice that the current Store query used generates pagination which provokes more subsequent queries than the 10 req/sec that would be expected without pagination. Relay rate: 1 user generating 10msg/sec, 10KB each. Scenario 3 Store rate: 25 users generating 1 store-req/sec. Notice that the current Store query used generates pagination which provokes more subsequent queries than the 25 req/sec that would be expected without pagination. Relay rate: 1 user generating 10msg/sec, 10KB each. Conclusions​ After comparing both systems, SQLite performs much better than Postgres However, a benefit of using Postgres is that it performs asynchronous operations, and therefore doesn’t consume CPU time that would be better invested in Relay for example. Remember that nwaku is single-threaded and chronos performs orchestration among a bunch of async tasks, and therefore it is not a good practice to block the whole nwaku process in a query, as happens with SQLite After applying a few Postgres enhancements, it can be noticed that the use of concurrent Store queries doesn’t go below the 250ms barrier. The reason for that is that most of the time is being consumed in this point. The libpqisBusy() function indicates that the connection is still busy even the queries finished. Notice that we usually have a rate below 1100 req/minute in status.prod fleet (checked November 7, 2023.)","s":"Query test results (only Store protocol)","u":"/research/benchmarks/postgres-adoption","h":"#query-test-results-only-store-protocol","p":509},{"i":525,"t":"This study aims to look for possible issues when having only one single database while several Waku nodes insert or retrieve data from it. The following diagram shows the scenery used for such analysis. There are three nim-waku nodes that are connected to the same database and all of them are trying to write messages to the same PostgreSQL instance. With that, it is very common to see errors like: ERR 2023-11-27 13:18:07.575+00:00 failed to insert message topics=\"waku archive\" tid=2921 file=archive.nim:111 err=\"error in runStmt: error in dbConnQueryPrepared calling waitQueryToFinish: error in query: ERROR: duplicate key value violates unique constraint \\\"messageindex\\\"\\nDETAIL: Key (storedat, id, pubsubtopic)=(1701091087417938405, 479c95bbf74222417abf76c7f9c480a6790e454374dc4f59bbb15ca183ce1abd, /waku/2/default-waku/proto) already exists.\\n The db-postgres-hammer is aimed to stress the database from the select point of view. It performs N concurrent select queries with a certain rate. Results​ The following results were obtained by using the sandbox machine (metal-01.he-eu-hel1.wakudev.misc) and running nim-waku nodes from https://github.com/waku-org/nwaku/tree/b452ed865466a33b7f5b87fa937a8471b28e466e and using the test-waku-query project from https://github.com/waku-org/test-waku-query/tree/fef29cea182cc744c7940abc6c96d38a68739356 The following shows the results Two nwaku-postgres-additional inserting messages plus 50 db-postgres-hammer making 10 selects per second. Five nwaku-postgres-additional inserting messages plus 50 db-postgres-hammer making 10 selects per second. In this case, the insert time gets more spread because the insert operations are shared amongst five more nodes. The Store query time remains the same on average. Five nwaku-postgres-additional inserting messages plus 100 db-postgres-hammer making 10 selects per second. This case is similar to 2. but stressing more the database.","s":"Multiple nodes & one single database","u":"/research/benchmarks/postgres-adoption","h":"#multiple-nodes--one-single-database","p":509},{"i":528,"t":"Since RLN has been chosen as the spamming protection mechanism for waku, we must understand the practical implications of using it. This issue explains the main differences between relay and rln-relay and gives some benchmarks after running simulations using waku-simulator, in a network with the following characteristics: 100 nwaku nodes, each one with a valid rln membership and publishing a message every 10 seconds to a common topic. rln contract deployed in Ethereum Sepolia 10.000 memberships registered in the contract pure relay (store and light protocols disabled) The main deltas rln vs rln-relay are: New proof field in WakuMessage containing 384 extra bytes. This field must be generated and attached to each message. New validator, that uses proof to Accept or Reject the message. The proof has to be verified. New dependency on a blockchain, Ethereum, or any EVM chain, to keep track of the members allowed to publish. But what are the practical implications of these?","s":"Introduction","u":"/research/research-and-studies/rln-key-benchmarks","h":"#introduction","p":526},{"i":530,"t":"Proof generation is constant-ish. 0.15 second for each proof Proof verification is constant-ish, 0.012 seconds. In a network with 10k nodes and D=6 this would add an overhead delay of 0.06 seconds. Gossipsub scoring drops connections from spammer peers, which acts as the punishment (instead of slashing). Validated in the simulation. Rln doesn't have any impact on memory consumption.","s":"TLDR:","u":"/research/research-and-studies/rln-key-benchmarks","h":"#tldr","p":526},{"i":532,"t":"Seems that proof generation times stay constant no matter the size of the message. In the following simulation it was increased from: 1kB, 10kB, 50kB, 150kB. On average it takes 0.15 seconds to calculate the message proof. This means that when a node wants to send a message, it will need to spend this time generating the proof. It seems very reasonable and it actually acts as a mini proof of work, where a consumer computer won't be able to publish a really high number of messages per second.","s":"Proof generation times","u":"/research/research-and-studies/rln-key-benchmarks","h":"#proof-generation-times","p":526},{"i":534,"t":"On the other hand, rln also adds an overhead in the gossipsub validation process. On average it takes 0.012 seconds to verify the proof. It seems that when we increase the message size, validation time seems to increase a bit, which can be for any other reason besides rln itself (eg deserializing the message might take longer). This number seems reasonable and shouldn't affect that much the average delay of a message. Assuming a d-regular graph, with 10k nodes and D=6, we can have up to log(total_nodes)/log(D)=5 hops. So in the worst case, rln will add a network latency of 0.012*5 = 0.06 seconds","s":"Proof verification times","u":"/research/research-and-studies/rln-key-benchmarks","h":"#proof-verification-times","p":526},{"i":536,"t":"For the initial release of RLN, slashing won't be implemented and it still remains unclear if it will be implemented in the future. Luckily, even if slashing is not implemented rln can be used to detect spam and punish the sender off-chain (instead of slashing an onchain collateral). This is done with gossipsub scoring. In the following simulation, we can see 100 nwaku interconnected nodes, where one of them suddenly starts spamming the network with multiple valid rln messages 3000 messages/minute. Since its rate limited to 1msg/10 seconds, we can see that in almost no time, every node in the network disconnects from the spammer peer (see red node), leaving it with 0 peers, which disincentivise such attacks and without requiring a financial slashing.","s":"Spam protection","u":"/research/research-and-studies/rln-key-benchmarks","h":"#spam-protection","p":526},{"i":538,"t":"Using RLN implies that waku should now piggyback on a blockchain (the case study uses Ethereum Sepolia) and has to stay up to date with the latest events emitted by the rln smart contract. These events are used to locally construct a tree that contains all members allowed to create valid proofs to send messages. Some numbers: A tree with 10k members takes 2Mbytes of space. Negligible. A tree with 10k members takes `<4 minutes to synchronize. Assumable since it's done just once. With a block range of 5000 blocks for each request, we would need 520 requests to synchronize 1 year of historical data from the tree. Assumable since most of the free endpoints out there allow 100k/day.","s":"RLN tree sync","u":"/research/research-and-studies/rln-key-benchmarks","h":"#rln-tree-sync","p":526},{"i":540,"t":"Same simulation with 100 nodes was executed with rln and without rln: Memory consumption is almost identical with rln without rln Couldn't capture cpu metrics Minor differences in messages per seconds is due to injection technique, nothing related to rln itself.","s":"Performance relay vs. rln-relay","u":"/research/research-and-studies/rln-key-benchmarks","h":"#performance-relay-vs-rln-relay","p":526},{"i":542,"t":"On this page Waku is a nascent technology and the Waku community is still growing. Hence, the Waku team is keen to work closely with projects to help leverage Waku technology to drive the success of their own applications. We describe below the expected flow for working with Waku and some rules of engagement to set expectations for project teams interacting with the Waku team.","s":"Rules of Engagement","u":"/rules-of-engagement","h":"","p":541},{"i":544,"t":"We encourage the initial discussion to happen over a video call. However, in-person event or online discussions are also an option. During this initial interaction, the project team should present their product and the needs they have in relation to peer-to-peer communication and real time interaction. The Waku team will provide an overview of Waku and point to specific protocol and software that should help fulfil such needs. Benefits and caveats are highlighted and further documentation and examples will be provided.","s":"1. Initial discussion","u":"/rules-of-engagement","h":"#1-initial-discussion","p":541},{"i":546,"t":"Projects should review Waku documentations and libraries in their own time; start building a PoC using Waku. Projects should start designing over Waku and come up with skeleton design or user flows about specific friction points or complex area (e.g. user experience, scaling). Project should appoint one or two Waku SME (Subject Matter Expert) to drive most discussions with Waku team to start acquire expertise on Waku behaviour. Project's Waku SMEs should present unresolved design issues to Waku team. The Waku team will then review and provide skeleton design solutions on how to overcome said unresolved or complex issues.","s":"2. Solution design","u":"/rules-of-engagement","h":"#2-solution-design","p":541},{"i":548,"t":"The project should finalise a design, solution or protocol they will build using Waku. If they wish to, they can present this solution to the Waku team to get feedback and identify technical gaps. The Waku team can provide feedback, highlight potential caveats, and communicate on delivery timeline for gaps, if any. note While the Waku team can provide feedback or even design potential solution on how Waku could be integrated in an application. It is the responsibility of the project team to understand the potential caveats and limitations that may incur with such a design. The Waku team can provide options, but it is up to the project team to decide on the final solution.","s":"3. Commitment","u":"/rules-of-engagement","h":"#3-commitment","p":541},{"i":550,"t":"The project then start building their MVP using Waku. The Waku team can provide support regarding API usage, bugs encountered, documentation gaps. Waku team will use feedback raised by project to improve APIs, fix bugs and enhance documentation. Waku team continues R&D to deliver any committed technical gaps. Project delivers their MVP. note The Waku team is keen to help any usage of Waku library. Please note that code snippets are necessary for preliminary investigations of issues. Sometimes, a code snippet is not enough; in this case, a minimal reproduction repo is necessary to allow us to do further investigation. If the project is open-source, then the Waku team might try to further investigate using it, as long as the reproduction steps are easy. If no code is provided to help with the investigation, then there is nothing the Waku team can do. For any unresolved issue, the project must open an issue on the related GitHub repository under the waku-org organisation.","s":"4. Building","u":"/rules-of-engagement","h":"#4-building","p":541},{"i":552,"t":"Once the project application is live, the Waku team is keen to maintain regular contact. This can include discussion around performance, bugs found by users, etc. The Waku team is keen to regularly present new and upcoming development to project team, highlight items that are particularly relevant. If a project wishes to take onboard any new Waku protocol, or decide to extend their product with a new functionality using Waku, the circle can resume from step 1.","s":"5. Ongoing relation","u":"/rules-of-engagement","h":"#5-ongoing-relation","p":541},{"i":554,"t":"TLDR: We present the results of 1000 nwaku nodes running rln using different message sizes, in a real network with bandwidth limitations and network delays. The goal is to study the message propagation delay distribution, and how it's affected by i) rln and ii) message size in a real environment. We observe that for messages of 10kB the average end-to-end propagation delay is 508 ms. We can also observe that the message propagation delays are severely affected when increasing the message size, which indicates that it is not a good idea to use waku for messages of eg. 500kB. See simulation parameters.","s":"Message Propagation Times With Waku-RLN","u":"/research/research-and-studies/message-propagation","h":"","p":553},{"i":556,"t":"Waku uses relay as a routing protocol, which is an adaptation of gossipsub. It routes messages following a publisher/subscriber architecture, where nodes can publish messages or subscribe to topics. If message m is published to topic t, all i nodes n_1...n_i subscribed to t will get m. The relay protocol ensures that every node gets the messages of the topics it is subscribed to. However, since relay works in a decentralized manner, all nodes contribute to the gossiping of a message, until it has successfully reached all the interested nodes (subscribed to it). This means that a message can travel multiple hops until it reaches all nodes. The amount of hops determines the message propagation time, which is measured as the time difference of when the node published the message and when another node received. This issue aims to go from theory to practice, by i) understanding message propagation times in theory and ii) presenting nwaku simulation results in an end-to-end setup with rln, with real message propagation times.","s":"Introduction","u":"/research/research-and-studies/message-propagation","h":"#introduction","p":553},{"i":558,"t":"Let's start with message propagation times in theory. On a high level, it depends on: The gossipsub configuration, being D one of the most important parameters. This sets the hops that a message will travel to reach all nodes. Higher D, less hops, less delay. Note that a higher D implies more bandwidth consumption. The node. Different nodes will see different propagation times, because a message can travel different paths. A node connected directly to the publisher (1 hop) will see lower propagation times than other nodes further away. Individual propagation times. Since a message can travel multiple hops to reach its destination, each hop adds a contribution to the overall message propagation time. This individual propagation time depends on the characteristics on the nodes involved in the connections. In a D-regular graph, like the one formed by waku nodes around a topic, the maximum amount of hops that a message can travel to reach all nodes can be calculated as ceil(log(total_nodes)/log(D)). For example, with log(1000)/log(6) = 3.85 = 4. So in a network with 1000 nodes and D=6, no matter which node publishes the message, in 4 hops it will reach all the nodes. Notice the \"worst case\" since some nodes might be directly connected to the publisher, so they will get the message in just 1 hop. But how long does it take to jump each hop? It depends on: The latency between nodes. Can be measured as the time to respond to a ping. The size of the messages. The bigger the message, the more time it takes to transmit. Nodes bandwidth. Sender upload bandwidth and receiver download bandwidth. More important when using big message sizes. Message validation time. When each node receives a message, it applies some validation to decide if the message is further gossiped or not. In the case of waku, this is RLN (paper, rfc) Assuming a message m that travels 4 hops from node n1 (publisher) to n5 (subscriber) we can calculate the message propagation time mpt=ipt_1+ipt_2+ipt_3+ipt_4 where ipt is the individual propagation time between each node in the chain. However, specific message propagation times are useless, we need average times under specific conditions. And for this, we need simulations.","s":"Theory","u":"/research/research-and-studies/message-propagation","h":"#theory","p":553},{"i":560,"t":"Using shadow simulator, we have developed a tool that allows to simulate message propagation delays of nwaku (using a slightly modified branch, mainly to instrument it with tools to measure the times + starting from an already connected mesh. Thanks @Menduist for the help. Note that running this simulation requires a significant amount of resources, done with 256 GB of RAM. The configuration of the simulation is (see config): latency=100ms. Average latency in our current waku network. Thanks @vpavlin for the measurements. See this for live data. down_bandwidth=83Mbps, up_bandwidth=38Mbps. As shown in Table 2 that's the worldwide median speed. D=6, which is the current nwaku configuration. nodes=1000. Amount of nodes used in the simulation nwaku was used with a minor modification A total of 10 messages were published, that led to 9990 received messages. Since shadow doesn't take into account CPU times (by now), we simulate it with sleepAsync as per https://github.com/waku-org/research/issues/23 findings. 0.012 seconds for proof verification and 0.15 seconds for proof generation.","s":"Simulations","u":"/research/research-and-studies/message-propagation","h":"#simulations","p":553},{"i":562,"t":"The following figure shows the message propagation time with real simulations, showing the distribution in a network with the above configuration with three different message sizes: 10kB, 100kB, 500kB. Note that the whiskers indicate the best/worst values and the box contains P25 to P75 values. Average mu and P95 are also shown. Raw data here. Important note. The first messages sent in the simulations are omitted, since they show an abnormal propagation delay that doesn't reflect reality. This is due to how flow control works in TCP, where right after connection, the sender node has no idea of the \"bandwidth\" of the receiver node, so it will start sending packages at a lower rate. This translates into high transmission times, and it's more pronounced when dealing with big message sizes. In other words, in a 100Mpbs link, 100Mbits won't be sent in 1 second, or at least not a the beginning, when the node is slowly increasing the rate until based on ACK/NACK ratio. For more information about this, this is explained in here. Conclusions: Using small messages 10kB the average propagation delay is 508 ms, quite reasonable for applications using waku. The variance is acceptable, with 95% of the messages arriving in <627 ms. When using a size of 10kB we can see that the best case propagation delay is 263 ms. This corresponds to the nodes that are just 1 hop from the publisher. The proof generation time 0.15 seconds affects the most, where the rest is the inter-node latency and the transmission of the message itself. We can see that the message propagation delay increases with big messages, 100kB and 500kB. So its probably not a good idea to use waku for such big messages. Note that these simulations had 1000 nodes, so if we scale it to 10000 or beyond, propagation times would be worse. Best case propagation time (lower part of the whisker) is quite similar in all cases. This is because it corresponds to the node that is just 1 hop away from the publisher. Future work: Current waku D values (average of 6 ranging from 4 to 12) have a huge impact on the bandwidth that a node consumes. Are we willing to lower D in order to reduce bandwidth but increase message propagation times? Since shadow doesn't take CPU time into account, it's currently simulated for rln, which should be the biggest bottleneck. Once shadow has this feature times would be more accurate.","s":"Results","u":"/research/research-and-studies/message-propagation","h":"#results","p":553},{"i":564,"t":"On this page Last updated: 14 February 2024 These website terms of use ('Website Terms of Use') are entered into by you and us, and they govern your access and use of this Website, including any content and functionality contained in the Website. It is your responsibility to read the Website Terms of Use carefully before your use of the Website and your use of the Website means you have agreed to be bound and comply with these Website Terms of Use. If you do not agree with these Website Terms of Use, you must not access or use the Website.","s":"Terms of Use","u":"/terms","h":"","p":563},{"i":566,"t":"For the purposes of these Website Terms of Use, the relevant entity is the Logos Collective Association, which has its registered office in Zug and its legal domicile address at: Logos Collective Association c/o PST Consulting GmbH Baarerstrasse 10 6300 Zug Switzerland Whenever we refer to “Logos”, “we”, “us” or any other similar references, we are referring to the Logos Collective Association.","s":"1) Who we are","u":"/terms","h":"#1-who-we-are","p":563},{"i":568,"t":"The Website is provided by us on an ‘as is’ basis and you use the Website at your own sole discretion and risk. We disclaim all warranties of any kind, express or implied, including without limitation the warranties of merchantability, fitness for a particular purpose, and non-infringement of intellectual property or other violation of rights. We do not warrant or make any representations concerning the completeness, accuracy, legality, utility, reliability, suitability or availability of the use of the Website, the content on this Website or otherwise relating to the Website, such content or on any sites linked to this site.These disclaimers will apply to the maximum extent permitted by applicable law. We make no claims that the Website or any of its content is accessible, legally compliant or appropriate in your jurisdiction. Your access or use of the Website is at your own sole discretion and you are solely responsible for complying with any applicable local laws. The content herein or as accessible through this website is intended to be made available for informational purposes only and should not be considered as creating any expectations or forming the basis of any contract, commitment or binding obligation with us. No information herein shall be considered to contain or be relied upon as a promise, representation, warranty or guarantee, whether express or implied and whether as to the past, present or the future in relation to the projects and matters described herein. The information contained herein does not constitute financial, legal, tax, or other advice and should not be treated as such. Nothing in this Website should be construed by you as an offer to buy or sell, or soliciting any offer to buy or sell any tokens or any security.","s":"2) Disclaimers","u":"/terms","h":"#2-disclaimers","p":563},{"i":570,"t":"The Website may also contain forward-looking statements that are based on current expectations, estimates, forecasts, assumptions and projections about the technology, industry and markets in general. The forward looking statements, which may include statements about the roadmap, project descriptions, technical details, functionalities, features, the development and use of tokens by projects, and any other statements related to such matters or as accessible through this website are subject to a high degree of risk and uncertainty. The forward looking statements are subject to change based on, among other things, market conditions, technical developments, and regulatory environment. The actual development and results, including the order and the timeline, might vary from what’s presented. The information contained herein is a summary and does not purport to be accurate, reliable or complete and we bear no responsibility for the accuracy, reliability or completeness of information contained herein. Because of the high degree of risk and uncertainty described above, you should not place undue reliance on any matters described in this website or as accessible through this website. While we aim to update our website regularly, all information, including the timeline and the specifics of each stage, is subject to change and may be amended or supplemented at any time, without notice and at our sole discretion.","s":"3) Forward looking statements","u":"/terms","h":"#3-forward-looking-statements","p":563},{"i":572,"t":"The Website and its contents are made available under Creative Commons Attribution 4.0 International license (CC-BY 4.0). In essence this licence allows users to copy, modify and distribute the content in any format for any purpose, including commercial use, subject to certain requirements such as attributing us. For the full terms of this licence, please refer to the following website: https://creativecommons.org/licenses/by/4.0/.","s":"4) Intellectual property rights","u":"/terms","h":"#4-intellectual-property-rights","p":563},{"i":574,"t":"To the extent the Website provides any links to a third party website, then their terms and conditions, including privacy policies, govern your use of those third party websites. By linking such third party websites, Status does not represent or imply that it endorses or supports such third party websites or content therein, or that it believes such third party websites and content therein to be accurate, useful or non-harmful. We have no control over such third party websites and will not be liable for your use of or activities on any third party websites accessed through the Website. If you access such third party websites through the Website, it is at your own risk and you are solely responsible for your activities on such third party websites.","s":"5) Third-party website links","u":"/terms","h":"#5-third-party-website-links","p":563},{"i":576,"t":"We will not be held liable to you under any contract, negligence, strict liability, or other legal or equitable theory for any lost profits, cost of procurement for substitute services, or any special, incidental, or consequential damages related to, arising from, or in any way connected with these Website Terms of Use, the Website, the content on the Website, or your use of the Website, even if we have been advised of the possibility of such damages. In any event, our aggregate liability for such claims is limited to EUR 100 (one hundred Euros). This limitation of liability will apply to the maximum extent permitted by applicable law.","s":"6) Limitation of liability","u":"/terms","h":"#6-limitation-of-liability","p":563},{"i":578,"t":"You shall indemnify us and hold us harmless from and against any and all claims, damages and expenses, including attorneys’ fees, arising from or related to your use of the Website, the content on the Website, including without limitation your violation of these Website Terms of Use.","s":"7) Indemnity","u":"/terms","h":"#7-indemnity","p":563},{"i":580,"t":"We may modify or replace any part of this Website Terms of Use at any time and without notice. You are responsible for checking the Website periodically for any changes. The new Website Terms of Use will be effective immediately upon its posting on the Website.","s":"8) Modifications","u":"/terms","h":"#8-modifications","p":563},{"i":582,"t":"Swiss law governs these Website Terms of Use and any disputes between you and us, whether in court or arbitration, without regard to conflict of laws provisions.","s":"9) Governing law","u":"/terms","h":"#9-governing-law","p":563},{"i":584,"t":"In these terms, “dispute” has the broadest meaning enforceable by law and includes any claim you make against or controversy you may have in relation to these Website Terms of Use, the Website, the content on the Website, or your use of the Website. We prefer arbitration over litigation as we believe it meets our principle of resolving disputes in the most effective and cost effective manner. You are bound by the following arbitration clause, which waives your right to litigation and to be heard by a judge. Please note that court review of an arbitration award is limited. You also waive all your rights to a jury trial (if any) in any and all jurisdictions. If a (potential) dispute arises, you must first use your reasonable efforts to resolve it amicably with us. If these efforts do not result in a resolution of such dispute, you shall then send us a written notice of dispute setting out (i) the nature of the dispute, and the claim you are making; and (ii) the remedy you are seeking. If we and you are unable to further resolve this dispute within sixty (60) calendar days of us receiving this notice of dispute, then any such dispute will be referred to and finally resolved by you and us through an arbitration administered by the Swiss Chambers’ Arbitration Institution in accordance with the Swiss Rules of International Arbitration for the time being in force, which rules are deemed to be incorporated herein by reference. The arbitral decision may be enforced in any court. The arbitration will be held in Zug, Switzerland, and may be conducted via video conference virtual/online methods if possible. The tribunal will consist of one arbitrator, and all proceedings as well as communications between the parties will be kept confidential. The language of the arbitration will be in English. Payment of all relevant fees in respect of the arbitration, including filing, administration and arbitrator fees will be in accordance with the Swiss Rules of International Arbitration. Regardless of any applicable statute of limitations, you must bring any claims within one year after the claim arose or the time when you should have reasonably known about the claim. You also waive the right to participate in a class action lawsuit or a classwide arbitration against us.","s":"10) Disputes","u":"/terms","h":"#10-disputes","p":563},{"i":586,"t":"These Website Terms of Use cover the entire agreement between you and us regarding the Website and supersede all prior and contemporaneous understandings, agreements, representations and warranties, both written and oral, with respect to the Website. The captions and headings identifying sections and subsections of these Website Terms of Use are for reference only and do not define, modify, expand, limit, or affect the interpretation of any provisions of these Website Terms of Use. If any part of these Website Terms of Use is held invalid or unenforceable, that part will be severable from these Website Terms of Use, and the remaining portions will remain in full force and effect. If we fail to enforce any of these Website Terms of Use, that does not mean that we have waived our right to enforce them. If you have any specific questions about these Website Terms of Use, please contact us at legal@free.technology. This document is licensed under CC-BY-SA.","s":"11) About these Website Terms of Use","u":"/terms","h":"#11-about-these-website-terms-of-use","p":563}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/2",[0,5.058,1,1.271,2,4.814,3,2.176,4,4.287,5,3.22,6,5.77,7,5.77,8,5.77,9,5.058,10,5.362,11,5.058,12,5.058,13,3.819,14,2.712,15,5.362,16,3.938,17,4.438,18,3.639,19,5.77,20,5.77,21,3.411,22,3.344,23,3.054,24,3.819,25,5.058,26,4.438,27,3.107,28,4.287,29,4.031,30,2.151,31,0.853]],["t/4",[1,1.38,29,3.351,30,3.261,31,1.252,32,1.794,33,2.78,34,5.312,35,3.098,36,4.458,37,0.591,38,2.381,39,2.457,40,2.896,41,2.687,42,4.003,43,3.672,44,4.471,45,7.287,46,3.606,47,4.738,48,4.003,49,1.896,50,3.672,51,4.003,52,2.124,53,1.538,54,4.205,55,3.564,56,4.458,57,2.727,58,3.69,59,4.798,60,3.564,61,4.458]],["t/6",[1,1.378,13,2.782,14,2.549,21,4.769,28,5.992,37,0.861,39,2.152,40,2.537,41,1.333,42,5.005,44,2.855,58,4.614,59,5.998,60,5.196,61,6.5,62,2.263,63,1.766,64,2.152,65,4.203,66,2.188,67,2.303,68,2.592,69,2.489,70,4.654,71,4.586,72,2.436,73,2.389,74,3.359,75,4.19,76,4.316,77,3.684,78,4.203,79,3.906,80,4.654,81,2.303,82,3.122,83,3.359,84,2.086,85,3.684,86,6.131,87,2.936,88,4.654,89,4.654,90,4.203,91,4.203,92,7.745,93,4.654]],["t/8",[1,1.565,14,2.967,21,4.813,30,2.1,39,2.885,40,3.4,53,1.805,58,5.635,60,5.443,61,6.808,68,3.474,86,6.421,90,7.326,91,7.326,94,1.665,95,5.235,96,6.421,97,3.935,98,6.237,99,6.421,100,6.237]],["t/10",[1,1.485,13,3.43,26,3.986,31,0.766,32,1.15,37,0.638,39,2.654,40,3.128,41,1.644,58,3.986,69,2.15,82,3.85,94,1.532,101,5.046,102,5.172,103,4.542,104,2.946,105,3.43,106,5.785,107,4.373,108,5.738,109,5.738,110,2.79,111,3.346,112,3.799,113,2.024,114,3.986,115,5.182,116,2.946,117,2.84,118,2.946,119,6.443,120,5.738,121,5.182,122,5.738,123,3.43,124,1.251]],["t/12",[0,4.749,1,1.45,5,3.024,14,1.975,16,2.868,21,3.204,28,5.306,37,0.667,38,2.689,44,3.682,53,1.737,68,3.342,69,3.315,71,3.08,72,3.14,73,3.08,74,5.708,76,5.139,83,5.708,94,1.602,99,4.749,124,1.308,125,3.418,126,4.026,127,5.036,128,3.204,129,3.785,130,6,131,5.708,132,2.367,133,6,134,2.499,135,2.775]],["t/14",[1,1.054,35,3.984,37,0.956,69,3.701,128,3.648,135,4.352,136,5.774,137,4.932,138,4.084,139,5.973,140,5.973,141,4.192,142,5.734,143,3.648,144,2.886,145,1.918,146,6.832]],["t/16",[14,2.159,16,3.135,35,2.667,37,0.853,57,2.348,63,1.735,64,2.115,84,2.049,107,2.605,124,0.997,126,3.068,128,3.502,135,3.547,136,4.706,137,3.301,138,2.733,139,4.556,140,4.556,141,2.806,142,5.505,143,2.441,144,2.771,145,2.153,147,1.828,148,1.255,149,3.176,150,3.62,151,1.692,152,2.733,153,3.176,154,2.115,155,4.129,156,2.393,157,3.838,158,4.573,159,2.15,160,4.129,161,2.971,162,3.301,163,3.433,164,2.885,165,4.129,166,4.573,167,4.573,168,2.733,169,3.502,170,2.667,171,3.838,172,5.505,173,3.62,174,3.068,175,4.129,176,4.129,177,3.838,178,4.129,179,1.988,180,7.022,181,4.573,182,5.923,183,4.573]],["t/18",[1,1.05,13,1.816,14,2.442,21,1.622,30,1.621,31,1.179,32,0.965,37,1.086,39,1.405,41,0.87,49,1.084,57,1.56,69,2.78,75,3.038,76,3.129,81,2.383,82,4.566,94,0.811,99,2.405,106,3.628,107,2.743,110,2.908,111,1.772,112,1.504,113,1.072,114,2.111,115,2.744,116,1.56,117,1.504,124,1.304,135,3.147,138,2.879,148,1.51,179,1.321,184,1.362,185,2.744,186,1.951,187,2.405,188,2.744,189,4.831,190,1.951,191,1.9,192,2.685,193,2.52,194,2.851,195,2.006,196,1.5,197,1.772,198,3.194,199,3.129,200,3.345,201,2.193,202,2.955,203,1.647,204,2.879,205,2.302,206,1.951,207,3.038,208,2.29,209,1.692,210,1.59,211,3.231,212,2.472,213,2.55,214,1.692,215,1.423,216,2.808,217,2.193,218,1.975,219,2.29,220,1.816,221,2.29,222,1.656,223,2.193,224,2.405,225,1.504,226,1.864]],["t/20",[1,1.396,17,4.368,18,3.581,29,5.144,38,2.818,69,2.356,135,2.908,202,3.858,208,4.737,227,5.678,228,2.956,229,4.538,230,4.977,231,6.287,232,4.737,233,4.186,234,4.737,235,6.144,236,4.977,237,5.678,238,5.277,239,4.218,240,3.291,241,6.287,242,4.218,243,3.427,244,4.368,245,4.977,246,5.277,247,2.775,248,3.427,249,4.368]],["t/22",[31,0.889,37,1.034,69,3.171,94,1.778,112,3.296,124,1.845,135,3.08,136,4.086,148,1.619,179,2.896,184,2.985,186,3.428,190,2.698,191,2.627,192,3.337,193,3.485,194,2.56,250,2.985,251,4.187,252,2.854,253,3.356,254,5.271]],["t/24",[1,0.814,30,1.777,31,1.322,32,1.058,37,0.921,69,1.977,104,2.709,110,4.34,132,2.861,144,2.229,145,2.779,147,2.899,179,2.295,184,2.365,186,2.138,189,2.817,192,2.861,202,3.238,203,1.277,252,2.261,255,5.757,256,2.365,257,4.03,258,5.465,259,4.23,260,4.765,261,5.742,262,5.277,263,1.977,264,3.077,265,1.929,266,2.979,267,2.138]],["t/26",[1,0.898,31,0.777,32,1.167,37,0.647,53,1.685,63,2.21,69,2.905,124,2.027,132,2.297,144,3.275,145,2.896,203,2.25,215,2.576,257,3.77,264,3.396,268,7.315,269,7.315,270,4.609,271,6.507,272,2.989,273,4.609,274,2.57,275,5.823,276,5.823]],["t/28",[1,0.693,14,2.132,32,0.901,37,0.5,38,2.014,63,2.458,67,2.224,69,1.684,113,1.585,134,2.698,144,1.899,145,2.876,147,2.59,148,1.81,190,1.821,191,1.773,192,1.773,196,2.367,203,1.088,256,3.726,259,2.621,263,1.684,264,2.621,272,2.307,277,4.5,278,3.279,279,3.368,280,4.848,281,4.43,282,5.723,283,3.387,284,5.775,285,4.059,286,3.387,287,4.676,288,3.015,289,2.503,290,2.921,291,3.558,292,4.059,293,2.45,294,4.494,295,2.4]],["t/30",[37,0.875,112,2.947,135,2.754,136,3.654,144,2.515,145,2.209,147,3.146,148,1.686,149,5.466,180,6.229,184,2.669,186,2.413,233,3.057,254,4.714,256,2.669,263,2.232,296,5.378,297,5.955,298,3.179,299,3.995,300,6.362,301,5.378,302,5.378,303,7.959,304,5.378,305,3.001,306,5.378,307,5.955,308,3.392,309,4.964,310,5.378,311,4.298]],["t/32",[1,0.854,32,1.11,37,1.012,124,1.207,132,2.184,145,2.863,147,2.996,148,1.877,169,2.956,190,3.037,192,2.957,193,3.923,233,3.848,256,3.359,257,2.692,300,3.996,312,2.956,313,5.933,314,5.536,315,5,316,5,317,4.646,318,5,319,3.598,320,4.172,321,5,322,5,323,4.646,324,7.495,325,5,326,4.646]],["t/34",[1,0.67,14,1.43,32,0.871,37,0.91,113,1.533,117,2.151,124,1.379,132,3.228,145,2.826,147,2.979,148,1.736,159,2.972,169,2.32,184,1.948,191,2.94,192,2.94,193,2.274,194,2.864,216,3.687,233,2.231,235,3.274,256,3.34,257,3.624,261,3.44,278,2.94,279,3.019,312,2.32,327,5.318,328,4.346,329,3.601,330,3.137,331,3.647,332,2.598,333,3.274,334,6.322,335,3.44,336,3.647,337,4.346,338,3.924,339,3.44,340,4.346,341,4.346,342,2.916,343,2.741,344,2.824,345,3.44,346,2.043,347,3.44]],["t/36",[14,2.289,31,0.928,37,0.967,94,1.856,124,1.516,138,4.156,148,1.33,184,3.116,186,3.522,190,2.817,191,2.743,192,3.429,193,4.55,194,3.646,216,4.055,217,5.019,218,4.518,250,3.116,251,3.441]],["t/38",[1,1.01,14,2.156,32,1.313,117,3.241,138,3.914,148,1.602,191,2.583,194,2.517,203,2.026,215,1.935,216,5.38,218,5.439,261,5.184,348,5.914,349,3.73,350,3.914,351,4.934,352,6.952,353,4.255,354,4.255,355,4.255,356,4.934,357,4.727,358,6.548,359,6.548]],["t/40",[14,1.276,31,0.517,32,0.777,69,1.452,84,1.737,94,1.034,111,2.26,117,2.875,132,2.292,135,1.792,138,2.317,145,2.996,147,2.786,148,1.112,159,1.822,194,2.679,203,0.938,215,1.717,216,5.726,217,2.797,218,2.518,233,1.99,243,2.112,256,2.604,257,4.032,263,1.452,278,1.529,279,1.57,327,3.775,329,2.207,338,3.5,339,4.599,342,2.6,343,2.445,351,2.92,352,6.56,353,2.518,354,5.389,356,4.377,360,3.875,361,2.797,362,5.246,363,5.809,364,2.92,365,2.92,366,3.875,367,3.875,368,3.875,369,3.875,370,3.875,371,3.875,372,3.875,373,3.875,374,2.317,375,3.5,376,3.5]],["t/42",[1,1.132,37,0.816,41,2.103,53,2.125,72,3.843,73,3.769,82,4.926,94,1.96,117,3.633,186,2.975,207,4.631,211,4.926,212,3.769,213,6.161,214,4.089,215,2.169,250,3.29,251,3.633,288,4.926]],["t/44",[1,1.132,37,0.816,69,2.751,82,4.926,135,3.396,162,5.299,211,6.521,214,5.008,217,5.299,243,4.002,248,4.901,377,5.532,378,3.843,379,4.771,380,5.299]],["t/46",[53,2.84,69,3.498,73,3.448,77,5.316,207,4.237,211,6.94,214,5.466,226,4.121,252,2.878,378,3.515,381,4.665,382,7.835,383,6.716,384,6.716]],["t/48",[1,0.94,13,3.642,39,2.818,53,2.58,69,2.994,72,3.189,74,4.398,128,3.253,145,1.71,186,2.469,211,6.991,214,5.269,247,2.689,378,3.189,385,4.088,386,5.113,387,5.502,388,3.642,389,3.393,390,3.738,391,3.953,392,3.738,393,6.093,394,5.502,395,6.093,396,6.093,397,6.093]],["t/50",[1,0.635,3,1.403,23,3.453,31,0.55,32,0.826,37,0.458,38,2.724,41,1.18,63,1.563,72,3.781,83,2.973,87,2.598,94,1.099,117,2.038,124,0.898,131,2.973,134,3.009,141,2.527,144,1.74,151,1.524,153,2.861,212,4.095,215,2.631,243,3.313,245,3.26,250,1.846,251,2.038,273,3.26,298,3.245,354,4.695,386,3.456,387,3.719,389,2.294,398,4.811,399,5.757,400,2.861,401,2.763,402,2.346,403,3.103,404,2.402,405,5.489,406,1.791,407,3.719,408,6.078,409,4.118,410,4.811,411,6.078,412,3.456,413,3.103,414,2.598,415,2.346,416,3.719,417,3.103,418,5.541,419,2.973,420,4.118,421,4.118,422,4.118,423,4.118,424,3.26,425,2.527,426,1.846,427,2.861,428,3.103,429,2.598,430,5.101,431,2.676,432,4.118,433,3.103,434,4.118,435,2.003,436,4.118]],["t/52",[31,0.789,37,0.871,41,1.693,104,3.034,113,2.084,117,2.925,145,2.465,212,4.02,214,3.292,215,2.762,263,2.934,298,3.156,346,2.778,379,3.84,398,6.198,418,4.106,437,4.96,438,7.93,439,3.965,440,3.875,441,3.626,442,7.071,443,5.91,444,5.91,445,2.733,446,3.034,447,5.337,448,5.337,449,7.83,450,3.84,451,5.91]],["t/54",[46,3.411,117,3.411,212,3.538,217,4.975,298,3.68,346,3.24,354,4.479,407,6.224,418,4.788,438,7.808,440,3.411,442,6.224,448,6.224,452,4.479,453,8.646,454,5.456,455,6.844,456,5.784,457,7.256,458,5.456,459,6.224,460,5.784]],["t/56",[1,0.933,32,1.212,37,0.884,38,2.71,41,1.732,46,2.992,113,2.132,145,2.492,154,2.796,212,4.081,215,2.624,230,4.786,237,5.46,242,5.333,243,4.333,356,4.556,365,4.556,379,3.929,440,3.933,441,3.71,445,2.796,446,3.104,447,5.46,452,3.929,461,7.948,462,4.2,463,7.178,464,6.046,465,6.046,466,6.046,467,5.46]],["t/58",[1,1.311,30,1.864,31,1.338,32,1.703,37,0.945,49,1.976,57,2.842,94,2.001,110,3.644,116,2.842,186,2.243,202,3.397,203,2.204,204,4.48,205,3.583,206,3.443,215,2.215,219,4.172,220,3.309,221,4.172,222,3.018,223,3.996,224,4.382,225,2.74,226,3.397,250,2.481,251,2.74,252,2.373,253,2.79,263,2.075,273,4.382,468,2.692]],["t/60",[1,0.985,31,1.1,37,0.916,69,3.088,94,1.705,110,4.434,135,2.955,144,2.699,145,2.799,203,1.547,205,3.054,206,2.589,255,5.723,256,2.864,257,3.107,258,4.814,259,3.726,265,2.336,266,3.384,469,4.612,470,4.031,471,5.77,472,3.483,473,4.438]],["t/62",[5,2.154,30,1.439,31,1.243,37,0.96,41,1.225,51,3.221,53,1.237,66,2.01,69,1.602,110,3.948,113,1.508,116,2.195,131,3.086,132,2.464,144,1.806,145,2.848,203,2.312,204,5.163,212,2.195,215,1.263,252,1.832,255,5.641,256,3.309,257,3.038,264,2.493,389,4.112,398,3.384,399,3.086,440,2.116,445,1.977,446,3.207,454,3.384,474,3.643,475,6.667,476,2.697,477,2.555,478,3.086,479,2.381,480,3.588,481,2.493,482,3.861,483,3.861,484,2.778,485,3.861,486,3.861,487,2.778,488,3.861,489,2.043]],["t/64",[1,0.852,31,1.244,37,0.896,69,1.359,94,0.968,110,3.254,113,1.279,128,1.936,132,1.43,135,1.677,136,3.39,139,2.519,140,2.519,144,2.827,145,3.018,156,1.898,194,1.394,196,1.13,205,4.057,206,3.776,255,4.649,256,3.354,257,2.686,311,4.831,378,2.891,406,1.577,426,1.625,445,1.677,471,3.274,472,1.976,473,2.519,474,3.903,484,3.59,490,1.976,491,7.274,492,6.758,493,2.356,494,3.043,495,5.617,496,3.626,497,3.274,498,6.044,499,2.617,500,4.989,501,3.626,502,3.274,503,3.626]],["t/66",[31,1.133,37,0.745,69,1.765,110,4.129,144,3.293,145,3.052,194,1.81,196,1.467,203,2.172,204,4.66,205,3.202,206,3.159,255,4.653,256,3.494,257,2.29,311,5.627,378,2.465,406,2.048,474,2.746,475,4.253,484,4.353,485,4.253,486,4.253,491,4.253,492,6.049,495,3.952,498,6.049,499,3.399,500,4.253,502,4.253,504,3.728,505,4.709]],["t/68",[31,1.222,37,0.716,69,3.104,132,2.541,135,2.979,144,2.721,145,2.806,175,7.48,195,3.45,203,2.005,210,3.371,215,2.448,255,5.754,256,2.887,257,4.027,258,4.854,259,3.756,268,5.406,271,5.406,506,6.441,507,6.441]],["t/70",[3,2.454,14,2.372,37,0.988,69,3.331,71,3.7,72,3.772,73,3.7,94,1.924,135,3.333,186,2.92,187,5.705,207,5.608,404,4.203,508,6.049,509,6.049,510,4.547,511,6.509,512,6.049]],["t/73",[69,2.583,71,3.538,72,4.945,102,5.647,126,5.801,207,5.96,346,3.24,435,3.351,513,6.892,514,5.784,515,6.224,516,6.892,517,4.975,518,4.229,519,6.892,520,6.515,521,4.975,522,4.788]],["t/75",[41,2.206,44,4.725,69,2.886,124,1.679,132,3.038,223,5.558,240,4.03,254,6.095,523,5.802,524,3.253,525,6.463,526,6.463,527,6.954,528,7.7]],["t/77",[69,2.83,72,4.788,94,2.016,126,5.067,128,4.033,154,3.493,163,3.953,207,4.765,265,2.761,529,4.908,530,6.339,531,7.553,532,6.821,533,7.553,534,6.821]],["t/79",[14,2.63,37,0.677,38,2.731,64,2.818,69,2.994,72,4.665,95,5.113,99,4.823,113,2.149,138,3.642,203,1.934,205,2.912,206,3.237,207,5.968,212,3.128,240,3.189,265,2.921,266,2.503,287,4.398,295,3.253,386,5.113,400,4.232,404,3.553,468,2.963,481,3.553,535,5.502,536,5.502,537,4.398,538,5.502,539,5.502,540,4.591]],["t/81",[3,2.5,30,2.472,37,0.816,41,2.103,50,3.7,57,3.769,69,2.751,73,3.769,101,4.281,102,4.389,207,4.631,267,2.975,520,5.532,541,4.631,542,3.92,543,5.299,544,6.161,545,3.843,546,4.926]],["t/83",[1,1.122,14,2.394,18,4.143,19,6.569,32,1.458,37,0.809,41,2.084,43,3.665,127,6.105,135,3.364,159,3.419,207,5.64,240,3.807,392,4.463,547,5.053,548,7.274,549,5.481,550,3.734,551,7.274]],["t/85",[1,1.32,5,2.83,31,1.01,32,1.126,37,1.018,71,2.883,94,1.499,124,1.225,135,2.597,148,1.637,169,4.04,186,2.275,198,5.374,199,3.649,200,3.901,201,4.053,215,1.659,250,2.517,251,2.779,263,2.104,265,2.053,266,3.515,312,2.998,344,3.649,378,2.939,414,3.542,517,4.053,518,3.445,552,4.231,553,2.597,554,4.445,555,4.231,556,3.649,557,5.071,558,5.071]],["t/87",[21,3.813,37,0.794,128,3.813,135,4.089,136,5.424,137,5.155,138,4.269,139,6.141,140,6.141,198,5.126,201,6.93,406,3.106,559,7.983]],["t/89",[37,0.706,46,1.65,113,1.176,116,1.712,118,1.712,132,1.315,134,2.157,144,2.683,145,2.896,147,2.863,148,1.885,159,1.567,163,1.745,169,1.78,190,2.573,191,2.505,192,1.315,193,1.745,194,1.282,195,1.389,196,1.039,198,4.14,199,3.366,201,4.584,203,0.807,210,1.745,216,1.944,228,2.435,256,2.846,257,3.088,266,1.37,274,1.472,278,1.315,279,1.351,280,3.704,281,3.704,282,3.903,283,2.512,284,3.598,286,2.512,289,2.885,295,1.78,319,2.167,326,2.798,327,3.366,339,2.639,391,4.062,493,2.167,524,2.188,560,6.852,561,2.167,562,5.735,563,3.366,564,5.33,565,4.1,566,4.677,567,3.011,568,2.639,569,2.512,570,1.712,571,2.639,572,3.011,573,1.818]],["t/91",[22,3.89,23,1.458,37,0.667,94,0.814,116,1.566,118,1.566,132,1.203,134,1.27,144,2.533,145,2.887,147,2.726,148,1.849,159,1.434,169,1.629,190,2.763,191,2.366,192,1.203,193,1.597,194,1.172,195,2.012,196,0.95,198,3.968,199,3.139,201,4.328,203,0.738,216,1.779,228,2.819,256,3.057,257,2.916,266,1.253,278,1.905,279,1.957,280,3.497,281,3.497,282,3.64,283,2.298,284,3.355,286,2.298,289,1.699,291,2.415,292,2.755,319,3.139,326,2.56,327,3.139,339,2.415,391,4.483,462,2.119,493,1.982,510,1.924,524,2.04,563,3.139,565,3.823,568,2.415,570,1.566,571,2.415,572,2.755,574,6.258,575,4.051,576,5.033,577,4.362,578,2.755,579,4.362,580,5.415,581,3.05,582,4.362,583,1.367,584,2.755]],["t/93",[14,0.623,21,1.011,22,2.997,27,0.92,37,0.565,63,0.718,113,1.148,118,0.972,123,1.131,132,1.284,134,0.788,144,2.419,145,2.968,147,1.711,148,1.865,169,1.738,190,0.767,191,2.005,192,0.747,193,0.991,194,0.727,198,4.093,200,5.897,201,4.133,226,1.161,228,2.012,248,1.032,256,3.311,257,2.784,263,0.709,264,1.104,266,1.337,278,1.284,279,1.319,280,3.339,282,3.83,284,4.344,291,1.498,319,2.115,320,4.712,327,3.721,330,1.366,344,1.23,388,1.131,391,4.201,406,0.823,452,3.303,524,1.375,527,2.939,541,2.701,560,3.83,563,2.115,564,2.731,565,1.498,566,2.939,567,2.939,570,0.972,571,1.498,574,4.023,575,3.409,576,4.265,577,3.866,578,1.709,580,2.939,582,1.709,585,1.498,586,1.498,587,1.588,588,5.647,589,2.731,590,1.893,591,1.893,592,1.893,593,1.893,594,0.92,595,5.082,596,3.254,597,3.254,598,2.261,599,4.281,600,1.893,601,1.893,602,1.893,603,1.893,604,1.893,605,1.893,606,1.893,607,1.893,608,2.349,609,4.281,610,1.893,611,2.349,612,1.366,613,1.893,614,2.576,615,3.254,616,1.893,617,1.893,618,1.498,619,1.709,620,1.709,621,1.893,622,3.254,623,1.893]],["t/95",[10,3.386,14,1.97,22,2.111,23,1.928,37,0.878,94,1.077,113,2.517,135,1.866,144,1.704,145,2.781,148,1.145,153,2.802,156,3.735,184,2.683,195,1.68,196,1.865,198,3.811,199,2.621,200,4.158,217,2.912,228,2.814,256,3.96,266,1.657,290,2.621,322,3.643,342,2.707,343,2.545,346,1.896,347,3.193,389,2.247,390,3.673,391,4.65,406,1.754,435,1.962,524,1.704,559,3.643,560,4.511,562,3.643,563,2.621,564,3.386,574,3.193,576,3.386,579,3.643,594,1.962,624,4.034,625,4.034,626,3.643,627,4.034,628,4.034,629,3.386,630,2.475,631,7.137,632,4.034,633,4.034,634,4.034,635,4.034,636,4.034,637,4.034,638,4.034,639,4.034,640,4.034,641,4.034,642,4.034,643,4.034,644,3.193,645,4.034]],["t/97",[13,4.558,37,0.848,69,2.858,94,2.036,106,5.746,107,4.344,110,3.708,111,4.447,112,3.774,113,2.689,114,5.297,135,3.527,186,3.09,250,3.418,251,3.774]],["t/99",[37,0.897,57,3.177,69,2.319,106,6.081,107,5.115,111,3.609,112,3.994,114,5.606,116,3.177,135,2.862,136,3.797,139,4.299,140,5.606,147,2.474,151,2.291,154,2.862,168,3.699,232,4.663,233,3.177,266,2.542,646,6.773,647,8.07,648,6.773,649,6.188,650,3.797,651,6.188,652,4.467,653,6.188,654,4.663]],["t/101",[1,1.256,16,2.441,29,5.138,32,1.024,94,1.363,106,3.847,107,2.908,113,2.873,114,6.113,134,2.127,135,2.362,147,2.041,148,0.977,151,1.89,154,2.362,193,2.672,221,3.847,235,5.342,244,4.925,250,2.288,251,2.527,439,3.426,550,2.621,556,3.318,655,5.106,656,4.611,657,3.221,658,5.106,659,5.106,660,5.106,661,5.106,662,4.285,663,3.685,664,3.426,665,5.106,666,4.285,667,4.285,668,4.285,669,2.483,670,3.318,671,4.611,672,4.285,673,4.611,674,5.106,675,3.221,676,5.106,677,7.09,678,4.042,679,5.106,680,3.685,681,4.042,682,5.106,683,4.285,684,5.106]],["t/103",[5,3.143,27,3.033,31,0.832,38,2.796,41,2.735,46,3.087,48,4.7,81,4.014,94,1.665,168,3.729,186,2.527,232,4.7,239,4.185,250,2.796,251,3.087,263,2.338,274,2.753,406,2.713,487,4.053,547,4.333,663,4.502,685,3.935,686,4.053,687,6.237,688,4.053,689,4.937,690,4.053,691,6.237,692,5.235,693,4.937,694,5.235,695,5.633,696,4.937,697,4.7]],["t/105",[5,3.075,37,0.46,41,1.186,43,2.086,81,3.02,84,1.856,85,3.277,136,4.446,145,2.393,147,1.655,379,3.965,410,5.736,435,2.013,524,1.749,685,2.612,689,3.277,694,3.475,695,3.739,698,3.739,699,4.14,700,2.306,701,4.14,702,5.923,703,6.102,704,5.511,705,3.277,706,4.14,707,4.14,708,4.14,709,4.14,710,4.14,711,7.699,712,4.14,713,2.988,714,4.14,715,4.14,716,6.082,717,6.082,718,7.246,719,7.246,720,7.246,721,7.246,722,4.14,723,4.14,724,4.14,725,6.102,726,4.14,727,6.102,728,6.102,729,6.102,730,4.14,731,4.14,732,4.14,733,4.14,734,4.14,735,4.14,736,2.612,737,4.14,738,6.102,739,4.14,740,3.277,741,4.14,742,4.14,743,4.14]],["t/107",[18,3.926,37,0.766,41,1.974,116,3.538,117,3.411,168,4.12,244,4.788,265,2.52,274,3.042,547,4.788,550,3.538,685,4.348,686,4.479,702,6.006,744,5.784,745,5.784,746,6.892,747,6.892,748,6.224,749,5.784,750,5.456,751,5.784,752,7.808,753,6.892]],["t/109",[18,5.696,30,2.383,41,2.028,81,3.503,129,4.465,490,3.858,510,4.465,668,5.94,690,4.599,700,5.57,702,6.107,754,5.603,755,7.078,756,7.939,757,3.383]],["t/111",[27,3.009,30,3.324,31,1.077,41,2.828,47,3.525,49,2.88,50,4.067,81,3.063,145,2.265,147,2.474,184,2.774,186,2.507,189,3.304,248,3.373,265,2.263,266,2.542,267,2.507,441,3.797,545,3.239,648,5.194,690,4.021,754,4.899,758,4.224,759,3.118,760,4.021,761,2.291]],["t/113",[1,1.092,30,2.383,31,0.945,37,0.787,41,2.518,49,3.137,64,3.274,67,3.503,113,2.496,184,3.172,186,2.868,189,3.779,342,4.749,343,4.465,439,5.898,469,5.109,685,4.465,686,4.599,690,4.599,700,3.942]],["t/115",[1,1.402,3,0.768,14,2.088,21,2.017,28,3.823,30,0.759,31,0.65,32,0.977,35,1.315,37,0.85,40,1.23,41,1.082,49,1.348,50,1.137,57,2.501,69,0.845,71,1.158,72,1.181,74,3.517,75,1.423,76,3.166,81,1.869,82,3.823,87,1.423,101,1.315,102,1.348,110,2.369,112,1.869,117,4.058,118,3.923,123,1.348,124,1.243,126,1.513,128,1.204,135,1.043,136,3.496,138,2.258,139,1.567,140,1.567,141,1.384,142,3.17,147,0.902,148,1.612,149,1.567,150,2.99,153,1.567,154,1.043,156,1.181,160,2.037,169,1.204,170,1.315,174,1.513,177,1.893,179,1.642,186,3.096,189,2.017,190,0.914,194,1.873,195,2.029,196,1.977,197,2.203,198,3.042,199,3.166,200,2.624,202,2.989,203,1.764,204,1.348,205,1.078,206,1.53,207,3.073,211,3.269,212,2.501,213,1.893,214,1.256,215,1.44,216,2.841,218,2.454,243,1.23,250,1.011,251,2.411,252,0.967,253,1.137,265,0.825,266,1.551,267,0.914,280,1.315,287,1.628,289,1.256,296,3.411,300,1.628,352,1.7,353,1.466,357,1.628,362,2.037,377,1.7,401,1.513,404,1.315,433,1.7,493,1.466,510,1.423,545,1.181,546,1.513,552,1.7,560,1.7,574,1.786,583,1.011,761,0.835,762,1.893,763,2.256,764,2.726,765,2.037,766,2.99,767,2.256,768,2.256,769,2.256,770,2.037,771,1.893,772,2.256,773,2.846,774,1.7,775,1.786,776,3.777,777,1.7,778,1.204,779,1.893,780,1.786]],["t/117",[1,0.94,31,0.813,37,0.677,38,2.731,49,3.376,73,4.101,125,3.471,151,2.255,156,3.189,225,3.015,247,2.689,263,2.283,265,2.228,266,3.281,381,5.549,402,3.471,441,4.902,456,5.113,542,3.253,757,2.912,760,5.191,761,2.957,778,4.265,781,4.591,782,4.823,783,4.591,784,3.844,785,6.324,786,4.398,787,3.844]],["t/119",[1,0.978,30,2.76,31,1.094,37,0.705,49,2.925,50,4.13,94,2.188,156,4.29,266,2.603,272,3.254,426,3.674,441,5.029,481,4.78,508,5.319,690,4.118,758,3.317,760,5.326,761,3.362,773,4.776,785,5.017,788,4.776,789,8.196,790,4.575]],["t/121",[1,0.872,30,2.56,31,1.146,37,0.955,49,3.278,50,3.831,73,3.904,156,3.979,179,2.459,252,2.424,263,2.119,266,2.323,381,5.967,426,2.535,440,2.799,441,4.665,481,3.298,598,3.929,690,3.675,754,4.477,758,2.96,760,3.675,761,3.179,783,4.261,784,3.568,785,4.477,790,4.082,791,5.655,792,5.655,793,5.655,794,7.603,795,5.729,796,3.02]],["t/123",[1,0.714,30,1.558,31,0.617,37,0.858,49,3.597,50,3.333,55,3.104,73,4.325,141,2.839,145,2.602,151,1.712,156,2.421,211,3.104,214,3.684,263,1.734,266,1.9,272,3.396,279,1.874,381,5.852,440,2.289,441,2.839,481,2.698,758,3.462,760,3.006,761,2.448,778,5.304,782,5.236,783,3.486,784,2.918,785,3.662,790,3.339,795,3.486,797,6.479,798,3.104,799,4.626,800,3.486,801,3.486,802,2.765,803,3.662,804,3.486,805,4.626,806,6.614,807,3.104]],["t/125",[26,3.547,27,2.483,30,1.719,31,1.174,37,0.568,41,1.463,49,3.141,53,2.052,63,1.938,116,2.621,124,1.546,148,1.558,151,1.89,184,2.288,186,2.069,196,2.209,197,2.978,203,1.236,215,1.509,228,2.4,233,2.621,247,2.254,248,3.865,265,3.38,272,2.621,279,2.069,293,2.783,329,2.908,378,2.672,391,2.527,440,2.527,481,2.978,524,2.157,754,4.042,758,2.672,759,2.573,761,3.257,800,3.847,801,3.847,808,3.847,809,4.042,810,4.611,811,3.685,812,2.592,813,2.157,814,3.547]],["t/127",[31,1.028,37,0.856,94,2.055,124,1.679,147,3.078,148,1.473,186,3.12,192,3.038,194,2.96,195,3.207,196,2.399,197,4.491,250,3.451,251,3.811]],["t/129",[1,1.036,31,1.246,32,1.346,37,0.747,69,2.517,104,3.448,132,2.649,144,2.837,145,2.842,147,3.4,179,2.921,192,3.355,255,6.485,256,3.01,257,4.136,258,5.061,259,3.916,260,6.065]],["t/131",[31,0.953,37,0.794,69,2.676,124,1.557,132,2.817,144,3.017,145,2.695,196,2.225,203,2.14,215,2.612,257,3.473,268,7.419,269,7.419,270,5.653,271,5.994,815,7.142]],["t/133",[69,2.475,144,2.789,145,2.891,147,3.364,148,1.772,194,2.538,195,2.75,196,2.058,256,3.772,277,5.846,278,3.32,279,3.41,281,5.401,283,4.976,284,4.587,285,5.963,286,4.976]],["t/135",[31,1.186,69,2.701,94,1.924,132,2.843,148,1.379,159,3.388,195,3.002,196,2.77,197,4.203,406,3.134,757,3.445,813,3.045,816,6.509,817,6.509,818,5.705,819,3.772,820,6.049,821,4.203,822,7.207]],["t/137",[14,1.598,31,0.648,94,1.296,132,3.58,145,2.773,147,1.94,148,1.737,159,3.217,194,1.866,195,2.85,196,2.132,199,3.154,203,1.175,256,2.176,257,2.36,263,1.819,264,2.831,266,2.811,272,2.492,278,1.915,279,1.967,281,4.623,327,6.119,330,3.504,332,2.902,333,3.658,474,2.831,490,2.646,570,2.492,654,3.658,761,2.934,784,3.062,813,3.636,816,4.384,821,2.831,823,4.854,824,4.854,825,4.854,826,3.504,827,4.384,828,4.854,829,4.384,830,4.074]],["t/139",[14,1.496,31,0.607,94,1.213,132,2.577,145,2.908,147,1.817,148,1.816,159,3.071,194,1.747,195,2.72,196,2.035,199,2.954,228,2.137,256,3.745,257,3.717,263,1.704,264,2.651,266,1.867,267,1.842,272,2.334,278,1.793,279,1.842,281,3.809,312,2.427,332,2.718,333,3.426,364,3.426,474,2.651,490,2.478,555,3.426,570,2.334,654,3.426,740,5.17,761,2.83,813,3.229,817,4.106,821,2.651,826,3.282,827,4.106,831,4.546,832,3.282,833,5.482,834,3.815,835,4.546,836,4.106,837,4.106,838,4.546,839,4.546,840,4.106,841,4.546,842,4.106]],["t/142",[69,2.018,144,2.275,145,2.97,148,1.407,195,3.489,196,1.678,203,1.304,256,3.754,257,2.618,265,1.969,272,2.765,327,3.499,490,4.906,568,4.263,761,3.332,762,4.519,813,2.275,821,4.885,830,6.173,833,4.519,834,4.519,842,6.642,843,9.001,844,3.887,845,3.887,846,6.642,847,5.385,848,5.385]],["t/144",[1,0.604,69,1.467,111,3.413,113,1.38,132,1.544,144,1.653,145,2.988,147,2.34,148,1.733,179,2.545,195,3.772,256,3.487,257,3.409,259,4.088,261,3.098,263,1.467,272,2.009,281,3.413,305,1.972,327,5.055,330,2.825,332,4.19,349,2.229,361,2.825,392,2.402,445,1.81,490,3.821,761,2.166,813,2.472,821,5.282,829,5.285,844,2.825,849,8.179,850,4.912,851,2.949,852,3.914,853,2.469,854,3.914,855,3.914,856,3.914,857,3.914,858,3.914,859,2.719,860,3.098,861,2.949,862,2.825]],["t/146",[31,0.57,37,0.695,113,2.203,124,0.932,145,2.816,148,1.783,179,1.859,184,1.916,192,1.686,194,1.643,195,3.757,196,2.53,197,2.493,203,1.035,233,3.207,235,3.221,256,3.639,257,2.079,263,1.602,272,2.195,327,2.778,342,2.868,343,2.697,345,3.384,346,2.01,347,3.384,445,2.889,520,3.221,568,3.384,761,3.197,813,2.639,833,3.588,834,3.588,846,3.861,849,3.861,863,7.382,864,2.602,865,5.243,866,3.588,867,6.247,868,6.247,869,5.243,870,6.247,871,4.275,872,3.588,873,4.275,874,3.588,875,2.493,876,3.861,877,3.384,878,4.275,879,4.275]],["t/148",[27,3.937,31,1.08,39,3.744,49,2.889,247,3.574,265,2.96,392,4.967,761,2.996,880,6.794]],["t/150",[37,0.76,39,3.16,49,2.438,148,1.307,247,3.016,264,3.984,265,2.498,279,3.484,298,3.648,391,3.381,426,3.062,542,3.648,575,3.724,760,4.44,778,4.591,782,5.408,783,5.148,797,5.734,881,5.148,882,6.832,883,3.576,884,6.832,885,6.832,886,4.746,887,4.31]],["t/152",[38,3.752,39,3.029,156,4.381,159,3.078,177,5.496,211,4.394,214,5.415,247,2.891,252,2.806,263,2.454,265,2.394,272,3.362,354,4.255,426,2.935,798,6.19,888,6.548,889,6.548,890,4.394,891,6.548,892,6.548,893,6.548,894,5.914,895,5.496,896,6.548,897,5.496]],["t/154",[22,2.059,30,1.324,31,1.041,32,1.178,37,0.653,39,1.819,41,1.127,53,1.7,63,2.229,64,1.819,66,3.305,128,2.1,196,1.83,203,2.119,206,1.594,215,1.736,218,2.556,225,1.947,247,1.736,265,1.438,266,1.616,272,2.019,293,3.833,309,4.435,378,3.075,391,1.947,426,1.763,440,3.859,446,3.016,481,3.426,575,2.144,802,3.512,810,3.552,812,2.148,886,2.732,887,2.481,898,7.031,899,5.566,900,4.426,901,5.874,902,2.294,903,3.552,904,2.839,905,3.301,906,3.301,907,3.114,908,3.933,909,3.552,910,2.839,911,5.874,912,3.916,913,3.301,914,3.552,915,3.301,916,3.933,917,3.933,918,3.933,919,5.305,920,5.874,921,5.305,922,3.301,923,3.301,924,4.93,925,2.964,926,4.1,927,2.839,928,3.933,929,4.93]],["t/156",[39,2.862,53,1.791,66,2.909,205,4.549,247,2.732,259,3.609,265,2.263,377,4.663,425,4.952,426,4.424,446,4.143,479,3.447,489,3.858,575,3.373,813,2.614,886,4.299,887,3.904,930,8.07,931,6.773,932,6.188,933,6.773,934,6.188,935,5.194,936,5.194,937,4.021,938,5.589]],["t/158",[1,0.409,22,2.258,30,1.453,37,0.48,39,1.226,52,3.936,53,2.004,66,2.957,124,0.941,126,1.778,132,1.045,138,1.584,145,0.744,148,0.507,198,1.415,203,1.321,212,1.361,215,1.275,247,1.17,259,1.546,265,2.531,278,2.153,279,3.304,291,2.098,295,2.304,309,2.722,329,3.108,391,3.673,426,1.188,433,1.997,446,1.361,473,2.997,487,1.722,510,2.722,524,1.823,569,1.997,570,1.361,644,4.319,657,1.672,663,3.939,762,2.224,787,1.672,800,1.997,801,1.997,802,4.138,804,4.739,812,3.653,850,3.621,883,1.387,886,4.369,887,3.967,899,3.415,900,1.997,907,3.415,929,2.224,939,4.809,940,1.476,941,1.584,942,4.314,943,3.896,944,2.804,945,2.393,946,4.314,947,3.114,948,2.65,949,2.997,950,2.393,951,4.314,952,2.804,953,4.314,954,2.997,955,2.224,956,2.098,957,2.393,958,2.65,959,2.224,960,3.621,961,2.65,962,2.65,963,1.997,964,2.65,965,1.361,966,2.393,967,1.841,968,1.361,969,2.65,970,2.098,971,1.51,972,2.393,973,4.314,974,2.65,975,2.65,976,4.319,977,2.65]],["t/160",[1,0.763,38,2.217,39,2.287,53,2.007,124,1.079,148,1.749,170,2.884,179,3.015,196,3.031,203,1.197,215,1.461,247,2.183,252,2.119,259,2.884,265,1.808,390,4.255,426,2.217,493,4.506,802,4.145,813,2.089,864,2.06,915,4.151,921,4.466,927,3.57,929,4.151,963,6.034,978,4.946,979,4.466,980,8.253,981,5.607,982,4.466,983,4.946,984,4.946,985,4.946,986,3.318,987,4.466,988,6.54,989,6.934,990,3.727,991,4.466,992,6.262]],["t/162",[31,0.652,39,2.259,53,1.414,124,1.882,143,2.608,145,1.929,148,0.935,194,3.999,203,2.09,216,4.008,247,2.156,265,1.786,278,2.712,279,1.979,352,3.68,415,3.915,426,2.189,427,3.393,446,2.508,669,2.375,781,3.68,796,3.67,802,2.92,864,2.863,912,3.828,924,5.769,926,4.008,939,3.393,976,3.866,993,4.411,994,7.244,995,4.411,996,3.526,997,3.68,998,4.411,999,3.866,1000,4.411,1001,4.884,1002,7.183,1003,5.179,1004,2.72]],["t/164",[39,3.46,53,2.165,124,1.631,148,1.431,203,1.811,247,3.302,265,2.735,426,3.353,446,3.841,499,7.074,669,3.638,802,4.472,939,5.197,1005,6.756,1006,3.77]],["t/166",[1,0.663,22,3.283,31,0.574,37,0.478,39,1.988,46,3.104,53,2.143,63,2.81,66,2.948,72,2.25,101,6.075,102,4.866,145,1.76,148,0.822,247,1.897,265,1.571,272,3.22,293,3.419,298,2.295,410,7.155,416,3.882,417,3.239,426,1.926,440,3.665,478,3.103,484,2.793,489,3.891,493,2.793,545,2.25,583,1.926,589,6.832,669,2.09,761,1.591,802,4.427,812,2.293,819,2.25,887,2.711,927,4.527,939,5.144,1007,3.607,1008,5.264,1009,3.103,1010,5.664,1011,3.402,1012,4.298,1013,4.298,1014,2.166]],["t/168",[39,2.955,53,2.385,55,7.061,66,3.873,214,4.589,247,2.82,259,3.726,265,2.336,293,4.491,410,5.058,417,4.814,426,2.864,440,4.077,489,4.88,802,3.819,939,5.723,1015,6.389]],["t/170",[31,1.105,39,2.979,53,1.864,141,3.952,156,3.371,202,3.952,205,4.891,206,3.709,247,2.843,265,2.355,426,4.103,474,3.756,479,3.588,489,3.959,493,5.382,494,5.406,802,3.85,813,2.721,886,4.475,887,4.064,935,5.406,936,5.406]],["t/172",[3,2.197,18,3.675,31,1.26,32,0.896,37,0.497,39,2.067,53,1.293,66,2.101,110,3.137,141,2.742,202,2.742,206,3.359,215,1.321,247,1.973,265,1.634,280,2.606,293,2.436,305,2.252,308,2.545,381,3.104,426,2.003,440,3.193,472,4.127,477,3.857,479,4.897,802,3.857,886,3.104,887,2.819,897,3.75,909,5.826,926,3.762,1004,3.593,1016,5.611,1017,5.415,1018,3.75,1019,4.036,1020,3.537,1021,5.26,1022,2.671,1023,3.959,1024,4.482,1025,5.415,1026,3.75,1027,4.861,1028,4.469,1029,3.75,1030,2.998,1031,3.367,1032,4.036]],["t/174",[1,1.027,31,0.889,39,3.08,53,2.449,124,1.845,190,2.698,203,2.499,247,2.939,265,2.435,295,5.392,426,2.985,446,3.419,525,7.1,669,4.114,802,3.981,939,4.626,1033,4.626]],["t/176",[23,4.688,31,1,37,0.616,38,3.359,39,2.561,49,3.032,53,2.169,94,1.478,116,2.842,184,2.481,186,2.243,212,5.366,247,2.444,265,2.024,266,2.274,293,3.018,391,3.709,418,3.846,426,2.481,440,3.709,761,2.049,802,4.48,804,6.861,939,5.206,1034,5,1035,5.536,1036,5,1037,5.536]],["t/178",[0,5.141,1,1.002,14,2.138,21,3.468,28,4.357,37,0.722,38,2.911,69,3.12,74,4.688,75,5.253,76,5.972,77,5.141,78,5.865,79,5.451,83,6.01,94,2.222,112,3.214,125,3.699,126,4.357,127,5.451,128,3.468,129,4.097,135,3.004,186,2.631,250,2.911,251,3.214,1038,6.494]],["t/180",[14,1.81,21,2.935,37,0.941,69,3.173,75,4.706,76,5.9,111,3.206,112,4.19,114,5.182,128,2.935,135,3.45,136,4.577,137,3.968,138,3.286,139,6.307,140,6.307,147,3.384,180,5.905,186,2.228,252,2.356,253,2.77,406,2.391,490,2.997,648,6.26,1039,4.614,1040,5.498,1041,4.614,1042,4.965,1043,5.498,1044,5.498,1045,5.498,1046,5.498]],["t/182",[1,0.613,4,2.666,14,1.308,31,1.276,37,0.658,75,3.734,76,2.582,94,1.888,107,4.029,111,2.317,132,2.335,144,2.988,145,2.97,147,3.133,151,1.471,179,2.574,192,3.306,210,3.098,252,2.536,253,2.002,256,2.653,258,2.994,259,2.317,288,2.666,350,2.375,354,4.596,355,2.582,405,5.345,415,2.263,450,2.582,761,1.471,778,3.777,959,3.334,1047,3.973,1048,2.438,1049,7.837,1050,3.973,1051,3.145,1052,3.588,1053,3.973,1054,3.973,1055,3.973,1056,5.918,1057,3.973,1058,6.387,1059,3.588,1060,2.994,1061,5.345,1062,3.588,1063,3.145,1064,3.973]],["t/184",[1,0.318,14,0.678,18,1.174,31,0.467,37,0.507,69,0.772,75,1.3,76,2.964,81,1.02,103,3.611,107,1.994,111,1.202,132,1.381,134,1.458,144,2.544,145,2.994,147,2.15,148,1.601,149,2.431,151,1.295,179,0.896,180,1.631,190,1.848,192,1.381,193,1.079,233,1.058,256,3.433,263,0.772,265,0.754,280,2.66,281,2.66,282,3.437,283,2.637,284,2.431,286,1.553,300,3.293,301,1.861,302,1.861,303,3.161,304,1.861,305,2.299,306,1.861,308,1.174,309,1.3,310,1.861,332,1.232,345,3.611,354,1.339,364,1.553,382,1.73,385,1.383,388,2.092,428,2.637,662,1.73,664,1.383,686,2.964,778,1.869,795,1.553,844,1.488,850,1.73,880,1.73,897,1.73,900,1.553,1019,3.161,1058,3.161,1059,1.861,1060,1.553,1061,1.861,1065,1.73,1066,1.553,1067,2.526,1068,4.562,1069,1.73,1070,3.5,1071,3.161,1072,1.861,1073,2.061,1074,2.061,1075,4.856,1076,2.061,1077,2.061,1078,2.061,1079,1.861,1080,7.659,1081,5.377,1082,2.061,1083,2.061,1084,3.5,1085,2.061,1086,2.061,1087,2.061,1088,2.061,1089,2.061,1090,2.061,1091,3.5,1092,2.061,1093,2.061,1094,2.061,1095,2.061,1096,2.061,1097,4.562,1098,2.061,1099,2.061,1100,1.488,1101,2.061,1102,4.562,1103,6.023,1104,2.061,1105,2.061,1106,2.061,1107,4.562,1108,2.061,1109,2.061,1110,2.061,1111,3.161,1112,2.061,1113,2.061,1114,5.377,1115,6.548,1116,4.562,1117,5.377,1118,3.5,1119,1.861,1120,2.061,1121,2.061,1122,1.861,1123,1.73,1124,3.5,1125,3.5,1126,1.432,1127,2.061]],["t/186",[14,1.282,31,0.778,32,1.169,37,0.648,75,2.457,86,3.083,107,2.218,117,1.927,132,2.757,134,1.622,144,1.645,145,3.071,147,1.557,148,1.59,149,2.705,169,3.113,190,2.363,192,1.536,193,4.867,233,2,256,3.909,257,1.894,266,1.6,280,3.4,300,2.811,313,3.083,315,3.517,316,3.517,317,6.513,318,3.517,323,3.269,325,3.517,332,2.328,354,3.789,364,2.935,388,2.328,435,1.894,900,4.394,1060,2.935,1071,3.517,1072,3.517,1075,3.517,1079,5.266,1128,3.895,1129,6.989,1130,3.895,1131,3.517,1132,3.895,1133,3.895,1134,3.895]],["t/188",[14,1.785,31,0.724,37,0.603,75,3.42,103,4.292,107,3.088,132,2.915,144,2.29,145,3.039,147,2.167,148,1.807,191,2.915,194,2.84,216,4.309,256,2.43,281,3.162,331,4.55,332,4.417,333,5.568,336,4.55,428,4.086,435,2.637,474,3.162,809,4.292,1060,4.086,1069,4.55,1135,7.591,1136,6.673,1137,5.422]],["t/190",[1,0.583,14,1.878,21,2.02,26,2.628,27,1.839,31,0.761,37,0.764,69,1.417,75,3.599,76,2.458,81,1.872,107,2.155,113,1.334,116,1.942,124,1.244,131,2.73,132,2.25,135,1.749,144,1.598,145,2.976,148,1.764,184,2.557,186,1.533,188,3.416,189,2.02,191,2.25,194,1.454,195,2.376,196,2.383,203,0.916,216,2.206,224,2.994,226,2.321,233,1.942,256,3.078,263,1.417,267,1.533,281,3.327,331,3.174,332,3.41,333,4.298,336,3.174,343,2.386,345,2.994,346,1.778,347,2.994,428,2.85,435,1.839,646,3.174,761,1.4,813,2.41,1060,2.85,1066,5.175,1069,3.174,1135,5.151,1136,5.151,1138,6.867,1139,3.416,1140,5.704,1141,3.782,1142,3.782,1143,3.782,1144,3.782,1145,3.782,1146,3.782,1147,3.782]],["t/192",[1,0.702,26,1.967,27,2.775,28,1.899,30,3.047,31,1.364,35,1.651,37,0.727,39,1.309,41,2.683,47,2.592,49,3.29,50,3.294,53,0.819,57,1.454,66,3.073,67,1.401,73,1.454,74,2.044,81,1.401,87,1.786,101,2.654,102,2.721,103,2.241,104,2.337,113,1.605,117,3.979,118,3.677,173,2.241,186,3.099,187,2.241,189,1.512,203,1.852,204,1.692,205,1.353,206,2.902,214,3.641,234,2.133,247,1.25,252,1.213,253,1.427,265,1.035,266,1.869,293,1.543,295,1.512,381,1.967,385,1.899,399,2.044,406,1.231,441,2.793,456,2.376,468,1.377,470,1.786,472,1.543,541,1.786,570,2.337,630,1.737,685,1.786,688,1.84,690,1.84,692,2.376,693,3.603,760,1.84,761,2.651,778,1.512,782,2.241,812,1.035,937,2.958,1016,1.613,1148,2.241,1149,2.557,1150,2.557,1151,2.376,1152,2.241,1153,3.285,1154,2.831,1155,2.044,1156,3.054,1157,2.557,1158,2.376]],["t/194",[30,2.976,31,0.953,41,2.532,47,4.068,48,5.382,49,2.549,50,4.455,51,5.382,56,5.994,81,3.534,94,1.906,137,5.155,186,3.582,250,3.201,251,3.534,545,3.738,759,3.599,1159,5.653]],["t/196",[35,4.673,37,0.891,40,4.368,50,4.776,94,2.139,136,4.917,154,3.706,766,6.343,1160,6.725]],["t/198",[1,0.94,27,2.963,41,2.288,50,4.95,81,3.953,145,2.242,234,4.591,244,5.549,274,2.689,389,3.393,547,4.232,550,3.128,575,3.321,657,3.844,700,3.393,702,4.232,749,6.704,750,4.823,751,5.113,756,5.502,773,7.401,790,5.766,1161,6.093,1162,5.502,1163,3.553,1164,6.093,1165,6.093]],["t/200",[30,2.626,31,0.938,37,0.867,41,2.234,46,1.947,49,2.783,50,4.205,57,2.019,64,1.819,67,1.947,102,2.351,113,1.387,116,2.019,145,2.618,179,1.711,184,1.763,186,1.594,189,2.1,205,2.808,206,2.38,233,2.019,293,2.144,308,2.241,342,2.639,343,2.481,389,2.191,440,3.479,469,4.24,474,2.294,478,2.839,479,3.272,489,1.88,545,3.075,575,3.202,650,2.414,668,3.301,740,5.566,752,3.552,761,2.886,773,5.298,790,2.839,886,2.732,913,3.301,1016,2.241,1152,3.114,1156,2.639,1162,3.552,1166,5.874,1167,3.552,1168,3.552,1169,3.933,1170,3.933,1171,3.933,1172,4.93,1173,3.552,1174,3.933,1175,3.933,1176,3.933,1177,3.933,1178,3.114,1179,3.114,1180,3.933,1181,3.933,1182,3.933,1183,3.933,1184,3.933,1185,3.552,1186,3.933,1187,3.552,1188,3.301]],["t/202",[1,1.102,31,1.18,32,1.432,37,0.794,41,2.532,49,3.155,62,3.473,94,1.906,186,2.894,202,4.382,203,2.14,206,2.894,215,2.111,250,3.201,251,3.534,263,2.676,468,3.473,504,5.653]],["t/204",[31,1.02,37,0.849,41,2.189,49,2.033,62,2.77,94,1.521,113,2.009,145,2.585,203,2.087,204,4.567,215,2.258,305,2.871,308,3.245,389,3.173,440,2.819,445,2.635,446,3.922,476,3.594,477,3.405,478,4.112,479,3.173,480,4.781,481,3.322,482,5.144,483,5.144,758,3.999,761,2.828,887,3.594,972,6.9,1063,4.509,1189,6.9,1190,7.64,1191,5.696,1192,5.696]],["t/206",[31,1.086,37,0.625,41,1.945,49,1.324,53,1.965,62,1.805,94,0.991,113,1.309,145,2.497,151,1.374,156,1.942,174,2.49,200,2.578,205,4.958,206,3.992,215,1.097,263,1.391,265,1.357,280,2.164,391,2.783,425,2.277,426,4.287,437,3.115,445,1.716,470,2.341,474,3.959,479,3.781,489,4.094,493,3.654,494,3.115,497,3.351,575,2.023,758,2.943,761,2.803,813,2.375,859,2.578,887,2.341,935,3.115,936,3.115,986,2.49,1172,4.719,1173,3.351,1193,3.711,1194,2.938,1195,3.711,1196,3.711,1197,3.711,1198,3.351,1199,3.711,1200,3.711,1201,3.711,1202,3.711,1203,3.711,1204,3.711,1205,3.711]],["t/208",[31,1.218,37,0.836,41,2.155,49,1.577,53,2.387,62,2.149,94,1.179,110,4.851,113,1.558,145,2.457,151,1.635,202,2.711,203,1.07,204,2.641,205,3.059,206,2.593,263,1.656,265,1.616,305,2.227,308,2.517,437,3.708,445,2.044,450,4.889,472,4.771,570,2.269,608,3.19,758,3.349,761,2.369,887,2.788,986,2.965,1016,5.872,1021,5.226,1024,5.226,1172,5.371,1206,6.399,1207,4.419,1208,3.99]],["t/210",[23,1.862,31,1.292,32,1.169,37,0.777,41,2.381,49,2.081,53,2.405,57,2,63,1.478,73,2,94,1.04,110,2.835,113,1.374,124,0.849,141,2.39,145,2.332,151,1.441,203,2.48,240,2.038,263,1.46,265,1.424,295,5.426,378,2.038,389,2.169,440,1.927,445,1.801,446,2.994,476,2.457,477,2.328,478,2.811,479,2.169,480,3.269,481,2.271,489,2.787,524,2.463,570,2,758,3.658,761,2.587,812,1.424,986,2.613,1033,4.051,1209,5.831,1210,3.895,1211,3.895,1212,3.895,1213,3.895,1214,3.895,1215,3.895,1216,3.517,1217,2.935,1218,2.613,1219,2.935]],["t/212",[1,1.119,27,2.566,30,3.005,31,1.29,32,1.058,38,2.365,41,2.557,42,3.976,43,2.659,49,2.589,53,2.099,57,2.709,66,2.481,81,2.611,84,2.365,94,1.409,104,2.709,124,1.151,173,4.177,186,2.138,215,1.559,222,2.876,239,3.54,246,4.429,250,2.365,251,2.611,263,1.977,379,3.429,399,3.809,435,2.566,524,2.229,573,2.876,650,3.238,688,3.429,692,4.429,693,5.742,812,1.929,967,3.666,1150,4.765,1151,4.429,1156,3.54,1159,4.177,1217,3.976,1220,4.177,1221,5.277,1222,5.277]],["t/214",[18,2.275,30,3.28,31,1.217,37,0.444,39,3.281,40,3.867,41,2.898,47,4.475,49,1.425,50,4.823,57,3.05,62,1.942,81,3.888,94,1.586,116,3.05,131,2.882,143,2.132,225,1.976,232,3.009,365,3.009,394,3.606,401,2.679,545,3.713,547,4.127,630,2.45,685,4.475,686,2.595,688,5.106,689,3.161,690,6.087,761,1.478,773,3.009,1148,3.161,1149,3.606,1223,5.941,1224,5.941,1225,5.365,1226,3.384,1227,3.993,1228,3.993,1229,3.993,1230,3.993]],["t/216",[27,3.107,30,2.774,31,1.217,37,0.71,41,2.36,49,3.559,113,2.253,116,3.28,145,2.313,184,2.864,186,2.589,189,3.411,248,3.483,265,3.012,266,2.624,441,3.92,620,5.77,690,4.152,758,4.312,759,3.22,760,4.152,761,2.365,1231,4.612,1232,6.389]],["t/218",[1,0.722,15,3.929,31,1.242,32,0.938,37,0.864,39,2.165,40,2.552,41,2.666,49,3.321,53,2.249,62,3.243,94,1.25,110,3.778,124,1.021,192,1.847,202,4.093,203,2.446,204,3.987,205,3.714,206,3.627,215,1.383,263,1.754,267,1.897,295,4.149,450,3.042,468,4.118,504,3.706,541,2.953,669,2.276,675,2.953,1016,4.426,1048,2.872,1189,4.228,1233,3.141]],["t/220",[30,1.765,31,1.188,37,0.803,38,2.349,41,1.502,49,1.871,53,1.517,66,2.464,69,1.964,72,2.743,101,3.057,102,3.133,104,2.691,116,2.691,145,2.62,196,2.25,203,1.748,206,2.124,208,3.95,212,2.691,263,2.706,293,2.857,299,4.844,400,3.641,415,2.986,470,3.307,472,3.936,570,2.691,583,2.349,594,2.549,669,2.549,716,4.399,813,2.214,819,2.743,826,3.784,937,3.406,1234,3.95,1235,4.734,1236,4.734,1237,4.734,1238,7.22,1239,5.242,1240,7.22,1241,5.242,1242,5.242,1243,4.399,1244,5.242]],["t/222",[30,2.362,31,1.271,41,2.01,66,4.11,101,4.091,102,4.193,179,3.051,206,2.842,214,4.869,263,3.569,293,3.824,428,5.286,570,3.601,575,3.824,598,4.873,798,4.706,1156,4.706,1234,5.286]],["t/224",[31,0.881,41,1.892,66,3.956,113,2.329,145,2.362,184,2.96,212,3.39,214,4.687,293,5.316,361,4.766,400,4.587,450,4.291,481,3.851,1245,5.542,1246,5.963,1247,4.766,1248,5.963,1249,5.542,1250,5.963,1251,5.542,1252,5.963,1253,6.603,1254,6.603,1255,6.603,1256,6.603]],["t/226",[1,0.616,31,1.25,32,0.8,37,0.444,41,2.406,49,2.532,64,1.847,66,3.335,67,1.976,113,2.502,145,1.667,151,1.478,179,1.737,184,3.18,186,1.618,189,2.132,203,0.967,205,3.391,206,2.407,214,4.376,215,1.18,274,1.763,280,4.137,342,2.679,343,2.519,361,4.288,450,3.861,472,5.456,508,3.351,594,1.942,952,2.595,1016,4.041,1208,5.365,1243,6.594,1245,4.986,1246,5.365,1247,4.288,1248,5.365,1249,4.986,1250,5.365,1251,4.986,1252,5.365,1257,2.882,1258,3.351,1259,3.993,1260,5.941,1261,5.941,1262,5.941,1263,5.941,1264,3.993]],["t/228",[31,1.069,37,0.891,41,2.296,49,2.86,64,3.706,67,3.966,94,2.139,186,3.247,250,3.592,251,3.966]],["t/230",[1,1.045,15,5.685,31,0.904,32,1.358,41,1.94,49,3.513,62,3.294,94,1.808,110,3.294,202,4.156,203,2.383,204,4.049,205,3.238,206,3.465,267,2.744,295,3.617,450,4.402,468,3.294,541,4.273,1016,3.858,1048,4.156]],["t/232",[23,3.034,31,1.213,37,0.831,41,1.252,49,2.928,63,1.658,66,2.984,72,2.287,94,1.694,113,2.239,116,2.243,205,3.034,206,1.77,212,2.243,215,1.876,228,2.054,252,1.873,253,2.202,263,1.638,377,5.633,399,4.582,418,3.036,425,6.186,426,4.391,445,2.021,446,3.259,452,2.84,463,3.946,472,2.382,479,2.434,575,2.382,713,3.154,758,3.322,761,1.617,923,3.667,933,7.314,937,4.125,938,5.732,1225,3.946,1233,2.932,1243,3.667,1265,4.37,1266,4.37,1267,4.37,1268,4.37,1269,3.459,1270,4.37]],["t/234",[31,0.973,32,0.589,37,0.65,38,1.316,41,1.675,49,2.087,53,1.693,63,1.114,64,1.358,113,1.653,124,1.022,145,2.182,148,1.874,151,1.087,156,1.537,170,1.713,191,1.158,196,3.079,197,2.733,203,1.766,215,1.385,252,2.008,265,2.138,309,1.853,415,2.67,445,2.168,446,1.508,493,4.338,524,1.241,758,3.494,761,2.878,766,2.325,787,3.689,796,2.502,813,1.98,814,2.04,859,3.256,864,1.223,877,2.325,915,2.465,927,2.12,963,4.407,979,2.652,980,8.088,981,5.199,982,2.652,986,3.144,987,2.652,988,3.531,997,3.531,1008,2.465,1271,2.04,1272,2.325,1273,2.937,1274,2.937,1275,2.937,1276,2.937,1277,2.937,1278,2.937,1279,2.937,1280,2.937,1281,2.937,1282,2.937,1283,2.937,1284,2.937,1285,2.937,1286,2.12,1287,4.232,1288,2.937,1289,2.937,1290,2.652,1291,2.652,1292,2.325,1293,2.937,1294,2.937,1295,2.937,1296,2.937,1297,2.465,1298,2.465,1299,2.465,1300,2.465]],["t/236",[22,4.295,31,0.761,37,0.912,41,1.084,48,2.85,64,1.749,85,5.436,118,1.942,145,2.587,147,1.512,153,2.628,156,1.98,174,4.608,228,3.228,233,1.942,309,3.599,391,4.832,426,1.695,441,3.5,446,1.942,542,2.02,563,3.707,608,2.73,626,3.416,683,3.174,694,4.787,698,3.416,740,2.994,757,1.808,758,2.986,761,2.111,778,3.046,903,3.416,905,3.174,906,3.174,907,6.053,967,2.628,1198,7.79,1245,3.174,1301,3.782,1302,3.174,1303,3.782,1304,5.151,1305,8.206,1306,5.704,1307,3.416,1308,6.867,1309,3.782,1310,5.704,1311,3.416,1312,3.782,1313,5.704,1314,6.867,1315,3.782,1316,3.782,1317,3.782,1318,3.174,1319,3.782,1320,2.994,1321,3.416,1322,3.782]],["t/238",[23,4.621,31,1.08,37,0.782,38,2.787,41,2.015,49,1.151,53,2.209,69,1.209,72,2.641,113,1.137,116,1.656,145,2.634,151,1.194,198,2.695,203,0.781,212,5.432,228,1.516,265,2.273,266,1.325,293,2.751,298,1.722,389,1.796,391,4.006,398,2.553,399,2.328,400,2.24,415,1.837,418,4.886,439,2.164,440,3.778,445,2.334,584,2.913,711,2.913,758,3.254,761,2.301,804,6.1,859,2.24,986,3.386,1034,2.913,1036,5.615,1065,2.707,1323,7.033,1324,3.225,1325,5.047,1326,3.225,1327,3.225,1328,3.225,1329,3.225,1330,3.225,1331,3.225,1332,3.225,1333,3.225,1334,5.047,1335,3.225,1336,2.24,1337,3.225]],["t/240",[1,0.499,22,3.263,31,0.941,32,0.649,37,0.36,41,1.786,46,2.506,49,1.156,53,2.347,66,2.93,94,0.864,101,6.152,102,5.51,104,1.663,113,1.142,145,2.716,148,0.969,151,1.199,265,2.965,293,3.842,417,2.44,440,3.488,445,2.342,489,3.876,758,3.263,761,3.336,812,2.577,859,4.33,927,5.088,986,4.182,1007,2.718,1008,6.805,1009,2.338,1010,5.63,1018,2.718,1338,6.234,1339,3.238,1340,3.238,1341,3.238,1342,3.238,1343,3.238,1344,3.238,1345,3.238,1346,2.25,1347,3.238,1348,3.238,1349,3.238]],["t/242",[31,0.917,37,0.764,41,2.278,49,1.743,53,1.989,63,1.854,113,1.723,124,1.065,145,2.423,148,1.315,192,1.927,194,3.867,203,2.09,263,1.83,265,1.786,278,2.712,415,2.782,445,2.259,446,2.508,524,2.904,669,3.342,758,4.163,761,2.944,796,3.67,859,3.393,993,4.411,994,7.244,995,4.411,996,3.526,997,5.179,1291,4.411,1292,3.866,1297,4.099,1298,4.099,1299,4.099,1300,4.099,1350,4.884,1351,4.884,1352,4.884,1353,4.884,1354,4.884]],["t/244",[31,1.025,37,0.854,41,2.479,49,2.048,53,2.222,63,2.178,113,2.024,124,1.251,148,1.469,192,3.413,193,4.528,203,2.095,415,3.268,445,2.654,446,2.946,499,6.245,524,3.243,669,3.733,758,4.528,761,2.842,1005,5.182,1006,3.869,1297,4.816,1298,4.816,1299,4.816,1300,4.816,1355,5.738,1356,5.738,1357,5.738]],["t/246",[37,0.849,41,1.632,94,2.039,145,2.144,198,3.042,239,3.822,247,2.514,263,2.135,272,2.925,312,3.042,425,4.688,426,2.553,446,5.077,479,3.173,487,3.702,489,2.723,542,3.042,758,2.981,761,3.409,783,4.292,913,4.781,919,8.931,923,4.781,933,4.781,1006,3.85,1358,5.696,1359,7.64,1360,5.696,1361,4.509,1362,5.696,1363,5.696]],["t/248",[5,3.3,124,1.428,148,1.765,159,3.078,161,4.255,184,2.935,189,3.496,194,3.217,195,2.727,196,2.04,197,3.819,240,3.427,252,2.806,267,2.653,274,3.695,278,2.583,279,3.391,309,4.131,427,4.549,650,4.018,798,4.394,809,5.184,812,2.394,1258,5.496,1364,5.914,1365,6.548,1366,5.496]],["t/250",[14,2.492,22,2.339,33,2.339,37,0.842,57,3.887,63,1.696,68,2.489,82,5.563,113,1.576,116,2.294,124,1.407,134,1.861,148,1.449,150,5.107,151,1.654,154,2.067,156,4.339,168,2.671,179,1.943,190,1.811,191,1.763,194,1.718,246,3.75,248,2.436,274,1.973,277,4.482,278,3.468,279,3.712,280,4.415,299,2.998,305,2.252,323,3.75,350,2.671,392,2.742,426,3.716,445,2.067,517,3.226,530,3.75,549,3.367,598,3.104,664,2.998,717,5.415,764,3.226,875,2.606,1167,4.036,1220,3.537,1367,4.469,1368,4.469,1369,3.537,1370,4.036,1371,4.036,1372,4.469,1373,4.036,1374,4.469,1375,4.469,1376,4.469]],["t/252",[277,5.456,278,3.098,279,3.182,392,4.819,445,3.633,510,4.955,511,7.093,713,5.669,1377,3.467,1378,7.093,1379,6.217,1380,7.093]],["t/254",[1,0.768,5,2.508,37,0.774,43,2.508,63,1.889,94,1.328,113,1.755,124,1.898,134,2.073,147,1.99,174,3.339,192,1.963,193,2.605,194,3.088,196,2.17,203,1.205,216,2.902,240,2.605,263,1.865,278,3.613,279,3.711,289,2.772,391,3.447,479,2.772,487,3.234,490,2.713,575,3.796,594,3.387,736,3.14,787,4.394,812,1.82,813,2.102,902,2.902,940,2.772,996,3.592,1025,4.177,1131,4.495,1187,4.495,1216,4.495,1377,2.197,1381,3.75,1382,5.069,1383,3.14,1384,4.177,1385,3.457,1386,3.054,1387,4.495,1388,3.234,1389,3.94]],["t/256",[14,2.253,22,2.541,32,0.973,37,0.881,57,2.492,62,2.36,63,1.842,113,1.712,124,1.059,132,2.7,134,2.85,145,2.89,148,1.737,150,3.842,156,2.541,169,2.592,210,2.541,240,2.541,265,1.775,274,2.143,278,2.7,279,2.773,280,2.831,289,2.704,299,4.592,300,3.504,305,2.446,308,2.765,455,3.842,561,3.154,717,4.074,761,1.797,864,2.022,1030,3.257,1051,3.842,1218,3.257,1290,4.384,1373,6.181,1377,2.143,1382,3.062,1386,2.978,1390,4.384,1391,4.384,1392,4.854,1393,3.658,1394,4.854,1395,6.844,1396,6.844,1397,4.854]],["t/258",[5,3.161,14,2.065,37,0.905,43,2.166,62,2.09,68,2.394,107,2.448,113,1.516,124,0.937,128,2.295,134,3.391,145,2.079,147,1.718,148,1.417,174,4.208,191,1.696,194,1.652,196,1.339,209,2.394,247,1.897,249,2.986,254,3.402,263,1.611,267,1.742,278,3.211,279,3.662,312,2.295,349,2.448,391,2.127,425,2.637,435,2.09,455,6.444,490,4.438,526,3.607,561,4.076,575,2.343,688,2.793,787,2.711,864,1.79,874,5.264,899,4.965,902,2.507,910,4.527,912,2.394,1025,3.607,1369,3.402,1377,1.897,1382,2.711,1385,5.144,1398,4.298,1399,4.298,1400,4.298,1401,4.298,1402,4.298,1403,6.272,1404,7.405,1405,4.298,1406,4.298,1407,4.298]],["t/260",[1,0.898,20,5.258,30,2.934,31,1.291,32,1.167,37,0.647,41,2.662,47,4.965,49,2.078,50,2.934,51,4.387,52,2.328,53,1.685,54,4.609,55,3.907,56,4.887,94,1.554,104,3.98,124,1.27,134,2.425,148,1.114,151,2.155,186,2.359,190,2.359,191,2.297,196,1.814,222,3.174,250,2.61,251,2.882,629,4.887,812,2.129,1159,6.137,1408,5.823,1409,4.887]],["t/262",[47,4.105,50,4.48,52,2.881,212,3.7,540,5.431,644,5.705,702,5.007,744,6.049,883,3.772,944,4.684,952,5.777,960,6.049,1031,5.431,1234,5.431,1410,7.264,1411,5.705,1412,7.207]],["t/264",[41,2.343,47,5.464,550,4.2,702,5.682,749,6.865,750,6.475,751,6.865]],["t/266",[0,4.86,37,0.683,47,3.498,50,3.094,57,3.152,84,2.752,94,1.639,114,4.265,154,2.84,159,2.887,244,4.265,247,3.544,289,3.42,346,2.887,700,3.42,702,4.265,778,4.777,950,5.545,1100,4.432,1320,4.86,1413,9.847,1414,6.14,1415,9.489,1416,5.545,1417,6.14,1418,5.153,1419,6.14,1420,6.14,1421,6.14,1422,6.14]],["t/268",[1,0.905,3,2.653,22,3.07,31,0.783,32,1.562,33,3.07,41,1.68,46,2.903,52,3.114,63,2.226,143,3.132,148,1.674,190,3.157,203,1.42,239,3.936,263,2.198,391,2.903,431,3.812,435,2.852,441,3.599,778,3.132,788,4.42,812,2.848,910,4.234,944,5.685,947,4.234,957,5.298,968,4,1423,4.075,1424,5.298,1425,5.624,1426,5.866,1427,5.866,1428,5.866,1429,5.298]],["t/270",[30,2.242,31,1.129,41,2.664,47,4.819,50,4.263,52,2.662,54,5.271,55,4.468,148,1.274,159,3.131,179,2.896,196,2.075,214,4.712,253,3.356,385,4.468,881,5.018,944,4.327,988,5.018,1152,5.271,1163,3.883,1336,4.626,1430,6.014,1431,5.271,1432,6.659]],["t/272",[23,3.353,31,0.936,46,3.472,54,6.92,55,4.706,116,3.601,154,3.244,234,5.286,242,4.706,252,3.006,253,3.535,290,4.558,385,4.706,417,5.286,440,3.472,445,3.244,864,2.922,960,5.887,1159,5.553,1188,5.887,1433,7.015,1434,5.887,1435,5.286]],["t/274",[1,0.649,31,1.075,32,1.238,37,0.686,41,2.458,47,2.396,49,2.61,50,2.12,52,1.682,53,1.217,64,1.946,67,2.082,94,1.123,101,2.453,102,2.514,104,2.16,113,1.483,134,1.752,145,2.669,148,1.181,168,2.514,169,3.296,179,1.829,184,1.885,186,1.704,189,2.246,190,1.704,191,1.659,195,1.752,196,1.311,210,2.202,263,1.576,278,1.659,280,2.453,284,5.081,321,3.799,329,2.396,342,2.822,343,2.654,344,2.733,402,3.517,440,2.082,470,5.083,553,1.946,657,3.895,716,6.762,813,1.777,826,3.036,1007,3.53,1235,3.799,1236,5.575,1237,5.575,1382,2.654,1409,3.53,1436,4.206,1437,6.174,1438,4.206,1439,4.206,1440,4.206,1441,3.33,1442,4.206,1443,4.206,1444,3.33,1445,4.206,1446,4.206,1447,4.206]],["t/276",[1,0.763,24,2.956,31,1.069,32,1.39,33,3.629,37,0.771,38,2.217,53,1.431,68,2.755,72,2.589,94,1.851,110,2.405,124,1.079,131,3.57,134,2.06,184,2.217,189,2.641,196,1.541,203,1.197,206,2.004,215,1.461,249,3.436,252,2.119,267,2.004,274,2.183,385,4.652,406,2.151,450,3.214,468,2.405,472,2.696,563,4.506,652,5.005,681,3.915,851,3.727,881,3.727,1016,4.561,1017,4.151,1021,3.436,1048,3.035,1257,3.57,1385,3.436,1448,4.817,1449,4.466,1450,3.57,1451,3.57,1452,6.262,1453,4.946,1454,4.151,1455,4.946,1456,3.915,1457,3.57,1458,3.915,1459,4.466,1460,3.436,1461,4.946,1462,4.946,1463,3.727,1464,4.946]],["t/278",[31,0.6,37,0.844,124,1.656,195,1.872,205,3.097,206,1.821,215,2.604,250,3.949,281,3.778,312,2.4,320,7.433,332,3.872,378,2.352,472,5.279,481,4.43,489,2.148,608,4.676,614,5.128,650,2.758,952,2.921,956,6.013,1016,3.69,1017,6.976,1257,3.244,1465,4.059,1466,4.059,1467,4.059,1468,6.478,1469,6.375,1470,6.86,1471,6.478,1472,6.478,1473,6.478,1474,5.85,1475,6.478,1476,6.478]],["t/280",[2,3.204,3,1.448,18,2.422,24,2.542,31,1.081,32,0.852,33,2.225,36,3.568,37,0.473,53,1.231,63,2.361,84,2.789,94,1.135,105,2.542,110,3.026,141,2.609,156,2.225,157,3.568,191,1.677,195,1.771,205,2.974,206,2.521,209,2.368,215,1.256,222,2.318,250,1.906,266,1.746,299,2.853,350,2.542,388,2.542,390,2.609,406,1.849,413,3.204,425,5.525,426,3.863,435,2.067,440,2.104,446,2.183,469,3.069,472,4.415,473,4.322,474,4.723,479,2.368,573,2.318,664,2.853,675,2.682,686,4.043,713,3.069,813,1.796,1006,2.143,1030,2.853,1067,3.069,1178,3.366,1425,3.069,1456,3.366,1458,3.366,1477,3.84,1478,4.252,1479,4.252,1480,4.252,1481,4.252,1482,3.84,1483,4.175,1484,2.954,1485,4.252,1486,4.252,1487,4.252,1488,3.84,1489,2.853,1490,4.252,1491,4.252]],["t/282",[31,0.95,66,2.416,189,2.744,195,3.404,196,2.547,203,1.244,205,3.907,215,1.519,247,3.144,250,2.303,281,2.997,332,5.275,425,5.015,440,2.543,472,4.455,473,3.57,479,2.862,490,2.801,495,6.86,545,2.69,553,3.78,583,2.303,662,6.86,745,5.977,795,3.872,813,3.453,1032,7.381,1178,6.47,1257,3.71,1385,4.948,1492,5.139,1493,7.122,1494,5.139,1495,5.139,1496,5.139]],["t/284",[1,0.941,11,5.736,27,2.013,31,0.967,32,1.223,38,1.856,43,2.086,49,1.478,53,1.198,62,2.013,63,1.571,68,2.306,104,2.126,110,2.013,118,3.133,125,2.358,132,1.633,141,2.54,148,1.168,154,1.915,159,1.946,190,1.677,191,1.633,192,1.633,193,2.167,194,1.591,195,1.724,196,1.29,203,2.507,204,2.475,205,1.979,206,3.24,215,1.803,218,2.69,230,4.83,274,2.693,295,2.211,335,3.277,353,2.69,468,2.967,470,2.612,518,2.54,583,2.735,646,3.475,713,2.988,770,3.739,812,2.231,1016,2.358,1151,3.475,1217,3.12,1231,2.988,1233,2.778,1292,3.277,1391,3.739,1454,5.121,1497,3.12,1498,2.778,1499,3.277,1500,2.876,1501,2.988,1502,7.246,1503,6.102,1504,4.14,1505,3.739,1506,4.14,1507,3.739,1508,4.14]],["t/286",[1,1.364,29,4.505,32,1.432,104,3.667,132,2.817,415,4.068,425,5.424,1217,5.382,1272,5.653,1390,6.45,1451,5.155,1477,6.45,1509,7.142,1510,5.382,1511,7.142,1512,6.45,1513,6.45,1514,7.142,1515,4.961,1516,5.155]],["t/288",[1,1.258,5,3.168,13,3.758,31,0.839,32,1.26,37,0.699,63,2.386,67,3.111,72,3.291,73,3.228,84,2.818,96,4.977,124,1.371,134,2.619,161,4.086,203,1.974,206,3.304,210,3.291,267,2.547,274,2.775,277,4.368,295,3.357,468,3.965,470,3.966,489,3.005,540,4.737,583,2.818,1016,3.581,1517,4.977,1518,5.678,1519,4.977,1520,6.287,1521,5.678]],["t/290",[1,1.258,32,1.814,52,2.513,148,1.732,203,1.522,210,3.291,426,2.818,430,5.277,468,3.057,570,3.228,696,4.977,781,4.737,811,4.538,812,2.981,883,3.291,940,3.502,941,3.758,1233,4.218,1377,2.775,1386,3.858,1448,4.368,1498,4.218,1522,6.287,1523,4.368,1524,6.843,1525,6.287,1526,4.977,1527,4.737,1528,5.277,1529,5.277]],["t/292",[1,0.955,3,2.748,31,0.826,53,1.791,62,3.009,68,3.447,73,3.177,94,1.652,124,1.35,148,1.718,161,4.021,192,2.441,193,3.239,194,2.379,195,3.361,196,1.928,197,3.609,215,1.829,252,2.652,520,4.663,573,3.373,575,3.373,697,4.663,875,3.609,965,4.611,1179,4.899,1483,4.152,1515,4.299,1530,4.899,1531,4.899,1532,4.899,1533,6.188,1534,6.188]],["t/294",[1,0.589,31,1.373,32,1.152,60,2.562,64,1.766,85,3.023,104,1.961,124,0.833,129,3.625,147,1.527,148,1.843,163,1.999,191,1.507,193,1.999,194,2.655,195,1.591,196,2.152,210,1.999,233,1.961,265,1.396,278,2.267,279,3.508,329,3.273,330,2.757,344,2.482,355,2.482,374,2.283,392,2.343,415,3.273,424,5.468,594,1.857,669,2.794,675,2.409,795,2.878,811,4.986,812,1.396,813,1.613,819,1.999,845,4.986,864,1.591,1006,1.925,1024,2.653,1029,3.205,1033,2.653,1152,5.468,1336,6.24,1388,2.482,1498,2.562,1535,3.205,1536,3.819,1537,7.684,1538,8.24,1539,6.908,1540,3.449,1541,3.205,1542,3.205]],["t/296",[1,0.885,3,1.954,5,2.891,14,1.889,18,3.268,24,3.43,30,1.932,31,1.285,37,0.638,66,2.697,110,2.79,203,1.389,204,3.43,222,3.128,388,3.43,406,3.339,413,4.324,433,4.324,474,3.346,479,3.196,547,3.986,555,4.324,573,3.128,686,3.729,912,3.196,1067,4.142,1456,4.542,1458,4.542,1460,3.986,1483,5.151,1484,3.986,1488,5.182,1489,3.85,1543,5.738,1544,5.738,1545,5.182,1546,4.324,1547,5.738,1548,4.816,1549,5.738,1550,4.816,1551,5.738,1552,4.816]],["t/298",[31,1.242,37,0.865,215,2.298,250,3.485,320,5.86,614,6.156,619,7.023,686,5.053,1233,5.217,1469,6.526,1553,7.776,1554,7.776]],["t/300",[3,1.773,31,1.243,32,1.441,33,2.725,37,0.579,53,2.08,97,3.285,124,1.567,143,3.837,161,3.384,184,2.334,189,2.78,192,2.054,203,2.331,210,2.725,215,2.124,263,1.951,267,2.11,274,2.298,295,4.394,313,4.122,385,3.494,403,3.924,406,2.264,563,4.67,573,3.918,594,2.532,652,3.759,669,3.495,881,3.924,1016,4.094,1033,3.617,1382,3.285,1452,4.702,1456,4.122,1458,4.122,1463,3.924,1483,3.494,1500,3.617,1555,5.207,1556,5.207,1557,5.207,1558,4.702]],["t/302",[1,0.86,31,0.744,32,1.118,37,0.62,110,2.711,124,1.642,195,2.322,203,1.35,205,3.6,206,2.259,212,3.866,215,2.225,281,3.251,295,2.977,308,3.176,320,7.699,332,3.333,378,2.918,446,3.866,472,4.105,489,2.665,608,4.024,614,7.228,813,2.355,956,5.961,1465,5.035,1466,6.801,1467,6.801,1469,4.679,1470,5.035,1474,6.801,1559,4.413,1560,4.679]],["t/304",[1,1.284,14,2.741,53,1.88,94,2.222,124,1.816,163,3.399,209,3.617,335,5.141,392,3.985,517,4.688,532,5.865,542,3.468,555,4.894,594,3.158,700,3.617,832,4.688,1382,5.253,1460,4.512,1484,4.512,1489,4.357,1517,5.141,1561,5.451,1562,5.865,1563,6.494,1564,6.494,1565,5.865,1566,4.357,1567,4.894]],["t/306",[1,0.978,16,3.03,23,3.03,24,3.789,31,0.846,32,1.27,53,1.834,68,3.53,124,1.981,147,2.534,148,1.568,161,4.118,190,2.568,191,2.5,198,3.384,203,2.199,236,5.017,378,3.317,521,4.575,523,4.776,811,4.575,812,2.317,883,3.317,940,3.53,1377,2.798,1498,4.252,1568,5.319,1569,5.017,1570,4.575,1571,4.403,1572,5.724]],["t/308",[3,2.734,32,1.61,37,0.683,52,3.576,68,3.42,94,1.639,124,1.751,148,1.175,203,1.487,250,2.752,267,2.488,312,3.279,403,4.627,764,5.796,812,3.271,864,2.557,941,4.8,968,4.122,1156,4.12,1435,4.627,1529,6.739,1569,4.86,1573,4.265,1574,3.67,1575,4.86,1576,5.153,1577,4.432,1578,5.545,1579,4.432]],["t/310",[3,2.075,31,0.813,32,1.221,37,0.677,46,3.015,63,2.312,71,3.128,87,3.844,95,5.113,97,3.844,124,1.742,148,1.529,192,2.403,194,3.07,195,2.538,203,1.934,248,3.321,263,2.283,274,2.689,278,3.151,279,3.237,329,3.471,520,4.591,650,3.738,812,2.921,965,4.101,1220,4.823,1377,2.689,1580,4.823,1581,5.502,1582,5.502,1583,3.642,1584,5.502]],["t/312",[27,2.918,31,0.801,32,1.585,37,0.667,53,1.737,57,3.08,82,4.026,123,3.587,124,1.929,132,2.367,148,1.693,179,2.609,194,2.306,195,3.684,196,2.93,203,1.453,215,1.773,263,2.249,537,4.331,553,2.775,675,3.785,700,3.342,812,2.891,813,2.535,818,4.749,819,3.14,1519,4.749,1531,4.749,1541,5.036,1542,5.036,1583,3.587,1585,5.419]],["t/314",[3,2.108,31,0.826,32,1.618,63,2.349,124,1.76,148,1.544,190,2.507,191,3.184,192,3.184,193,4.224,203,2.174,215,1.829,225,3.063,263,2.319,273,6.388,355,4.021,524,2.614,526,5.194,697,4.663,812,2.263,845,4.467,965,3.177,1179,4.899,1583,3.699,1586,7.288,1587,5.589,1588,6.188,1589,6.188,1590,4.467]],["t/316",[1,1.196,13,3.481,14,1.917,32,1.554,43,2.934,84,2.61,124,1.27,148,1.852,149,4.045,151,2.155,156,3.048,159,2.737,169,4.139,194,2.238,196,1.814,228,2.737,250,2.61,272,3.98,274,2.57,278,2.297,287,4.203,288,3.907,317,4.887,319,3.784,344,3.784,545,3.048,553,2.693,864,2.425,1500,4.045,1591,8.988,1592,5.823,1593,5.823,1594,5.823,1595,5.258]],["t/318",[1,1.476,3,1.591,5,1.474,14,0.963,22,1.531,26,2.032,27,1.423,28,1.963,30,0.985,31,0.889,32,1.169,37,0.863,38,1.311,52,1.17,53,0.847,57,1.502,63,1.773,64,1.353,71,2.399,81,1.448,117,1.448,118,1.502,124,1.272,125,1.667,134,1.219,148,1.748,152,1.749,154,1.353,163,1.531,169,1.562,179,2.032,186,1.185,189,1.562,190,1.893,191,1.154,196,1.818,198,3.888,210,1.531,215,0.865,252,1.254,265,1.07,266,1.919,267,1.185,274,1.291,287,2.112,290,1.901,312,1.562,344,1.901,378,1.531,390,2.867,403,2.205,404,1.706,406,1.272,414,1.846,419,2.112,452,1.901,476,1.846,517,2.112,518,1.795,523,3.521,552,2.205,553,2.698,554,3.699,555,3.521,556,1.901,557,2.642,558,2.642,585,2.316,594,1.423,678,2.316,757,1.399,779,3.922,812,1.07,864,2.43,865,2.455,883,1.531,902,1.706,912,1.63,941,1.749,968,2.399,971,2.662,1004,1.63,1006,2.94,1179,2.316,1271,3.246,1377,2.063,1386,1.795,1411,3.699,1460,2.032,1573,3.246,1583,1.749,1596,2.032,1597,2.926,1598,4.673,1599,3.922,1600,2.926,1601,2.926,1602,2.642,1603,2.867,1604,4.22,1605,2.642,1606,2.926,1607,2.926,1608,2.455,1609,2.455,1610,2.316,1611,5.834,1612,2.205,1613,2.926,1614,2.926,1615,2.112]],["t/320",[1,1.275,5,2.239,11,3.517,16,3.071,21,2.373,23,3.608,31,1.171,32,1.288,37,0.714,38,1.992,53,1.286,57,3.299,62,2.161,63,1.686,68,2.475,72,3.363,73,2.281,124,1.646,126,2.981,151,2.378,154,2.972,163,2.326,203,1.076,212,3.299,215,2.23,248,2.422,249,3.087,252,1.904,253,2.239,263,1.665,265,1.625,277,3.087,293,2.422,400,5.744,406,1.932,415,2.531,418,3.087,419,3.207,481,4.401,484,2.888,553,2.972,556,2.888,809,3.517,1024,3.087,1041,3.729,1226,3.66,1233,2.981,1388,2.888,1457,3.207,1498,2.981,1526,3.517,1616,4.444,1617,4.013,1618,3.517,1619,4.444,1620,4.013,1621,4.444,1622,4.444,1623,4.444,1624,4.444,1625,3.348]],["t/322",[1,1.188,64,3.562,163,4.844,289,4.289,378,4.03,391,3.811,402,4.386,469,5.558,1052,6.954,1459,6.954,1626,6.954,1627,6.463,1628,7.7]],["t/324",[1,1.341,5,3.504,30,2.927,31,1.16,32,1.743,33,3.639,37,0.773,38,3.116,134,2.896,164,4.386,220,4.156,468,3.381,556,4.518,1226,3.96,1527,5.239,1552,5.835,1629,5.835,1630,6.953,1631,6.953,1632,5.835,1633,6.953]],["t/326",[1,1.284,3,2.212,13,3.882,24,3.882,30,2.187,37,0.722,53,1.88,63,2.465,67,3.214,73,3.334,84,2.911,94,1.734,97,4.097,118,3.334,124,1.816,151,2.404,425,3.985,538,5.865,1377,2.867,1386,3.985,1450,4.688,1530,5.141,1634,5.451,1635,7.519,1636,6.494,1637,5.451,1638,6.494,1639,6.494,1640,6.494,1641,5.865]],["t/328",[1,1.188,5,3.88,52,3.078,124,1.679,350,4.603,378,4.03,670,5.004,812,2.815,883,4.03,941,4.603,1501,5.558,1583,4.603,1642,6.954,1643,6.954]],["t/330",[1,1.288,37,0.929,87,5.27,1512,7.544,1627,7.011,1644,7.011]],["t/332",[1,1.165,31,1.008,32,1.834,110,3.673,203,2.215,206,3.06,215,2.232,266,3.102,450,4.908,470,4.765,1048,4.634,1231,5.452,1498,5.067,1645,5.691]],["t/334",[43,3.806,53,2.186,124,1.647,148,1.75,159,3.551,195,3.146,240,3.953,274,3.334,278,2.979,279,3.06,309,4.765,427,5.247,587,6.339,650,4.634,798,5.067]],["t/336",[1,1.199,14,2.56,31,1.038,33,4.07,84,3.485,138,4.648,242,5.217,478,5.613,685,4.906,1635,7.023,1646,7.776,1647,6.526,1648,5.217]],["t/338",[24,4.348,32,1.458,37,0.809,94,1.942,196,2.266,203,1.761,206,2.947,468,3.537,472,3.965,518,4.463,881,5.481,1016,4.143,1021,5.053,1257,5.25,1385,5.053,1448,6.211,1449,6.569,1450,5.25,1649,7.274]],["t/340",[31,0.971,33,3.807,53,2.105,63,2.76,195,3.03,203,1.761,205,3.477,206,3.622,215,2.149,250,3.26,299,4.88,390,4.463,425,4.463,426,3.26,468,3.537,472,3.965,473,5.053,1178,5.758,1482,6.569]],["t/342",[16,3.324,31,1.266,32,1.394,37,0.773,49,2.481,53,2.012,84,3.116,124,1.516,161,4.518,206,2.817,210,3.639,215,2.055,250,3.116,274,3.069,472,4.739,594,3.381,902,4.055,952,4.518,1257,5.019,1650,6.279,1651,6.279,1652,4.665]],["t/344",[31,0.971,32,1.458,37,0.809,46,3.6,53,2.105,71,3.734,124,1.586,148,1.392,192,2.869,194,2.796,203,1.761,274,3.211,278,2.869,279,2.947,329,4.143,650,4.463,775,5.758,812,2.659,1220,5.758,1580,5.758]],["t/346",[32,1.574,33,4.111,35,4.58,37,0.873,68,4.374,124,1.713,594,3.819,940,4.374,1489,5.269,1648,5.269,1653,7.854,1654,7.854]],["t/348",[5,3.806,13,4.515,14,2.486,32,1.834,33,3.953,63,2.866,81,3.738,124,1.995,203,2.215,378,3.953,1517,5.979,1655,7.553,1656,6.821]],["t/350",[3,2.675,31,1.25,32,1.574,46,3.887,97,4.955,192,3.098,524,3.318,573,4.281,812,2.871,1226,4.474,1657,6.591]],["t/352",[31,1.018,32,1.529,53,2.207,124,1.663,148,1.459,190,3.09,191,3.63,192,3.63,193,3.991,203,1.846,812,2.788,1431,6.036,1586,6.887]],["t/354",[1,1.143,32,1.486,72,3.879,84,3.321,96,5.866,97,4.675,113,2.614,218,4.816,348,6.692,524,3.13,864,3.087,1521,6.692,1530,5.866,1531,7.158,1658,6.692,1659,7.589]],["t/356",[1,1.411,16,3.61,22,3.953,23,3.61,31,1.008,32,1.514,44,4.634,53,2.186,97,4.765,124,1.647,203,2.215,524,3.19,1657,6.339,1660,6.821]],["t/358",[1,1.154,22,3.916,31,1.214,66,4.276,206,3.031,228,3.517,293,4.078,309,4.719,391,4.501,808,5.637,905,6.278,906,6.278,907,5.922,1304,6.756]],["t/360",[16,3.645,23,4.398,105,4.558,118,3.915,236,6.036,266,3.132,295,4.072,518,4.679,570,3.915,571,6.036,594,3.708,1513,6.887,1567,5.746,1661,6.036]],["t/362",[1,1.451,14,2.83,148,1.8,163,3.576,169,5.024,198,5.024,266,2.806,272,3.508,299,4.584,312,3.648,415,3.892,524,2.886,545,3.576,553,3.16,775,5.408,1498,4.584,1662,6.17,1663,6.832]],["t/364",[1,1.249,16,3.87,31,1.08,32,1.623,104,4.156,105,4.839,123,4.839,203,1.96,681,6.409]],["t/366",[1,1.249,31,1.08,32,1.623,203,2.308,206,3.28,470,5.107,594,3.937,1596,5.624]],["t/368",[31,1.193,32,1.458,53,2.105,63,2.76,110,3.537,143,3.884,191,2.869,192,2.869,203,2.343,206,2.947,215,2.149,295,3.884,468,3.537,669,3.537,862,5.25,1016,4.143,1548,6.105]],["t/370",[1,1.211,31,1.048,32,1.574,228,3.692,391,3.887,575,4.281,808,5.918,902,4.58,937,5.104,1369,6.217,1385,5.456,1664,7.093]],["t/372",[1,1.132,13,4.389,31,0.98,32,1.472,53,2.125,124,1.601,132,2.896,148,1.405,190,2.975,194,2.822,195,3.058,196,2.288,210,3.843,252,3.146,267,2.975,419,5.299,583,3.29,812,2.684,875,4.281]],["t/374",[16,3.509,63,2.786,68,4.089,148,1.86,190,2.975,191,2.896,225,3.633,279,3.643,329,4.182,521,5.299,811,5.299,1006,3.7,1381,5.532,1665,7.342,1666,6.63,1667,7.342]],["t/376",[148,1.405,191,2.896,203,2.177,215,2.169,279,4.104,309,4.631,415,4.182,477,4.389,811,5.299,845,5.299,902,4.281,940,4.089,967,5.1,1381,6.775]],["t/378",[3,3.115,43,3.806,52,3.019,53,2.186,132,2.979,968,4.697,971,4.302,1382,4.765,1386,4.634,1573,5.247,1609,6.339,1610,5.979,1668,6.821,1669,7.553]],["t/380",[1,1.102,23,3.414,24,4.269,31,0.953,32,1.432,53,2.067,68,3.978,124,1.928,148,1.367,190,2.894,191,2.817,203,1.729,521,5.155,812,2.611,940,3.978,1377,3.153,1386,4.382,1450,5.155,1569,5.653,1571,4.961,1572,6.45]],["t/382",[3,2.597,12,6.036,27,3.708,73,3.915,84,3.418,97,4.811,105,4.558,413,5.746,573,5.016,965,3.915,1286,5.504,1670,5.297,1671,7.626,1672,7.626]],["t/384",[3,2.961,7,6.279,32,1.394,37,0.773,52,3.475,124,1.516,148,1.33,161,4.518,312,3.712,403,5.239,764,5.019,812,3.178,864,2.896,941,4.156,968,4.463,1435,5.239,1529,5.835,1573,4.83,1574,4.156,1576,5.835,1577,5.019]],["t/386",[13,4.603,14,2.535,16,3.681,21,4.111,22,4.03,23,3.681,24,4.603,25,6.095,28,5.166,240,4.03,379,5.004,554,6.095,573,4.197,705,6.095]],["t/388",[32,1.834,53,2.186,63,2.866,124,1.647,148,1.75,195,3.146,196,2.353,203,1.828,390,4.634,675,4.765,812,2.761,818,5.979,1531,5.979,1585,6.821]],["t/390",[32,1.544,53,2.229,68,4.289,163,4.03,203,1.864,215,2.275,400,5.349,468,3.744,553,3.562,1024,5.349,1233,5.166,1526,6.095,1617,6.954,1618,6.095]],["t/392",[1,1.334,3,2.347,14,2.269,16,3.295,22,3.607,23,3.295,31,0.92,32,1.382,33,3.607,37,0.766,71,3.538,73,3.538,124,1.885,203,2.093,222,3.757,540,5.193,573,3.757,1516,4.975,1519,5.456,1527,5.193,1660,6.224,1673,5.784,1674,4.975]],["t/394",[1,1.419,14,2.51,32,1.529,84,3.418,148,1.761,149,5.297,159,3.585,169,4.072,274,3.366,278,3.008,279,3.09,484,4.955,1364,6.887]],["t/396",[1,1.348,16,3.353,21,3.745,22,3.672,23,3.353,32,1.406,44,4.304,94,1.872,148,1.673,169,4.668,198,4.668,199,4.558,200,4.873,266,2.881,523,5.286,586,5.553,1634,5.887,1675,7.015,1676,5.553,1677,5.887]],["t/398",[1,1.165,3,2.572,32,1.834,46,4.527,97,4.765,148,1.445,203,2.215,242,5.067,573,4.117,883,3.953,1377,3.334,1489,5.067,1678,7.553]],["t/400",[1,1.063,16,3.295,21,3.68,23,3.295,37,0.766,53,1.995,81,3.411,124,1.885,198,3.68,272,3.538,295,3.68,391,3.411,468,3.351,552,6.515,586,5.456,630,4.229,845,4.975,949,4.788,1041,5.784,1387,6.224,1642,6.224,1676,5.456,1679,6.892,1680,6.224]],["t/402",[44,5.019,125,4.659,151,3.028,240,4.281,696,6.475,1163,4.77,1457,5.904,1645,6.164]],["t/404",[3,2.693,6,5.419,37,0.667,44,3.682,52,3.161,53,1.737,148,1.148,203,1.453,220,3.587,235,5.959,250,2.689,266,3.248,267,2.431,404,3.499,518,3.682,529,3.899,812,2.891,883,3.14,941,3.587,968,4.542,1004,3.342,1156,4.026,1371,5.419,1409,5.036,1573,4.168,1574,3.587,1575,4.749,1576,5.036,1577,4.331,1578,5.419,1579,4.331,1681,4.749,1682,5.419,1683,5.036,1684,4.331,1685,6]],["t/406",[1,0.709,31,0.614,32,0.922,35,2.682,37,0.732,52,1.839,67,2.276,94,1.758,101,2.682,194,1.768,196,1.433,203,1.863,220,2.749,222,2.507,267,2.669,346,2.162,392,4.721,462,3.195,543,4.754,549,3.466,550,2.361,669,2.236,670,2.989,700,4.286,757,2.198,787,2.901,875,2.682,880,3.86,883,3.447,912,2.562,927,3.32,937,2.989,1226,5.269,1320,5.214,1377,2.03,1389,3.641,1393,5.798,1500,3.195,1527,3.466,1550,3.86,1570,3.32,1595,4.153,1604,4.153,1632,3.86,1686,4.599,1687,4.599,1688,4.599,1689,4.599,1690,6.091,1691,4.599,1692,4.153,1693,4.599,1694,3.466,1695,3.32,1696,4.599,1697,4.599,1698,3.86,1699,3.32,1700,4.153,1701,4.599,1702,4.153,1703,4.599]],["t/408",[1,1.258,3,2.141,23,4.742,40,3.427,64,2.908,84,2.818,94,1.678,105,3.758,124,1.778,134,2.619,151,2.327,240,3.291,242,4.218,509,5.277,529,4.086,554,6.454,685,3.966,757,3.005,1153,4.538,1226,3.581,1451,4.538,1565,5.678,1583,3.758,1698,5.277,1704,5.277,1705,6.287,1706,5.277,1707,4.977,1708,6.287,1709,6.287]],["t/410",[1,1.01,37,0.728,94,1.748,124,1.428,144,2.766,154,3.029,259,3.819,378,3.427,402,3.73,477,3.914,487,4.255,618,5.184,736,4.131,808,6.307,875,3.819,902,3.819,949,4.549,1163,3.819,1302,5.496,1382,4.131,1388,4.255,1584,5.914,1704,5.496,1710,9.226,1711,5.184,1712,5.184,1713,6.548,1714,6.548,1715,5.914]],["t/412",[1,0.912,94,1.578,124,1.707,148,1.68,151,2.187,154,3.621,215,1.746,240,3.093,279,3.558,329,5.001,353,3.84,374,3.533,514,4.96,553,2.733,594,2.874,736,5.539,812,2.863,902,3.447,1006,4.425,1382,5.539,1383,3.728,1384,4.96,1389,4.678,1497,4.453,1677,6.571,1712,4.678,1715,7.071,1716,5.91]],["t/414",[3,2.013,5,2.978,26,4.106,35,3.447,37,0.657,43,2.978,52,2.363,84,2.649,148,1.131,154,2.733,203,1.896,215,1.746,240,3.093,298,3.156,350,3.533,468,2.874,521,4.266,570,3.034,812,2.161,883,4.098,940,3.292,941,3.533,968,3.034,1389,4.678,1435,4.453,1457,4.266,1483,3.965,1497,4.453,1573,4.106,1692,5.337,1702,5.337,1717,5.91,1718,5.91,1719,5.337,1720,5.91,1721,6.951,1722,5.91,1723,4.678,1724,4.678,1725,5.337,1726,4.266]],["t/416",[1,1.407,21,3.411,23,3.938,27,3.107,32,1.281,124,1.797,148,1.222,154,2.955,161,4.152,168,3.819,169,3.411,198,4.869,210,3.344,236,5.058,305,3.22,552,6.208,553,2.955,570,4.23,586,5.058,588,7.441,1451,4.612,1497,4.814,1676,5.058,1727,6.389,1728,4.287,1729,5.058]],["t/418",[31,1.229,37,0.633,71,2.925,124,1.666,192,2.247,194,3.313,196,2.381,215,2.258,278,2.247,279,2.308,350,3.405,406,2.477,445,2.635,594,2.77,700,3.173,736,4.82,757,2.723,808,6.941,813,3.642,844,5.515,902,4.455,937,3.702,1063,4.509,1226,4.352,1382,3.594,1383,3.594,1384,4.781,1583,3.405,1677,4.781,1695,4.112,1730,5.696,1731,5.696,1732,5.696]],["t/420",[1,1.243,3,1.433,31,0.561,32,1.798,37,0.686,43,3.111,46,3.055,84,2.767,87,2.654,94,1.123,97,2.654,112,2.082,125,2.396,148,1.399,152,2.514,184,1.885,189,2.246,194,1.617,195,1.752,197,2.453,228,1.977,239,2.822,240,2.202,242,2.822,263,1.576,265,1.538,267,1.704,278,1.659,279,3.265,289,4.073,390,2.581,413,4.652,469,3.036,556,2.733,573,3.365,575,3.365,650,2.581,696,3.33,800,3.17,801,3.17,866,3.53,883,3.231,904,3.036,910,3.036,965,2.16,968,2.16,976,5.789,992,3.799,1020,3.33,1024,2.922,1163,2.453,1226,2.396,1258,3.53,1318,3.53,1377,2.725,1386,3.788,1393,3.17,1430,3.799,1489,4.907,1573,2.922,1652,4.142,1704,3.53,1707,3.33,1733,3.17,1734,4.206,1735,4.206,1736,3.33,1737,4.206,1738,3.53]],["t/422",[1,0.94,14,2.006,16,2.912,24,3.642,30,2.051,31,1.066,32,1.896,38,3.58,77,4.823,81,3.015,94,1.626,112,3.015,118,3.128,124,1.329,220,3.642,222,3.321,267,2.469,289,3.393,346,2.864,556,3.959,575,3.321,904,4.398,1226,3.471,1377,2.689,1386,3.738,1450,4.398,1612,6.019,1632,6.704,1637,5.113,1739,6.093,1740,6.093,1741,6.093,1742,4.591,1743,6.093]],["t/424",[25,4.382,31,1,32,1.11,37,0.833,46,2.74,52,2.996,104,2.842,147,2.213,184,3.359,186,3.037,212,2.842,406,2.408,644,4.382,713,3.996,761,2.049,807,3.714,944,4.87,947,3.996,952,6.182,954,3.846,1006,2.79,1031,4.172,1234,4.172,1410,7.687,1411,7.207,1425,3.996,1695,3.996,1744,5.536,1745,3.598,1746,7.495,1747,5.536,1748,5.536,1749,5]],["t/426",[1,1.143,30,3.045,31,1.207,32,1.486,37,0.824,41,2.591,47,4.221,50,3.734,184,3.321,186,3.003,766,5.866,1100,5.349,1410,5.584,1411,5.866,1695,5.349]],["t/428",[18,4.068,134,2.975,209,3.978,234,5.382,414,4.505,594,3.473,821,4.165,877,5.653,981,5.424,1014,4.838,1377,4.238,1423,4.961,1566,4.792,1629,5.994,1750,6.45,1751,6.45,1752,6.45]],["t/430",[66,2.887,105,5.348,159,2.887,553,2.84,832,4.432,981,3.768,1022,3.67,1377,2.71,1383,3.874,1425,4.432,1510,4.627,1515,4.265,1674,6.849,1753,3.99,1754,8.569,1755,8.08,1756,5.545,1757,6.739,1758,4.627,1759,5.545,1760,5.545,1761,5.545,1762,5.545,1763,5.545,1764,5.545,1765,5.545,1766,4.86,1767,5.545,1768,4.432]],["t/432",[3,1.643,14,1.588,23,2.306,37,0.758,66,4.036,132,1.903,134,2.009,151,1.786,154,2.231,159,4.418,164,3.043,196,2.462,274,2.13,312,2.576,355,3.135,404,2.813,435,3.313,479,4.781,518,2.96,529,3.135,553,4.188,583,3.054,630,2.96,864,2.838,902,2.813,1014,4.326,1023,2.96,1163,2.813,1377,2.13,1381,3.635,1383,5.712,1515,4.734,1566,3.237,1674,6.536,1728,3.237,1758,3.635,1769,4.049,1770,4.049,1771,4.824,1772,4.824,1773,4.824,1774,3.819]],["t/434",[3,2.249,37,0.734,94,1.763,104,3.39,159,3.104,240,4.404,278,3.32,349,3.761,404,4.907,414,4.166,553,3.892,583,2.96,700,3.678,807,5.646,981,4.052,1014,3.328,1377,2.915,1383,5.309,1423,4.587,1500,4.587,1674,6.074,1745,5.468,1775,4.976]],["t/436",[23,4.323,44,4.547,209,4.127,228,3.484,542,3.957,553,4.182,583,3.321,594,3.603,667,6.219,967,5.148,1014,3.734,1383,4.675,1728,4.972,1776,7.411,1777,7.411,1778,7.411]],["t/438",[14,1.714,37,0.579,94,1.918,154,2.408,159,2.448,176,4.702,221,3.924,274,2.298,374,3.113,382,4.37,406,2.264,477,3.113,553,4.307,583,3.221,654,3.924,667,4.37,798,3.494,883,4.645,959,4.37,1188,6.032,1377,3.172,1383,5.874,1516,5.188,1618,4.122,1745,3.384,1766,7.025,1770,4.37,1779,4.702,1780,5.689,1781,8.23,1782,7.187,1783,4.702,1784,5.207,1785,4.702,1786,5.207,1787,4.37,1788,5.207,1789,4.702,1790,4.37,1791,5.207]],["t/440",[3,1.531,4,3.015,18,2.56,35,2.621,43,2.265,118,2.307,123,3.872,152,2.687,159,4.552,298,2.4,313,3.558,353,4.936,404,2.621,462,3.122,517,3.244,541,2.835,553,4.632,583,2.014,594,2.185,669,2.185,778,2.4,832,3.244,883,2.352,981,2.758,1126,4.5,1377,2.86,1383,6.109,1423,3.122,1435,3.387,1674,4.676,1753,2.921,1770,3.772,1792,3.387,1793,4.494,1794,4.494,1795,4.494,1796,8.313,1797,4.494,1798,4.059,1799,4.494,1800,4.494,1801,8.313,1802,4.881,1803,4.059,1804,4.494,1805,4.494,1806,3.772,1807,4.494,1808,4.494,1809,3.772,1810,4.494]],["t/442",[60,4.836,278,2.843,353,4.684,736,4.547,807,6.468,819,3.772,981,4.422,1014,4.858,1377,3.181,1661,5.705,1745,6.264,1811,6.509,1812,6.509,1813,5.705,1814,6.049]],["t/444",[117,3.567,143,3.848,162,5.202,164,4.547,233,3.7,351,5.431,388,4.308,657,4.547,664,4.836,675,4.547,864,3.002,890,4.836,981,5.455,1014,4.48,1377,3.924,1579,5.202,1683,6.049,1738,6.049]],["t/446",[40,4.281,657,4.955,981,4.819,1163,4.58,1377,3.467,1775,5.918,1815,7.093,1816,6.591,1817,7.093,1818,6.591,1819,6.591,1820,7.093]],["t/448",[1,1.457,16,2.592,30,1.826,31,0.986,32,1.087,33,2.838,40,2.956,53,1.569,94,1.447,124,1.833,129,3.42,148,1.037,153,3.767,154,2.508,171,4.55,196,2.302,197,3.162,209,3.02,220,3.241,346,3.474,435,2.637,474,3.162,489,2.592,512,4.55,524,2.29,813,2.29,844,3.914,1457,3.914,1500,3.767,1501,3.914,1528,4.55,1673,4.55,1724,4.292,1753,3.523,1812,4.897,1821,8.406,1822,5.422,1823,6.654,1824,4.897,1825,5.422,1826,5.422,1827,4.55,1828,4.897,1829,4.897]],["t/450",[821,5.144]],["t/452",[31,1.223,33,2.339,43,2.252,113,1.576,118,2.294,123,2.671,155,4.036,209,2.489,220,2.671,346,2.101,379,2.904,389,2.489,476,4.07,537,3.226,652,4.657,680,5.984,757,2.136,807,2.998,818,3.537,937,4.192,1030,2.998,1148,3.537,1218,2.998,1219,3.367,1388,2.904,1460,3.104,1483,2.998,1516,3.226,1558,4.036,1596,4.482,1605,4.036,1721,5.993,1723,3.537,1745,2.904,1749,4.036,1830,3.75,1831,4.469,1832,5.415,1833,5.705,1834,5.993,1835,7.311,1836,3.537,1837,4.469,1838,4.469,1839,4.469,1840,3.75,1841,3.537,1842,3.367,1843,4.469,1844,5.826,1845,3.537,1846,4.469,1847,3.537,1848,4.469,1849,3.75,1850,6.452,1851,4.469]],["t/454",[32,1.606,33,4.961,289,4.463,390,4.917,778,4.279,1648,5.377,1852,6.725,1853,8.013,1854,6.725]],["t/456",[27,2.94,32,1.212,43,3.047,124,1.318,191,2.385,203,2.15,209,3.367,265,2.21,289,4.427,346,2.842,541,3.814,585,4.786,680,4.364,688,5.165,777,5.989,778,4.244,862,4.364,904,4.364,965,3.104,981,3.71,1498,4.056,1523,4.2,1823,4.786,1834,4.786,1835,4.364,1854,5.074,1855,6.046,1856,5.074,1857,6.046,1858,6.046,1859,4.556,1860,5.46,1861,5.46,1862,5.074,1863,5.46,1864,4.556]],["t/458",[32,1.102,37,0.611,83,5.384,228,3.507,253,2.77,298,3.983,346,2.584,457,4.614,521,3.968,573,2.997,680,5.384,904,3.968,952,3.573,971,4.249,1020,4.352,1067,6.553,1139,4.965,1185,4.965,1528,6.26,1723,4.352,1833,5.621,1834,6.702,1842,4.143,1865,4.965,1866,7.459,1867,6.736,1868,5.498,1869,5.498,1870,5.498,1871,5.498,1872,4.965,1873,5.498,1874,5.498,1875,6.736,1876,7.459,1877,5.498,1878,5.498,1879,4.352,1880,5.498]],["t/460",[32,1.419,33,3.704,84,3.172,266,2.907,289,3.942,390,4.343,468,3.442,680,5.109,778,3.779,779,5.94,781,5.333,904,5.109,1579,5.109,1602,6.392,1648,4.749,1681,5.603,1823,5.603,1854,5.94,1865,6.392,1881,7.078,1882,7.078,1883,7.078,1884,7.078]],["t/462",[1,1.114,16,1.969,24,2.462,30,2.046,31,1.188,32,1.218,33,2.156,52,1.646,105,3.633,124,2.104,148,1.382,168,2.462,190,1.669,192,3.632,194,2.777,196,1.894,225,2.038,229,2.973,252,1.765,332,2.462,424,3.26,427,2.861,454,3.26,489,4.613,499,4.387,524,3.761,525,5.101,669,2.956,759,2.075,812,3.255,819,3.181,821,2.402,875,2.402,883,2.156,941,2.462,1006,2.075,1033,2.861,1377,1.818,1386,2.527,1450,2.973,1517,3.26,1527,3.103,1644,3.456,1673,3.456,1712,3.26,1832,3.456,1885,4.118,1886,3.719,1887,4.078,1888,3.456,1889,4.118]],["t/464",[1,1.199,10,3.929,16,2.238,32,1.558,43,3.361,52,1.871,83,3.379,128,2.499,220,2.798,222,2.552,267,1.897,289,2.607,298,2.499,335,3.706,353,3.042,401,3.141,452,3.042,537,3.379,553,2.165,585,3.706,680,4.815,736,2.953,778,2.499,781,3.527,812,2.439,937,3.042,967,3.252,1020,3.706,1163,2.73,1217,3.527,1247,3.379,1418,3.929,1423,3.252,1501,3.379,1550,3.929,1571,3.252,1574,2.798,1577,3.379,1615,3.379,1645,3.527,1648,4.475,1700,6.024,1724,5.28,1830,3.929,1833,5.855,1834,6.704,1835,5.609,1842,3.527,1847,3.706,1861,4.228,1864,3.527,1867,4.228,1879,3.706,1890,4.228,1891,4.681,1892,4.681,1893,4.681,1894,6.024,1895,4.228,1896,4.228,1897,4.681,1898,4.681]],["t/466",[1,0.879,62,2.77,124,1.242,148,1.763,151,2.108,164,3.594,190,3.493,191,2.247,192,2.247,196,1.775,197,3.322,210,2.981,264,3.322,272,2.925,346,2.678,424,4.509,427,3.957,484,4.965,489,4.121,524,3.642,545,2.981,669,2.77,675,3.594,787,3.594,812,2.083,813,2.406,819,3.999,820,4.781,864,2.373,865,4.781,1615,4.112,1753,4.965,1852,4.781,1899,5.144,1900,5.144,1901,5.696,1902,5.696,1903,5.144]],["t/468",[35,2.249,40,2.102,43,2.917,66,1.813,117,3.439,124,1.515,129,2.433,151,2.142,168,2.305,190,2.345,196,1.804,220,2.305,223,2.784,224,3.053,251,1.909,346,1.813,349,3.297,406,1.677,468,1.875,474,2.249,489,3.321,524,3.262,611,2.784,630,2.366,757,1.843,759,1.943,780,3.053,786,2.784,813,1.629,814,2.679,821,2.249,844,2.784,861,2.906,922,4.858,955,4.858,968,1.98,971,4.399,997,2.906,1004,2.148,1011,4.582,1023,3.552,1148,3.053,1155,2.784,1160,3.237,1194,4.582,1361,3.053,1388,2.506,1431,3.053,1499,3.053,1610,3.053,1626,3.483,1643,3.483,1647,4.858,1661,3.053,1684,5.015,1694,2.906,1726,2.784,1729,4.582,1823,4.582,1828,3.483,1835,4.178,1899,3.483,1900,3.483,1904,7.564,1905,4.582,1906,5.5,1907,6.235,1908,5.788,1909,3.483,1910,6.275,1911,2.679,1912,3.483]],["t/470",[62,3.082,66,2.979,104,3.254,124,1.382,129,3.998,148,1.213,168,3.789,170,3.696,251,3.136,264,3.696,489,3.918,514,5.319,524,2.677,583,2.841,819,3.317,861,4.776,862,4.575,997,4.776,1004,3.53,1155,4.575,1610,5.017,1647,5.319,1648,4.252,1684,4.575,1729,6.488,1753,4.118,1904,8.061,1913,5.916,1914,5.017,1915,5.319]],["t/472",[550,5.184,759,5.088,883,3.807,922,6.105,1393,5.481,1729,5.758,1904,7.503,1905,5.758,1906,5.758,1916,7.274,1917,7.274,1918,7.274,1919,7.274]],["t/474",[48,2.964,71,2.019,124,0.858,144,1.662,154,3.252,191,1.552,192,1.552,208,2.964,223,2.839,267,3.16,427,2.732,452,2.556,468,1.913,489,3.361,490,2.144,509,3.301,515,3.552,524,3.525,541,2.481,543,2.839,556,2.556,629,3.301,669,1.913,757,1.88,761,1.456,764,2.839,780,3.114,807,2.639,819,3.075,883,2.059,949,2.732,954,2.732,955,6.545,971,3.346,1023,2.414,1219,4.426,1271,2.732,1361,4.65,1377,3.104,1385,2.732,1386,2.414,1431,3.114,1460,2.732,1510,2.964,1574,2.351,1579,2.839,1661,3.114,1664,3.552,1684,4.24,1694,5.876,1699,2.839,1745,2.556,1768,2.839,1824,3.552,1827,3.301,1852,3.301,1860,3.552,1894,7.043,1907,6.596,1909,3.552,1910,5.305,1911,2.732,1920,5.874,1921,5.874,1922,3.933,1923,3.552,1924,3.933,1925,3.552,1926,3.933,1927,3.933,1928,3.933,1929,3.933,1930,3.114,1931,3.933,1932,3.933,1933,3.933,1934,3.933]],["t/476",[32,1.346,71,3.448,128,4.542,216,3.916,266,2.759,267,2.721,445,3.106,550,5.038,759,4.945,943,7.682,1226,4.845,1377,2.965,1698,5.636,1907,5.061,1935,6.716,1936,6.716,1937,6.716,1938,5.061,1939,6.716,1940,6.716]],["t/478",[30,1.286,37,0.425,49,1.363,67,2.844,179,1.661,190,1.547,228,1.795,233,2.95,243,2.082,257,1.857,267,1.547,439,2.562,455,4.548,460,3.205,468,1.857,489,4.677,490,2.082,510,2.409,524,3.905,541,2.409,542,2.039,549,2.878,650,2.343,669,2.794,761,1.414,764,2.757,786,2.757,813,2.918,819,1.999,851,2.878,949,2.653,994,3.205,1023,2.343,1033,3.992,1048,4.715,1219,4.33,1233,2.562,1302,3.205,1361,5.468,1388,2.482,1393,2.878,1441,4.548,1560,3.205,1570,2.757,1596,3.992,1609,3.205,1615,2.757,1690,5.468,1723,3.023,1769,3.205,1835,6.25,1841,3.023,1856,3.205,1907,4.33,1914,3.023,1923,3.449,1941,3.819,1942,3.819,1943,4.822,1944,3.819,1945,3.819,1946,2.878,1947,3.449,1948,3.819,1949,3.819,1950,5.746,1951,3.205,1952,3.449,1953,3.819,1954,3.819,1955,5.746,1956,3.205,1957,3.819,1958,3.819,1959,3.819]],["t/480",[35,4.447,71,3.915,187,6.036,267,3.09,389,4.247,550,4.724,652,5.504,759,4.637,1835,7.133,1960,7.626,1961,7.626]],["t/482",[62,3.238,117,4.187,148,1.779,154,3.08,239,4.468,248,3.63,290,4.327,312,3.556,445,3.08,489,4.044,524,2.813,673,6.014,813,2.813,819,3.485,861,5.018,1011,6.697,1029,5.589,1066,5.018,1541,5.589,1684,4.807,1890,6.014,1962,6.659,1963,6.014,1964,6.014,1965,6.659]],["t/484",[3,2.548,24,4.472,37,0.832,52,2.991,117,3.702,148,1.431,349,4.261,550,4.669,759,4.583,1011,5.922,1570,5.4,1964,6.756,1966,7.481,1967,6.278,1968,7.481]],["t/486",[32,1.559,55,5.217,124,1.696,220,4.648,226,4.771,252,3.333,270,6.156,821,4.535,1728,5.217,1830,6.526,1845,6.156,1930,6.156,1969,4.535]],["t/488",[1,0.905,33,3.07,124,1.908,148,1.491,190,2.377,192,2.314,194,2.255,196,1.828,220,3.507,243,3.198,287,4.234,288,3.936,319,3.812,390,4.78,489,2.804,499,4.234,550,4.785,759,4.697,787,3.701,821,3.421,860,4.643,1377,2.589,1694,4.42,1753,3.812,1864,4.42,1903,5.298,1970,7.9,1971,5.866,1972,5.866,1973,5.866,1974,4.923,1975,5.866,1976,5.866,1977,5.866]],["t/490",[1,1.356,38,3.172,44,4.343,71,3.634,124,2.085,349,4.032,429,4.465,524,2.99,991,6.392,1014,3.567,1457,5.109,1625,5.333,1644,5.94,1707,5.603,1956,5.94,1969,4.128,1978,5.603,1979,7.078,1980,7.939]],["t/492",[1,1.423,3,2.23,30,2.205,31,0.874,243,3.57,252,2.806,253,3.3,272,3.362,529,4.255,546,4.394,550,3.362,757,4.001,926,5.38,965,3.362,1022,3.914,1023,4.018,1574,3.914,1652,5.616,1887,4.394,1981,5.914,1982,4.727,1983,6.307,1984,5.914,1985,5.496,1986,4.934]],["t/494",[1,0.982,3,2.169,9,2.651,12,4.113,27,1.628,29,2.112,30,2.616,31,1.037,36,4.361,52,2.077,53,0.969,60,2.247,62,1.628,64,1.549,71,1.719,134,2.164,148,0.641,154,1.549,203,1.258,208,2.523,209,2.894,215,0.989,222,1.825,225,1.657,229,2.417,243,3.471,249,2.326,253,1.687,259,1.953,274,1.478,402,1.907,406,2.26,431,2.176,435,1.628,470,2.112,476,2.112,489,1.601,510,2.112,523,3.916,524,1.414,540,2.523,542,1.788,550,3.269,553,2.945,561,2.176,573,3.471,630,2.055,784,2.112,807,2.247,853,2.112,912,1.865,926,3.03,965,4.221,970,2.651,971,1.907,1004,1.865,1023,2.055,1123,2.81,1194,2.651,1286,2.417,1380,3.024,1444,2.651,1463,2.523,1483,2.247,1489,2.247,1567,2.523,1568,4.361,1574,2.002,1612,2.523,1652,4.815,1659,2.81,1670,2.326,1699,2.417,1745,2.176,1806,4.361,1887,2.247,1938,2.523,1978,2.651,1983,4.798,1985,2.81,1987,2.651,1988,2.055,1989,3.024,1990,3.024,1991,3.348,1992,3.024,1993,3.024,1994,3.348,1995,3.348,1996,3.348,1997,2.651,1998,3.348,1999,3.348,2000,3.348,2001,3.348,2002,3.916,2003,5.196,2004,3.024,2005,3.348,2006,3.486,2007,3.024,2008,3.348,2009,3.348]],["t/496",[27,2.64,46,1.754,57,1.82,64,1.639,151,1.312,168,2.119,305,2.736,308,3.093,311,4.763,380,2.558,392,2.175,402,2.019,406,1.541,553,1.639,652,3.919,685,2.236,688,4.288,774,4.091,777,4.091,786,2.558,872,2.975,912,1.974,925,4.091,931,2.975,965,3.797,999,2.806,1009,2.558,1021,6.082,1247,2.558,1249,4.556,1790,2.975,1840,2.975,1887,2.378,1983,7.121,1988,4.049,2010,6.599,2011,6.599,2012,5.429,2013,3.201,2014,3.201,2015,3.544,2016,3.544,2017,3.544,2018,3.544,2019,3.544,2020,3.544,2021,5.96,2022,3.544,2023,4.556,2024,3.544,2025,3.201,2026,3.201,2027,3.201,2028,4.903,2029,3.544,2030,3.544,2031,3.544,2032,4.903,2033,3.544,2034,3.544,2035,3.201,2036,3.544,2037,3.544,2038,5.429,2039,3.544,2040,5.429,2041,5.429,2042,3.544,2043,3.544,2044,3.544,2045,3.544,2046,3.201,2047,3.544,2048,3.544,2049,3.544,2050,3.544,2051,3.201,2052,3.544,2053,3.544,2054,3.201,2055,3.544,2056,3.201,2057,3.201,2058,3.201,2059,3.544,2060,3.544,2061,4.903,2062,3.544]],["t/498",[1,1.249,3,1.169,4,1.351,12,1.594,14,0.663,17,1.399,29,2.165,30,1.51,31,0.921,32,1.062,37,0.661,60,1.351,87,1.27,94,0.537,96,1.594,123,1.204,124,0.978,134,1.429,145,1.938,154,0.931,163,1.054,173,1.594,192,1.769,196,0.627,209,1.122,215,0.595,222,1.098,225,0.997,252,1.922,253,1.015,267,0.816,277,2.384,311,1.453,346,2.108,357,1.453,374,2.051,401,1.351,402,1.955,406,1.95,414,1.27,431,2.23,462,1.399,477,2.68,524,1.45,542,3.172,543,2.477,546,3.553,550,1.762,553,1.587,560,2.586,573,1.87,594,0.979,611,1.453,630,1.236,664,1.351,688,3.441,757,0.963,759,1.015,760,1.309,774,2.586,777,3.991,784,2.165,812,1.936,912,2.95,926,1.174,940,1.122,965,4.709,1004,1.122,1021,1.399,1022,2.051,1031,3.379,1042,3.099,1048,1.236,1100,1.453,1123,1.69,1194,1.594,1219,1.517,1226,1.955,1336,1.399,1366,3.763,1424,1.818,1429,1.818,1483,2.302,1499,1.594,1530,1.594,1562,1.818,1571,1.399,1574,2.68,1580,1.594,1582,1.818,1612,1.517,1652,2.302,1681,1.594,1699,1.453,1706,1.69,1736,1.594,1742,1.517,1750,1.818,1790,1.69,1792,1.517,1806,1.69,1836,1.594,1845,1.594,1887,3.008,1895,1.818,1911,1.399,1946,1.517,1982,2.477,1983,4.477,1984,1.818,1985,1.69,1986,1.517,1988,2.751,1989,1.818,1992,1.818,1997,1.594,2002,2.586,2013,3.099,2023,1.69,2025,1.818,2026,1.818,2027,1.818,2028,3.099,2032,1.818,2035,1.818,2046,1.818,2051,1.818,2056,4.049,2057,1.818,2058,3.099,2061,1.818,2063,1.818,2064,1.69,2065,1.69,2066,2.014,2067,2.88,2068,3.431,2069,2.014,2070,2.014,2071,1.69,2072,2.014,2073,3.763,2074,1.818,2075,1.453,2076,2.014,2077,1.818,2078,2.014,2079,2.014,2080,1.818,2081,1.69,2082,1.69,2083,2.014,2084,2.014,2085,1.818,2086,2.014,2087,3.431,2088,2.014,2089,1.69,2090,3.431,2091,2.014,2092,3.431,2093,4.484,2094,3.099,2095,1.69,2096,2.014,2097,2.014,2098,3.431,2099,1.818,2100,2.014,2101,2.014,2102,2.014,2103,1.69]],["t/500",[1,0.947,3,3.047,32,1.231,52,3.576,125,4.574,148,1.175,209,3.42,243,3.347,305,3.094,346,2.887,406,3.492,458,4.86,487,3.99,669,2.986,796,4.287,965,3.152,968,4.122,1002,5.545,1004,3.42,1523,4.265,1652,4.12,1792,6.05,1982,5.796,2006,4.12,2103,5.153,2104,4.86,2105,6.739,2106,6.14,2107,6.14]],["t/502",[1,0.949,3,1.081,14,1.045,17,4.274,27,1.543,29,2.002,30,2.347,31,1.073,32,0.999,37,0.353,107,1.807,134,1.322,143,1.694,144,1.34,148,1.334,152,1.897,164,2.002,170,1.85,179,1.38,196,0.989,203,0.768,215,0.938,225,3.045,247,1.401,252,2.987,253,3.1,279,3.069,329,1.807,344,2.062,346,1.492,350,2.979,361,2.29,406,3.496,426,1.422,431,2.062,435,1.543,458,4.87,460,2.663,490,1.73,522,2.204,529,2.062,546,2.129,561,2.062,583,1.422,803,2.512,812,2.249,864,1.322,869,5.164,910,4.441,925,3.755,926,1.85,965,4.705,976,2.512,1066,2.391,1226,1.807,1271,2.204,1286,2.29,1505,2.866,1567,2.391,1583,1.897,1627,2.663,1652,2.129,1659,2.663,1670,2.204,1783,2.866,1787,2.663,1849,2.663,1887,2.129,1915,2.663,1983,4.636,1987,2.512,1990,2.866,2006,2.129,2073,2.663,2074,4.5,2075,2.29,2104,5.518,2108,3.173,2109,4.983,2110,2.866,2111,3.173,2112,3.173,2113,4.983,2114,3.173,2115,2.512,2116,4.983,2117,3.173,2118,2.866,2119,3.173,2120,3.173,2121,3.173,2122,2.866,2123,2.866,2124,3.173,2125,3.173,2126,3.173,2127,3.173,2128,3.173,2129,3.173,2130,3.173]],["t/504",[1,0.646,3,2.375,17,1.278,31,0.246,32,0.84,37,0.353,52,3.215,58,1.278,62,0.895,63,2.504,64,0.851,67,2.073,71,1.63,111,1.073,113,0.649,118,0.945,125,2.387,134,1.745,145,1.728,148,1.754,151,0.681,152,1.1,163,0.963,164,1.161,170,4.563,174,1.234,190,2.02,209,1.769,210,0.963,225,2.073,226,1.129,239,1.234,247,0.812,249,1.278,267,0.745,269,1.544,295,0.982,305,3.677,350,1.1,374,1.1,388,1.1,406,0.8,431,1.195,435,0.895,458,3.317,476,1.161,477,2.505,490,1.003,569,1.386,598,1.278,630,1.949,697,2.393,748,1.661,757,1.518,759,0.927,761,1.175,784,1.161,796,4.178,803,1.456,830,1.544,840,2.868,851,2.393,864,2.077,910,3.024,925,2.393,926,3.282,941,1.1,944,5.084,949,1.278,965,2.56,968,2.56,999,4.455,1003,1.386,1004,2.334,1006,3.514,1022,2.505,1023,2.571,1026,1.544,1051,1.456,1126,2.206,1218,1.234,1307,1.661,1451,1.328,1463,1.386,1489,1.234,1510,1.386,1523,2.911,1546,1.386,1559,1.456,1574,1.898,1580,1.456,1583,1.898,1596,1.278,1615,1.328,1682,4.503,1690,1.456,1694,1.386,1814,1.544,1829,1.661,1859,1.386,1862,2.665,1875,1.661,1913,2.292,1951,1.544,1956,1.544,1982,3.024,1987,2.514,1993,2.868,2006,2.131,2064,1.544,2065,1.544,2073,1.544,2075,3.024,2080,1.661,2081,1.544,2095,1.544,2104,4.873,2105,2.665,2131,1.84,2132,1.661,2133,3.176,2134,1.84,2135,1.84,2136,1.84,2137,1.386,2138,1.84,2139,3.516,2140,1.84,2141,3.784,2142,2.665,2143,1.84,2144,2.868,2145,1.84,2146,1.661,2147,1.661,2148,1.661,2149,2.868,2150,1.456,2151,1.84,2152,4.19,2153,1.84,2154,1.661,2155,1.84,2156,1.84,2157,1.84,2158,1.84,2159,1.661,2160,1.84,2161,1.544,2162,1.661,2163,1.456,2164,1.84,2165,1.84,2166,2.393,2167,1.84,2168,3.176,2169,1.84,2170,1.84]],["t/506",[3,1.218,4,2.4,52,2.185,63,1.357,87,2.256,118,1.836,123,2.138,134,2.277,145,2.369,148,1.27,165,3.23,170,3.188,184,1.603,185,3.23,225,1.77,267,1.449,308,2.037,415,2.037,435,1.739,445,2.529,522,2.484,561,2.324,563,4.312,697,5,757,1.71,784,2.256,796,2.919,803,2.831,866,3.002,912,1.992,924,5.569,926,2.086,944,4.312,965,2.807,968,1.836,999,4.327,1004,1.992,1006,4.034,1009,3.946,1119,3.23,1158,3.002,1271,2.484,1318,3.002,1346,2.484,1448,4.61,1546,2.695,1571,2.484,1583,3.268,1615,2.582,1652,2.4,1711,2.831,1913,3.946,1974,3.002,1978,2.831,2006,2.4,2065,3.002,2105,3.002,2110,3.23,2137,2.695,2139,5.569,2141,3.23,2144,4.937,2146,3.23,2166,5.599,2171,3.002,2172,3.576,2173,5.467,2174,7.431,2175,6.636,2176,3.576,2177,3.576,2178,3.576,2179,3.576,2180,5.467,2181,3.576,2182,5.467,2183,5.467,2184,3.576,2185,3.576,2186,3.576,2187,3.576,2188,3.576,2189,3.576,2190,3.576,2191,3.576,2192,3.576]],["t/508",[1,0.892,3,2.957,30,1.946,31,0.771,52,3.084,63,2.193,125,3.292,148,1.476,151,2.139,209,4.297,248,3.151,253,2.913,305,3.888,308,3.292,381,4.015,522,4.015,583,2.591,630,3.546,796,3.086,944,3.756,965,3.961,968,2.967,1497,4.355,1574,3.455,1583,5.191,1736,4.575,1849,4.851,1888,4.851,1982,5.569,1987,4.575,2064,4.851,2075,4.172,2104,4.575,2166,4.355,2193,7.715,2194,5.78,2195,5.78]],["t/511",[1,0.912,3,2.013,8,5.337,11,4.678,31,1.172,37,0.657,41,2.515,42,4.453,124,1.707,148,1.68,196,1.842,219,4.453,222,3.222,404,3.447,435,2.874,518,3.626,550,3.034,561,3.84,589,4.96,787,3.728,812,2.161,861,4.453,875,3.447,990,5.9,1009,4.266,1813,6.198,1938,5.9,2166,4.453,2196,6.571,2197,5.337,2198,5.91,2199,5.337,2200,4.453,2201,5.91]],["t/513",[31,0.928,41,2.717,111,4.055,124,1.516,148,1.33,179,3.024,196,2.956,248,3.79,264,5.07,267,2.817,454,5.504,700,3.872,761,2.573,890,4.665,963,5.239,1287,6.279,2202,6.953,2203,6.953,2204,6.953,2205,6.279]],["t/515",[1,1.275,47,4.708,550,4.955,750,6.543,813,3.492,2206,6.937]],["t/517",[1,1.188,147,3.078,151,2.85,163,4.03,244,5.349,379,5.004,550,3.953,611,5.558,813,3.253,875,4.491,2206,6.463,2207,6.954,2208,7.7,2209,7.7]],["t/519",[1,0.508,3,1.121,30,1.109,31,1.209,37,0.366,38,2.824,62,1.601,111,1.92,113,1.809,117,1.629,118,1.69,124,1.551,148,1.733,152,1.968,182,2.973,191,1.299,196,2.216,210,2.684,215,0.973,222,1.795,226,3.866,252,1.411,267,1.334,288,2.209,305,1.659,329,1.875,346,1.548,357,2.377,375,2.973,378,1.723,389,1.834,404,1.92,439,2.209,504,4.06,522,2.287,608,2.377,612,2.377,757,1.574,812,2.303,814,2.287,912,1.834,926,3.674,940,1.834,966,2.973,968,3.651,988,3.865,990,5.359,998,2.973,1006,3.584,1009,2.377,1018,2.763,1022,1.968,1156,2.209,1441,2.606,1501,2.377,1532,2.606,1546,2.481,1813,4.06,1836,2.606,1844,2.973,1859,2.481,1967,5.287,1969,1.92,1982,3.702,1986,3.865,1997,4.06,2067,2.763,2115,2.606,2200,5.359,2205,2.973,2210,5.129,2211,3.292,2212,3.292,2213,3.292,2214,3.292,2215,3.292,2216,3.292,2217,3.292,2218,3.292,2219,2.606,2220,4.632,2221,3.292,2222,3.292,2223,2.973,2224,3.292,2225,3.292,2226,3.292,2227,5.129,2228,5.129,2229,3.292,2230,3.292,2231,2.973,2232,2.973,2233,2.973,2234,2.606]],["t/521",[30,1.488,31,1.286,37,0.836,41,1.266,53,1.852,67,2.187,101,5.322,112,2.187,134,1.84,151,1.635,196,2.844,215,1.306,225,4.082,226,2.711,305,2.227,349,2.517,355,2.871,374,2.641,380,3.19,522,3.07,524,2.703,545,2.313,611,3.19,669,3.112,700,2.461,757,2.112,790,3.19,875,3.732,990,5.669,1022,2.641,1226,2.517,1532,3.498,1566,2.965,1728,2.965,1840,3.708,1847,3.498,1911,4.445,2067,3.708,2115,3.498,2200,4.822,2219,3.498,2223,3.99,2235,4.419,2236,8.247,2237,4.419,2238,4.419,2239,4.419,2240,6.399,2241,6.399,2242,7.523,2243,4.419,2244,4.419,2245,4.419]],["t/523",[1,0.985,4,1.034,30,1.23,31,0.487,35,0.899,37,0.71,41,1.591,43,0.777,47,2.081,50,1.841,58,3.062,64,0.713,67,2.181,101,0.899,107,2.51,111,2.13,113,0.543,117,0.763,124,0.336,125,2.081,132,0.608,134,3.129,143,2.353,145,0.764,148,0.521,151,1.007,152,0.921,159,0.724,168,0.921,196,2.815,209,0.858,215,0.455,222,0.84,226,0.946,228,3.872,267,2.038,305,4.223,308,2.081,311,1.964,349,1.55,350,1.626,351,2.05,355,1.001,364,1.161,380,1.964,389,0.858,414,1.716,439,2.451,445,0.713,462,1.071,476,0.972,477,1.626,484,1.001,488,1.392,510,0.972,518,0.946,522,3.062,524,1.543,530,1.293,536,1.392,537,1.112,546,1.825,561,1.001,563,1.001,565,1.22,569,1.161,611,2.636,612,2.636,654,1.161,656,1.392,663,1.112,669,0.749,689,1.22,757,2.656,759,0.777,778,0.823,786,1.964,798,1.034,812,2.458,813,3.173,820,4.662,864,1.836,872,1.293,875,3.725,890,3.727,912,0.858,968,4.149,990,4.813,1006,2.221,1022,2.183,1048,0.946,1067,1.964,1247,1.112,1434,2.283,1523,1.071,1532,4.751,1535,1.293,1566,1.825,1587,3.299,1656,1.392,1662,1.392,1666,1.392,1670,1.071,1695,1.964,1699,1.112,1733,1.161,1742,1.161,1768,1.112,1803,2.457,1813,2.891,1859,1.161,1863,1.392,1911,1.071,1952,1.392,1970,1.392,1986,1.161,1988,0.946,1997,2.154,2148,1.392,2163,1.22,2171,1.293,2196,2.283,2199,1.392,2200,4.813,2219,2.154,2231,1.392,2232,1.392,2246,1.392,2247,2.721,2248,1.541,2249,1.541,2250,2.721,2251,2.721,2252,2.721,2253,2.457,2254,2.457,2255,2.457,2256,2.457,2257,2.721,2258,6.723,2259,5.555,2260,4.397,2261,1.293,2262,1.541,2263,1.541,2264,3.652,2265,1.541,2266,3.652,2267,1.541,2268,1.541,2269,1.541,2270,1.541,2271,1.541,2272,1.541,2273,1.541,2274,1.541,2275,1.541,2276,1.541,2277,1.541,2278,1.541,2279,1.541]],["t/525",[1,1.097,9,2.209,30,0.94,31,0.865,37,0.628,41,1.619,42,3.39,67,2.227,112,1.381,123,1.668,148,1.36,151,2.092,184,1.251,195,1.162,196,0.87,215,0.825,222,1.521,225,1.381,243,1.521,247,1.232,267,2.29,289,1.554,308,1.59,349,3.22,354,4.213,356,2.103,365,2.103,380,3.248,385,1.873,391,2.227,404,1.628,439,1.873,476,1.761,477,3.379,529,2.924,550,2.31,553,1.291,561,1.814,583,1.251,598,1.939,650,4.363,700,3.148,704,2.521,759,1.406,796,3.018,800,2.103,801,2.103,813,2.739,864,1.874,875,1.628,899,2.209,925,3.39,963,4.885,968,1.433,988,4.885,1004,3.148,1022,3.379,1048,1.713,1155,2.015,1247,2.015,1251,2.342,1272,2.209,1321,2.521,1346,1.939,1369,2.209,1379,2.209,1416,2.521,1434,2.342,1441,2.209,1500,3.927,1535,2.342,1596,1.939,1625,2.103,1695,2.015,1768,2.015,1856,2.342,1862,2.342,1967,6.709,1978,2.209,1988,1.713,2054,2.521,2099,2.521,2163,2.209,2196,2.342,2200,6.023,2206,2.342,2207,4.063,2219,2.209,2253,2.521,2254,2.521,2255,2.521,2256,2.521,2280,2.791,2281,2.791,2282,2.791,2283,2.791,2284,2.791,2285,2.791,2286,2.791,2287,2.791,2288,2.791,2289,2.342,2290,2.791,2291,2.791,2292,2.791,2293,2.791,2294,2.791,2295,2.791,2296,6.483,2297,2.791,2298,2.791,2299,2.791,2300,5.652,2301,5.652,2302,2.791,2303,2.791,2304,2.342]],["t/528",[1,0.956,30,1.424,31,0.564,32,0.848,37,0.816,41,1.211,52,3.593,63,1.605,64,1.956,124,0.922,148,1.404,151,1.565,163,2.213,174,2.837,192,1.668,196,1.318,223,3.053,225,2.093,228,1.988,233,3.767,243,2.305,279,1.713,298,3.309,299,4.158,330,3.053,452,2.748,468,2.056,510,2.668,545,2.213,549,3.187,587,3.549,678,3.348,757,2.963,796,2.258,812,2.954,826,3.053,862,3.053,883,2.213,941,2.528,944,4.028,947,3.053,952,4.028,954,4.305,971,4.179,986,2.837,1006,3.123,1022,2.528,1153,3.053,1155,3.053,1346,2.938,1378,5.597,1410,3.187,1425,3.053,1523,4.305,1552,3.549,1567,4.67,1648,2.837,1699,3.053,1792,3.187,1832,3.549,1969,3.614,1980,3.819,2139,3.549,2305,4.229,2306,3.819,2307,4.229,2308,4.229,2309,4.229,2310,4.229,2311,4.229]],["t/530",[31,0.819,32,1.231,52,2.455,128,3.279,172,5.153,203,1.487,215,1.814,228,2.887,298,3.279,487,3.99,757,2.935,796,4.777,940,3.42,970,4.86,971,5.096,1286,4.432,1560,5.153,1577,4.432,1721,4.86,1833,4.627,1842,4.627,1911,4.265,1914,6.356,1938,4.627,1969,3.581,2002,4.627,2137,4.627,2312,8.029,2313,4.86,2314,5.153,2315,5.153,2316,4.86,2317,4.432,2318,5.545]],["t/532",[17,3.957,31,0.76,148,1.763,151,2.108,152,3.405,170,3.322,190,2.308,228,3.592,346,2.678,374,3.405,431,3.702,435,2.77,542,3.042,546,3.822,618,4.509,796,4.079,864,3.182,912,3.173,971,5.247,1004,3.173,1006,2.871,1030,3.822,1218,3.822,1658,5.144,1906,4.509,1911,3.957,1914,4.509,1969,3.322,1988,3.495,2163,4.509,2260,4.509,2313,4.509,2319,6.9,2320,4.292,2321,5.696,2322,5.696,2323,5.696,2324,5.696,2325,5.696,2326,5.696]],["t/534",[31,0.709,32,1.065,52,3.325,67,2.629,128,3.891,145,1.491,148,1.591,152,4.356,159,2.497,170,3.098,172,4.458,253,2.677,298,3.891,452,3.452,542,3.891,796,3.891,814,3.69,864,2.213,912,2.959,940,2.959,971,3.026,1026,4.458,1027,4.003,1030,4.889,1336,3.69,1484,3.69,1651,4.798,1802,4.003,1859,4.003,1913,3.835,1988,4.471,2075,3.835,2085,4.798,2142,4.458,2246,4.798,2261,4.458,2314,4.458,2315,4.458,2316,4.205,2317,3.835,2318,4.798,2319,7.511,2327,5.312,2328,5.312,2329,4.458,2330,5.312,2331,5.312]],["t/536",[3,1.684,4,3.318,31,1.069,32,1.39,37,0.55,41,1.417,44,4.913,52,3.201,62,2.405,129,3.12,143,2.641,148,0.946,151,1.831,179,2.151,203,1.679,218,3.214,225,2.448,298,2.641,319,3.214,406,2.151,431,3.214,487,3.214,547,3.436,583,2.217,759,4.035,788,3.727,796,2.641,864,2.06,900,3.727,940,2.755,941,4.145,945,4.466,947,3.57,968,2.539,1346,3.436,1575,3.915,1577,3.57,1645,3.727,1690,3.915,1721,3.915,1733,3.727,1833,3.727,1842,6.54,1969,2.884,2095,4.151,2304,4.151,2332,4.946,2333,4.946,2334,4.946,2335,4.946,2336,4.946,2337,4.946,2338,4.946,2339,4.946,2340,4.946,2341,4.946,2342,4.946]],["t/538",[1,0.749,17,3.372,25,3.842,37,0.881,52,2.736,63,2.597,67,2.402,118,2.492,147,1.94,148,0.929,190,1.967,197,2.831,232,3.658,253,2.446,298,2.592,305,2.446,389,2.704,401,3.257,435,2.36,473,5.98,542,3.654,545,2.541,553,2.245,669,3.328,678,6.275,757,2.32,788,3.658,869,4.074,912,2.704,952,3.154,954,3.372,971,2.765,996,3.504,1000,4.384,1067,4.94,1231,3.504,1234,3.658,1410,3.658,1559,3.842,1561,4.074,1625,3.658,1648,3.257,1668,4.384,1780,5.417,1913,4.94,1925,4.384,2197,6.181,2315,5.744,2343,3.842,2344,4.854,2345,4.854,2346,4.854,2347,4.854,2348,4.384,2349,4.854,2350,4.854,2351,4.384,2352,4.854]],["t/540",[31,0.889,52,4.037,55,4.468,64,3.08,143,4.517,148,1.274,357,4.807,429,4.201,477,3.981,796,3.556,814,4.626,949,4.626,956,5.271,1004,3.709,1062,6.014,1286,4.807,1346,4.626,1670,4.626,1681,5.271,1963,6.014,1969,3.883,2002,5.018,2353,6.659,2354,6.014,2355,5.589]],["t/542",[1,1.568,4,4.218,14,2.07,16,3.005,104,3.228,112,4.035,227,5.678,248,3.427,252,2.694,270,4.977,346,3.833,376,5.678,419,4.538,612,5.886,670,5.881,786,4.538,821,3.667,1111,5.678,1269,4.977,1608,6.843,1657,5.277,2077,5.678,2356,6.287,2357,5.277,2358,5.678,2359,5.277]],["t/544",[1,1.196,16,2.783,40,3.174,94,2.069,104,3.98,112,2.882,113,2.053,124,1.27,203,1.877,229,5.596,248,3.174,274,2.57,290,3.784,312,3.109,429,3.673,435,3.77,512,4.887,537,4.203,556,3.784,569,4.387,583,2.61,598,4.045,670,5.038,761,2.155,774,4.387,836,5.258,853,3.673,864,2.425,1039,4.887,1048,3.573,1063,4.609,1383,3.673,1542,4.887,1645,5.842,1726,4.203,1780,4.609,2360,5.823,2361,5.258,2362,4.887]],["t/546",[1,1.561,37,0.557,40,2.73,60,3.36,71,4.48,81,2.479,94,1.337,112,3.99,134,2.914,179,3.506,225,2.479,229,3.615,243,3.813,253,2.524,274,2.211,312,2.674,476,3.16,534,6.318,544,4.203,670,5.239,672,5.871,705,3.965,787,3.16,853,3.16,864,2.086,1048,3.073,1507,4.523,1571,3.479,1684,3.615,1724,3.965,1946,3.774,2320,3.774,2358,4.523,2359,4.203,2363,6.996,2364,5.008,2365,5.008,2366,5.008,2367,6.996,2368,5.008,2369,5.008,2370,5.008,2371,5.008,2372,6.318,2373,5.008]],["t/548",[1,1.494,3,1.809,14,1.749,16,2.539,21,2.836,37,0.591,71,4.27,81,2.629,94,2.22,112,4.116,124,1.158,245,6.584,253,2.677,402,3.026,544,7.511,583,2.381,666,4.458,670,6.295,761,1.966,819,2.78,853,3.351,902,3.098,1153,3.835,1388,5.405,1526,4.205,1733,4.003,1774,4.205,2361,6.581,2362,4.458,2374,5.312,2375,4.798,2376,6.581,2377,4.798,2378,5.312,2379,4.458]],["t/550",[1,1.495,37,0.811,38,1.875,40,3.352,63,1.588,67,2.071,81,2.071,87,3.879,94,1.641,102,3.676,112,4.238,157,3.512,171,3.512,179,1.82,238,5.161,242,4.126,243,3.974,244,2.907,245,3.312,248,3.352,249,2.907,251,2.071,365,3.153,402,3.503,429,2.639,430,3.512,459,7.258,467,3.779,518,2.567,657,2.639,663,3.02,670,5.818,685,2.639,686,4.738,705,3.312,744,3.512,851,3.153,1163,2.44,1271,2.907,1418,5.161,1546,3.153,1566,2.807,1726,4.439,1774,3.312,1886,3.779,2147,3.779,2355,3.512,2357,3.512,2372,3.779,2376,5.554,2380,6.149,2381,4.184,2382,6.149,2383,6.149,2384,4.184,2385,6.149,2386,4.184,2387,4.184,2388,4.184]],["t/552",[1,1.421,5,2.871,14,1.875,37,0.633,84,2.553,112,4.266,124,1.242,132,2.247,134,2.373,229,4.112,233,4.426,238,4.781,251,2.819,305,2.871,542,3.042,670,5.602,771,4.781,853,3.594,875,3.322,876,5.144,967,3.957,1039,4.781,1122,5.144,1157,5.144,1231,4.112,1569,4.509,1581,5.144,1736,4.509,1753,3.702,1816,4.781,1930,4.509,2161,4.781,2329,4.781,2357,6.412,2362,4.781,2375,5.144,2379,4.781,2389,5.696,2390,5.696,2391,5.696]],["t/554",[1,0.809,3,1.785,30,1.765,31,0.7,32,1.447,37,0.803,41,1.502,52,2.886,64,2.424,73,2.691,119,4.399,148,1.891,170,4.816,264,3.057,290,4.692,349,2.986,355,3.406,401,3.517,759,2.641,853,3.307,860,5.715,965,2.691,1003,3.95,1030,3.517,1379,4.149,1448,3.641,1501,3.784,1590,5.962,1625,3.95,1742,3.95,1802,5.44,1969,3.057,1981,4.734,1988,3.216,2006,3.517,2075,3.784,2260,4.149,2317,6.424,2392,7.22,2393,4.734,2394,4.734,2395,4.734]],["t/556",[1,0.663,29,2.711,31,1.277,37,0.478,41,1.231,51,3.239,52,1.718,58,2.986,62,2.09,64,1.988,79,3.607,124,1.368,148,1.897,151,1.591,154,1.988,191,1.696,219,4.726,243,2.343,279,3,290,2.793,329,4.637,343,2.711,346,2.021,349,2.448,374,2.569,462,2.986,529,2.793,812,2.707,853,2.711,860,4.965,864,3.391,914,3.882,940,2.394,1006,3.732,1023,2.637,1024,4.357,1027,4.726,1153,3.103,1168,5.664,1381,3.239,1523,2.986,1524,3.607,1568,3.607,1590,5.345,1596,2.986,1612,3.239,1728,2.884,1943,5.264,1969,2.507,2006,2.884,2150,4.965,2396,4.298,2397,4.298,2398,3.882,2399,5.664,2400,3.882]],["t/558",[1,0.646,29,1.612,31,1.281,32,0.512,37,0.284,49,0.912,52,1.022,62,1.243,64,2.461,67,2.073,113,0.901,128,1.365,144,1.769,145,1.176,148,1.837,163,2.192,170,2.443,179,1.111,191,1.652,215,1.573,225,2.073,252,1.095,264,1.49,267,2.156,274,1.849,279,1.035,298,2.236,305,2.111,319,1.661,329,1.456,350,1.528,352,1.926,402,1.456,414,1.612,433,3.156,435,2.037,542,2.236,688,1.661,757,2.942,759,2.111,775,2.023,777,1.926,798,1.715,804,1.926,862,3.841,864,3.797,890,1.715,926,1.49,940,1.423,947,1.845,965,3.16,996,3.841,1003,1.926,1006,3.101,1023,1.568,1027,6.455,1031,3.156,1033,1.775,1065,2.145,1163,1.49,1218,1.715,1271,1.775,1336,4.275,1460,1.775,1484,1.775,1516,1.845,1524,2.145,1590,6.009,1706,2.145,1707,2.023,1726,3.023,1728,1.715,1841,2.023,1906,3.315,1913,1.845,1943,2.145,1969,1.49,1988,1.568,2002,1.926,2115,3.315,2142,2.145,2150,2.023,2161,2.145,2171,2.145,2234,2.023,2261,2.145,2306,2.308,2316,2.023,2317,1.845,2320,1.926,2329,2.145,2343,2.023,2379,2.145,2399,5.558,2400,6.133,2401,2.308,2402,5.322,2403,2.556,2404,2.556,2405,2.556,2406,2.556,2407,2.556,2408,2.308,2409,2.556,2410,2.556,2411,2.556,2412,2.556,2413,2.556,2414,2.556]],["t/560",[1,0.625,5,2.043,9,3.21,30,1.365,31,0.541,32,0.813,37,0.88,41,2.051,49,2.144,63,1.539,125,3.423,145,1.138,148,1.37,178,3.662,179,1.763,191,1.6,215,1.198,228,1.906,248,2.21,308,2.31,379,3.905,388,2.424,402,2.31,406,1.763,542,2.165,543,2.927,550,2.082,553,1.875,573,2.21,693,3.21,745,3.403,759,3.028,788,3.055,796,3.208,797,3.403,864,2.503,970,3.21,971,3.423,1004,2.258,1006,2.043,1021,2.817,1022,2.424,1023,3.687,1156,2.721,1454,3.403,1484,2.817,1559,3.21,1590,2.927,1670,2.817,1728,4.031,1915,3.403,1930,3.21,1969,5.163,1988,2.488,2004,3.662,2007,3.662,2021,3.662,2089,3.403,2094,3.662,2103,3.403,2137,3.055,2313,3.21,2314,3.403,2316,3.21,2317,2.927,2354,3.662,2415,5.426,2416,4.055,2417,4.055,2418,6.009,2419,4.055,2420,4.055,2421,4.055,2422,4.055,2423,4.055,2424,4.055,2425,4.055,2426,4.055,2427,4.055,2428,4.055,2429,4.055,2430,4.055,2431,4.055]],["t/562",[1,0.789,14,0.795,31,1.049,32,0.484,37,0.661,43,1.217,49,0.862,52,0.965,64,1.117,67,2.531,101,1.408,119,3.355,125,2.277,129,1.523,135,1.117,144,1.02,148,1.649,151,0.894,152,1.443,164,1.523,170,2.983,179,1.05,190,0.978,191,0.953,215,0.714,219,1.82,228,1.135,240,1.264,247,2.258,267,2.072,290,1.569,305,2.577,319,1.569,344,2.597,346,1.879,355,1.569,357,1.743,361,1.743,380,3.692,392,2.453,401,2.682,402,2.913,431,1.569,481,1.408,490,1.316,535,2.181,542,1.289,543,1.743,545,1.264,546,1.62,553,1.117,583,1.082,594,1.174,736,1.523,759,2.014,780,3.164,784,1.523,796,2.134,814,1.677,826,1.743,832,1.743,859,1.677,864,3.274,874,2.027,965,2.626,968,2.052,971,1.375,996,1.743,1003,1.82,1006,2.014,1027,3.012,1030,3.431,1100,1.743,1126,1.677,1218,1.62,1231,1.743,1272,1.911,1292,1.911,1336,2.777,1448,1.677,1484,1.677,1540,2.181,1561,2.027,1571,1.677,1590,5.674,1618,3.164,1637,2.027,1670,1.677,1742,1.82,1768,1.743,1792,1.82,1802,1.82,1836,1.911,1841,1.911,1896,2.181,1938,1.82,1951,2.027,1969,3.467,1986,1.82,1988,3.138,2014,2.181,2023,2.027,2089,2.027,2118,2.181,2137,3.012,2154,2.181,2159,2.181,2162,2.181,2233,2.181,2260,4.048,2313,1.911,2317,4.291,2359,2.027,2393,2.181,2394,4.619,2395,3.61,2401,4.619,2408,4.619,2415,3.61,2432,2.415,2433,3.997,2434,3.997,2435,2.415,2436,2.415,2437,2.415,2438,2.415,2439,2.415,2440,2.415,2441,2.415,2442,2.415,2443,2.415,2444,2.415,2445,2.415,2446,2.415,2447,2.415,2448,2.415,2449,2.415,2450,3.997,2451,2.415,2452,3.997,2453,2.415,2454,2.415,2455,2.415,2456,2.415,2457,2.415,2458,2.415,2459,2.027]],["t/564",[18,3.317,37,1.161,46,3.837,84,2.61,132,2.297,278,2.297,374,3.481,541,3.673,545,3.048,671,5.258,819,3.048,821,3.396,877,4.609,1014,5.317,1320,4.609,1603,5.938,1751,5.258,1752,5.258,2460,5.823,2461,5.823,2462,4.887,2463,7.753,2464,5.258,2465,5.258]],["t/566",[37,0.705,66,2.979,105,5.43,1014,3.194,1022,3.789,1425,4.575,1510,4.776,1515,4.403,1603,3.889,1674,6.557,1753,4.118,1754,8.674,1755,8.204,1756,5.724,1757,6.879,1758,4.776,1759,5.724,1760,5.724,1761,5.724,1762,5.724,1763,5.724,1764,5.724,1765,5.724,1766,5.017,1767,5.724,1768,4.575]],["t/568",[2,2.589,3,1.17,14,1.745,23,1.642,27,2.578,37,0.72,46,3.203,84,1.54,86,2.72,94,0.917,112,1.7,129,2.168,143,1.835,147,1.374,278,2.87,288,3.557,389,1.914,412,2.884,414,2.168,429,3.344,445,2.452,545,2.775,570,1.764,583,2.376,594,3.147,612,2.48,663,2.48,675,2.168,700,2.953,736,2.168,819,1.798,837,3.103,853,2.168,894,3.103,926,2.004,954,2.387,1014,4.624,1066,2.589,1126,2.387,1160,2.884,1269,2.72,1311,3.103,1444,2.72,1451,3.827,1463,2.589,1515,3.683,1516,2.48,1519,2.72,1575,2.72,1583,2.054,1629,2.884,1680,3.103,1711,2.72,1758,4.877,1769,4.449,1775,2.589,1779,3.103,1787,2.884,1811,3.103,1864,2.589,1879,2.72,1947,3.103,1974,2.884,2082,2.884,2289,2.884,2320,2.589,2343,4.196,2355,2.884,2465,3.103,2466,5.432,2467,4.788,2468,5.301,2469,5.845,2470,5.301,2471,3.436,2472,3.436,2473,3.436,2474,3.436,2475,3.436,2476,4.788,2477,3.436,2478,3.103,2479,3.436,2480,4.196,2481,2.72,2482,3.436,2483,3.103,2484,6.107,2485,2.884,2486,3.436,2487,3.436,2488,3.436,2489,3.436,2490,5.301,2491,5.301,2492,3.436]],["t/570",[2,4.361,5,3.501,18,2.197,37,0.429,39,1.784,43,2.917,46,2.864,73,1.98,84,3.114,112,3.439,125,2.197,132,1.521,143,2.059,184,3.114,221,2.906,228,1.813,240,2.018,250,1.728,274,1.702,349,2.197,429,2.433,529,2.506,545,3.637,570,2.972,583,1.728,594,3.379,612,2.784,618,3.053,664,3.883,757,1.843,771,3.237,784,2.433,819,2.018,845,5.015,853,2.433,864,1.606,890,2.587,1014,4.17,1100,2.784,1218,3.883,1269,4.582,1608,3.237,1711,4.582,1774,4.582,1879,3.053,1946,5.236,2081,3.237,2082,4.858,2122,5.227,2123,3.483,2149,3.483,2234,3.053,2320,4.361,2377,5.227,2459,3.237,2466,3.237,2467,3.483,2478,3.483,2484,4.858,2493,8.275,2494,3.856,2495,3.856,2496,3.856,2497,5.788,2498,3.856,2499,5.788,2500,3.856,2501,3.856,2502,3.856,2503,3.856,2504,3.856,2505,3.856,2506,3.856,2507,3.856,2508,3.856,2509,3.856]],["t/572",[27,3.009,37,0.688,63,2.349,84,2.774,105,3.699,121,5.589,134,2.578,151,2.291,156,3.239,278,3.184,388,3.699,404,3.609,406,2.691,583,2.774,657,3.904,1014,4.067,1155,4.467,1163,3.609,1444,4.899,1448,4.299,1515,4.299,1591,7.288,1603,3.797,1798,5.589,1818,5.194,1819,5.194,1887,4.152,1946,4.663,2510,8.07,2511,5.589,2512,6.188,2513,8.07,2514,6.188,2515,6.188]],["t/574",[2,3.635,37,0.878,38,2.162,46,3.372,84,2.162,94,1.288,278,2.688,312,2.576,353,4.428,570,3.498,583,4.212,736,4.299,807,6.731,819,2.525,832,3.482,981,2.96,1014,5.232,1377,2.13,1545,4.357,1603,2.96,1641,4.357,1650,4.357,1745,6.519,1775,3.635,1809,4.049,1864,3.635,2234,3.819,2343,3.819,2459,4.049,2462,4.049,2466,4.049,2516,4.824,2517,6.814,2518,4.824,2519,4.357]],["t/576",[3,2.528,14,1.797,37,0.825,123,3.264,215,1.613,225,2.702,278,2.154,412,4.582,414,3.444,429,3.444,583,3.327,630,3.35,765,4.93,926,3.184,954,3.793,1014,4.562,1163,3.184,1226,3.11,1346,3.793,1603,3.35,1733,4.114,1758,4.114,1775,4.114,1780,4.322,1814,7.08,1888,4.582,1905,4.322,2150,4.322,2220,4.93,2348,4.93,2480,4.322,2481,4.322,2519,4.93,2520,4.582,2521,5.46,2522,5.46,2523,5.46,2524,5.46,2525,5.46,2526,5.46,2527,6.705,2528,4.582,2529,5.46,2530,5.46,2531,5.46,2532,5.46,2533,5.46]],["t/578",[3,2.389,37,0.972,84,3.918,143,3.745,278,2.767,429,4.425,1014,4.799,1570,5.063,1599,5.887,1603,4.304,1872,6.335,2289,5.887,2481,5.553,2485,5.887,2527,6.335,2528,5.887,2534,7.015,2535,7.015,2536,7.015,2537,7.015]],["t/580",[37,0.977,117,3.503,143,3.779,162,5.109,164,4.465,233,3.634,351,5.333,388,4.231,664,4.749,675,4.465,819,3.704,864,2.948,890,4.749,1014,5.04,1579,5.109,1603,5.394,1683,5.94,1738,5.94]],["t/582",[37,0.84,143,4.033,163,3.953,288,5.067,1014,3.806,1370,6.821,1566,5.067,1603,4.634,2462,6.339,2480,7.241,2538,6.821,2539,6.821,2540,6.821,2541,6.821,2542,6.821]],["t/584",[3,1.563,14,0.942,16,1.368,37,0.639,65,2.585,84,2.058,105,2.744,118,1.469,123,1.711,137,2.066,141,1.756,151,1.059,152,2.744,153,1.988,162,3.314,163,1.498,190,1.16,191,1.129,210,2.403,225,2.272,230,2.265,252,1.227,266,1.176,278,1.129,312,1.528,349,1.63,350,1.711,374,1.711,377,4.957,402,1.63,419,4.149,429,1.805,490,1.56,539,2.585,570,1.469,583,2.058,657,1.805,666,2.402,672,2.402,681,2.265,700,2.557,774,2.157,778,1.528,864,1.912,890,3.08,895,2.402,931,2.402,1014,3.315,1126,3.993,1366,2.402,1388,1.86,1423,1.988,1499,2.265,1518,2.585,1570,3.314,1574,2.744,1599,3.853,1603,2.817,1620,4.146,1676,2.265,1712,2.265,1719,2.585,1725,2.585,1726,2.066,1745,1.86,1753,1.86,1757,2.402,1766,2.265,1785,2.585,1789,2.585,1809,2.402,1845,2.265,1847,2.265,1905,2.265,1907,2.157,2006,1.92,2063,2.585,2071,2.402,2132,4.146,2166,2.157,2351,2.585,2398,2.585,2464,2.585,2480,2.265,2481,5.7,2483,2.585,2484,2.402,2485,2.402,2511,4.146,2520,2.402,2528,2.402,2538,5.191,2539,7.821,2540,4.146,2541,8.599,2543,2.862,2544,2.862,2545,4.591,2546,2.862,2547,5.191,2548,2.862,2549,2.862,2550,2.862,2551,2.862,2552,2.862,2553,2.862,2554,2.862,2555,2.862,2556,2.862,2557,2.862,2558,2.862,2559,2.862,2560,2.862,2561,2.862,2562,2.862,2563,2.862,2564,2.862,2565,2.862,2566,2.862,2567,2.862,2568,2.862,2569,2.862,2570,2.862,2571,2.862,2572,2.862,2573,2.862]],["t/586",[3,1.594,37,1.065,40,2.552,105,2.798,162,3.379,163,2.45,164,4.208,226,2.872,274,2.066,356,3.527,374,2.798,388,2.798,457,3.929,484,3.042,657,2.953,683,3.929,895,3.929,902,2.73,1014,5.02,1051,3.706,1126,3.252,1153,3.379,1158,3.929,1163,2.73,1379,3.706,1423,3.252,1548,3.929,1566,3.141,1574,3.987,1603,5.876,1634,3.929,1802,3.527,1815,4.228,1816,3.929,1817,4.228,1818,3.929,1819,3.929,1820,4.228,1827,3.929,1887,3.141,1912,4.228,2071,3.929,2304,5.598,2469,4.228,2476,4.228,2520,3.929,2542,4.228,2547,4.228,2574,6.67,2575,4.681,2576,4.681,2577,4.681,2578,4.681,2579,4.681,2580,4.681,2581,4.681]]],"invertedIndex":[["",{"_index":145,"t":{"14":{"position":[[212,1]]},"16":{"position":[[710,2],[806,2],[846,1]]},"24":{"position":[[101,1],[119,1],[139,2],[183,1],[232,3],[256,2],[306,2]]},"26":{"position":[[108,1],[128,1],[148,2],[330,1],[361,1],[381,2],[464,1],[505,3]]},"28":{"position":[[93,1],[124,1],[144,2],[189,1],[223,2],[277,1],[308,3],[326,1],[471,1],[517,2],[559,2],[607,3]]},"30":{"position":[[118,2],[181,1]]},"32":{"position":[[137,2],[187,1],[276,3],[280,2],[344,1],[389,2],[461,1],[491,3]]},"34":{"position":[[172,2],[219,1],[235,2],[238,1],[240,2],[320,2],[393,1],[461,2],[464,2],[515,1],[557,2]]},"40":{"position":[[154,2],[205,1],[247,2],[455,1],[463,2],[466,2],[469,1],[475,1],[477,2],[529,1],[545,1],[550,1],[552,2],[642,2],[697,1],[699,1],[701,2],[801,1],[808,1],[823,1],[825,1],[827,2],[830,2]]},"48":{"position":[[301,1]]},"52":{"position":[[266,1],[305,1],[307,3]]},"56":{"position":[[188,1],[270,1],[272,3]]},"60":{"position":[[142,1],[160,1],[180,2],[244,1],[293,3]]},"62":{"position":[[154,1],[172,1],[192,2],[240,1],[304,3],[464,2],[524,1],[526,1],[702,2],[705,2],[757,1],[806,3]]},"64":{"position":[[280,1],[298,1],[325,1],[344,1],[374,2],[412,1],[454,2],[506,1],[508,1],[545,2],[548,2],[597,1],[631,1],[648,1],[698,2],[701,2],[704,2],[707,3],[820,1],[830,1],[860,2],[909,1],[943,1],[960,1],[1035,2],[1038,2],[1041,2],[1044,3]]},"66":{"position":[[93,1],[111,1],[138,1],[150,1],[185,1],[213,1],[243,2],[303,1],[305,1],[481,2],[484,2],[536,1],[538,1],[575,2],[578,2],[644,1],[678,1],[718,1],[776,2],[779,2],[782,2],[785,3]]},"68":{"position":[[130,1],[167,1],[198,1],[247,3],[282,2]]},"89":{"position":[[169,1],[192,1],[227,2],[281,1],[422,1],[438,1],[483,2],[535,1],[581,2],[628,2],[669,3],[673,2],[745,1],[755,3],[889,1],[905,1],[950,2],[1002,1],[1047,2],[1145,2]]},"91":{"position":[[169,1],[204,1],[239,2],[308,1],[332,2],[417,1],[577,1],[593,1],[634,2],[683,1],[729,2],[776,2],[820,3],[824,2],[896,1],[906,3],[1058,1],[1074,1],[1115,2],[1164,1],[1207,2],[1305,2]]},"93":{"position":[[570,1],[605,1],[647,1],[689,1],[741,1],[779,1],[820,2],[880,2],[940,2],[1026,1],[1071,1],[1104,2],[1177,1],[1232,2],[1279,2],[1349,2],[1403,3],[1407,2],[1473,1],[1524,2],[1571,2],[1644,2],[1698,3],[1702,2],[1876,1],[1886,3],[1986,1],[1996,3],[2235,1],[2256,1],[2298,1],[2314,1],[2359,2],[2413,2],[2497,1],[2521,2],[2576,1],[2671,3],[2675,2],[2750,1],[2766,2],[2769,1],[2771,2],[2836,2],[2916,1],[2966,1],[3000,2],[3060,2],[3186,1],[3237,1],[3244,1],[3299,1],[3301,2]]},"95":{"position":[[460,1],[485,1],[513,2],[578,1],[621,1],[645,2],[707,1],[755,1],[781,2],[852,1],[908,1]]},"105":{"position":[[301,1],[442,1],[447,1],[590,1],[644,1]]},"111":{"position":[[66,1],[117,1]]},"123":{"position":[[105,1],[124,1],[138,1],[187,1],[407,1],[503,1]]},"129":{"position":[[101,1],[119,1],[139,2],[183,1],[232,3]]},"131":{"position":[[94,1],[125,1],[145,2]]},"133":{"position":[[99,1],[115,1],[135,2],[180,1],[214,2],[256,1]]},"137":{"position":[[458,2],[505,1],[521,2],[524,1],[526,2],[602,2],[605,2],[693,2]]},"139":{"position":[[358,2],[401,1],[441,2],[514,1],[516,2],[563,1],[615,2],[618,1],[630,1],[641,2],[709,2],[712,2],[715,1]]},"142":{"position":[[158,1],[174,1],[194,2],[247,1],[249,1],[290,2],[293,2],[346,1],[348,1],[388,2],[391,2],[518,1]]},"144":{"position":[[187,1],[194,1],[214,2],[261,1],[263,3],[282,1],[298,2],[301,1],[331,2],[373,2],[428,2],[431,2],[470,2],[601,2],[604,2],[643,1],[689,1],[729,2],[767,2],[894,1],[912,2],[915,2]]},"146":{"position":[[150,2],[186,1],[216,1],[272,2],[322,1],[324,1],[338,1],[360,2],[363,2],[366,2],[493,1]]},"158":{"position":[[1158,1]]},"162":{"position":[[167,1],[244,1]]},"166":{"position":[[657,5],[754,1]]},"182":{"position":[[244,1],[264,1],[286,2],[335,1],[337,1],[362,2],[426,2],[532,2],[577,1],[688,1],[698,1],[735,1],[737,2],[776,1],[801,1],[803,1],[816,2],[852,2],[915,2],[980,1]]},"184":{"position":[[151,1],[173,1],[196,1],[206,1],[235,1],[266,1],[355,1],[395,1],[441,1],[457,2],[540,1],[546,2],[549,1],[584,2],[587,2],[626,1],[651,1],[653,1],[666,2],[725,1],[775,1],[806,3],[824,1],[855,2],[918,1],[1054,2],[1109,1],[1117,2],[1120,2],[1123,2],[1133,1],[1135,2],[1255,2],[1258,1],[1421,3],[1585,2],[1670,3],[1674,1],[1676,1],[1963,1],[1981,1],[1999,1],[2079,1],[2092,1],[2141,1],[2157,1],[2235,1],[2250,1],[2330,1],[2347,1],[2418,1],[2433,1],[2482,1]]},"186":{"position":[[215,1],[230,1],[267,1],[269,2],[317,1],[324,1],[326,1],[357,3],[361,2],[416,1],[424,2],[427,2],[430,1],[442,2],[465,3],[480,2],[527,1],[560,1],[627,3],[631,2],[694,1],[745,1],[766,1],[768,1],[802,3],[806,2],[844,3],[851,1],[905,1],[912,1],[935,1],[937,2],[940,1]]},"188":{"position":[[201,1],[221,1],[258,1],[260,2],[311,1],[338,1],[340,1],[376,3],[380,2],[424,2],[427,1],[474,2],[477,1],[561,4],[566,2],[588,1]]},"190":{"position":[[230,1],[268,1],[305,1],[307,2],[352,1],[378,1],[380,1],[415,3],[419,2],[470,1],[497,1],[499,1],[535,3],[539,2],[589,2],[592,1],[612,1],[694,2],[697,1],[781,4],[786,2],[823,1]]},"198":{"position":[[230,1],[327,1]]},"200":{"position":[[382,1],[405,1],[520,1],[546,1],[577,1],[702,1],[714,2],[774,1]]},"204":{"position":[[192,1],[226,1],[417,1],[513,1]]},"206":{"position":[[540,1],[563,1],[622,1],[949,1],[972,1],[1087,1],[1125,1]]},"208":{"position":[[295,1],[321,1],[378,1],[561,1],[587,1]]},"210":{"position":[[288,1],[311,1],[696,1],[715,1],[733,1]]},"216":{"position":[[79,1],[130,1]]},"220":{"position":[[208,1],[246,1],[267,1],[352,2],[560,1]]},"224":{"position":[[357,1],[472,1]]},"226":{"position":[[576,1],[1221,1]]},"234":{"position":[[1005,1],[1020,1],[1082,1],[1294,1],[1309,1],[1355,1]]},"236":{"position":[[392,1],[618,1],[702,1],[779,1],[792,1],[819,1],[833,1],[850,1]]},"238":{"position":[[579,1],[606,1],[652,1],[686,1],[744,1],[933,1],[960,1],[1142,1],[1176,1],[1218,1],[1263,1]]},"240":{"position":[[749,1],[763,1],[812,1],[855,1],[910,1],[938,1],[1068,1],[1082,1],[1101,1],[1250,1],[1264,1],[1284,1],[1306,1]]},"242":{"position":[[304,1],[343,1],[535,1],[672,1]]},"246":{"position":[[235,1],[263,1]]},"256":{"position":[[482,1],[484,3],[488,1],[516,1],[518,3],[522,1],[524,2],[630,1],[665,1],[700,1],[705,1]]},"258":{"position":[[773,1],[849,1],[854,1]]},"274":{"position":[[74,1],[151,1],[406,1],[450,1],[459,2],[528,1],[586,2],[843,1]]},"498":{"position":[[2633,1],[2694,1],[2713,1],[2725,1],[2735,1],[2748,1],[2760,1]]},"504":{"position":[[1029,1],[1041,1],[1649,1],[1653,1],[1720,1],[1726,1]]},"506":{"position":[[559,1],[565,1],[722,1],[737,1],[796,1],[800,1]]},"523":{"position":[[769,1],[1775,1]]},"534":{"position":[[588,1]]},"558":{"position":[[1046,1],[1053,1]]},"560":{"position":[[200,1]]}}}],["0",{"_index":900,"t":{"154":{"position":[[42,1],[410,1]]},"158":{"position":[[1156,1]]},"184":{"position":[[1973,1]]},"186":{"position":[[469,2],[848,2]]},"536":{"position":[[674,1]]}}}],["0.0.0.0",{"_index":480,"t":{"62":{"position":[[399,8]]},"204":{"position":[[357,8]]},"210":{"position":[[531,9]]}}}],["0.01",{"_index":1412,"t":{"262":{"position":[[124,4]]}}}],["0.012",{"_index":2314,"t":{"530":{"position":[[97,5]]},"534":{"position":[[102,5]]},"560":{"position":[[1019,5]]}}}],["0.012*5",{"_index":2331,"t":{"534":{"position":[[580,7]]}}}],["0.06",{"_index":2318,"t":{"530":{"position":[[184,4]]},"534":{"position":[[590,4]]}}}],["0.1",{"_index":1747,"t":{"424":{"position":[[278,3]]}}}],["0.15",{"_index":2313,"t":{"530":{"position":[[34,4]]},"532":{"position":[[178,4]]},"560":{"position":[[1060,4]]},"562":{"position":[[1418,4]]}}}],["0.5",{"_index":2155,"t":{"504":{"position":[[1722,3]]}}}],["0.5gb",{"_index":1150,"t":{"192":{"position":[[440,5]]},"212":{"position":[[591,5]]}}}],["000",{"_index":1119,"t":{"184":{"position":[[2193,5]]},"506":{"position":[[573,3]]}}}],["007bff",{"_index":1127,"t":{"184":{"position":[[2453,8]]}}}],["01.ac",{"_index":1297,"t":{"234":{"position":[[1770,5]]},"242":{"position":[[561,5]]},"244":{"position":[[489,5]]}}}],["01.he",{"_index":2255,"t":{"523":{"position":[[951,5],[2026,5]]},"525":{"position":[[1081,5]]}}}],["06",{"_index":1248,"t":{"224":{"position":[[93,2]]},"226":{"position":[[278,2],[930,2]]}}}],["1",{"_index":305,"t":{"30":{"position":[[253,2]]},"144":{"position":[[672,3]]},"172":{"position":[[585,1]]},"184":{"position":[[990,2],[2105,2],[2360,2]]},"204":{"position":[[223,2]]},"208":{"position":[[375,2]]},"250":{"position":[[266,2]]},"256":{"position":[[667,2]]},"416":{"position":[[197,2]]},"496":{"position":[[33,3],[476,3]]},"500":{"position":[[330,1]]},"504":{"position":[[272,1],[499,1],[777,1],[2275,1],[2368,1],[2433,1],[2453,1],[2619,1],[2825,1]]},"508":{"position":[[207,1],[391,1]]},"519":{"position":[[36,1]]},"521":{"position":[[230,2]]},"523":{"position":[[1002,1],[1016,1],[1034,1],[1063,1],[1355,1],[1384,1],[1530,1],[1559,1],[2077,1],[2090,1],[2108,1],[2235,1],[2300,1],[2447,1],[2640,1],[2723,1],[2916,1]]},"538":{"position":[[577,1]]},"552":{"position":[[462,2]]},"558":{"position":[[470,2],[1306,1]]},"562":{"position":[[859,1],[1366,1],[1951,1]]}}}],["1%2fproto&pagesize=50&ascending=tru",{"_index":1447,"t":{"274":{"position":[[805,37]]}}}],["1.0.0.1",{"_index":936,"t":{"156":{"position":[[134,10]]},"170":{"position":[[197,10]]},"206":{"position":[[789,8]]}}}],["1.000",{"_index":2153,"t":{"504":{"position":[[1598,5]]}}}],["1.1.1.1",{"_index":935,"t":{"156":{"position":[[122,11]]},"170":{"position":[[185,11]]},"206":{"position":[[777,7]]}}}],["1.2",{"_index":2185,"t":{"506":{"position":[[802,3]]}}}],["1.4",{"_index":2214,"t":{"519":{"position":[[289,3]]}}}],["1/proto",{"_index":1443,"t":{"274":{"position":[[577,8]]}}}],["10",{"_index":1022,"t":{"172":{"position":[[398,2]]},"430":{"position":[[305,2]]},"492":{"position":[[286,2]]},"498":{"position":[[2569,2],[2783,2]]},"504":{"position":[[288,2],[1090,2],[2463,2]]},"519":{"position":[[1220,3]]},"521":{"position":[[424,2]]},"523":{"position":[[1335,2],[2427,2],[2574,2]]},"525":{"position":[[1469,2],[1576,2],[1847,2]]},"528":{"position":[[409,2]]},"560":{"position":[[801,2]]},"566":{"position":[[246,2]]}}}],["10,000",{"_index":1404,"t":{"258":{"position":[[747,6],[775,7],[842,6]]}}}],["10.000",{"_index":2139,"t":{"504":{"position":[[720,6],[1009,6],[1666,6]]},"506":{"position":[[412,6],[552,6],[1046,6]]},"528":{"position":[[481,6]]}}}],["100",{"_index":1346,"t":{"240":{"position":[[1227,4]]},"506":{"position":[[878,4]]},"525":{"position":[[1817,3]]},"528":{"position":[[324,3]]},"536":{"position":[[362,3]]},"540":{"position":[[21,3]]},"576":{"position":[[528,3]]}}}],["1000",{"_index":1003,"t":{"162":{"position":[[382,4],[479,4]]},"504":{"position":[[1644,4]]},"554":{"position":[[32,4]]},"558":{"position":[[1079,4]]},"562":{"position":[[1725,4]]}}}],["10000",{"_index":2154,"t":{"504":{"position":[[1714,5]]},"562":{"position":[[1758,5]]}}}],["100k/day",{"_index":2352,"t":{"538":{"position":[[677,9]]}}}],["100kb",{"_index":2433,"t":{"562":{"position":[[188,6],[1609,5]]}}}],["100mbit",{"_index":2446,"t":{"562":{"position":[[833,8]]}}}],["100mpb",{"_index":2445,"t":{"562":{"position":[[819,7]]}}}],["100msg/day",{"_index":2194,"t":{"508":{"position":[[393,12]]}}}],["100vh",{"_index":1106,"t":{"184":{"position":[[2048,6]]}}}],["107",{"_index":2030,"t":{"496":{"position":[[559,3]]}}}],["108",{"_index":2053,"t":{"496":{"position":[[671,3]]}}}],["10k",{"_index":2315,"t":{"530":{"position":[[130,3]]},"534":{"position":[[455,3]]},"538":{"position":[[340,3],[400,3]]}}}],["10kb",{"_index":2260,"t":{"523":{"position":[[1092,4],[1413,4],[1588,4],[2329,4],[2669,4],[2945,4]]},"532":{"position":[[139,5]]},"554":{"position":[[330,4]]},"562":{"position":[[182,5],[1071,4],[1258,4]]}}}],["10mbp",{"_index":2097,"t":{"498":{"position":[[2622,6]]}}}],["10msg/sec",{"_index":2259,"t":{"523":{"position":[[1081,10],[1402,10],[1577,10],[2318,10],[2658,10],[2934,10]]}}}],["10px",{"_index":1115,"t":{"184":{"position":[[2135,5],[2208,5],[2229,5],[2276,5],[2392,5],[2412,5]]}}}],["11",{"_index":2099,"t":{"498":{"position":[[2722,2]]},"525":{"position":[[410,2]]}}}],["1100",{"_index":2277,"t":{"523":{"position":[[3782,4]]}}}],["119",{"_index":2044,"t":{"496":{"position":[[621,3]]}}}],["11m",{"_index":2267,"t":{"523":{"position":[[2398,5]]}}}],["12",{"_index":2023,"t":{"496":{"position":[[369,2],[691,2]]},"498":{"position":[[2745,2]]},"562":{"position":[[2049,3]]}}}],["123.123.123.123",{"_index":465,"t":{"56":{"position":[[223,18]]}}}],["1234",{"_index":464,"t":{"56":{"position":[[211,4]]}}}],["127.0.0.1",{"_index":417,"t":{"50":{"position":[[529,10]]},"166":{"position":[[96,9]]},"168":{"position":[[113,9]]},"240":{"position":[[315,10]]},"272":{"position":[[153,9]]}}}],["127.0.0.1:8080",{"_index":1013,"t":{"166":{"position":[[712,15]]}}}],["13",{"_index":2039,"t":{"496":{"position":[[599,2]]}}}],["137",{"_index":2031,"t":{"496":{"position":[[563,3]]}}}],["13:18:07.575+00:00",{"_index":2282,"t":{"525":{"position":[[416,18]]}}}],["14",{"_index":2460,"t":{"564":{"position":[[27,2]]}}}],["14400",{"_index":995,"t":{"162":{"position":[[161,5]]},"242":{"position":[[760,5]]}}}],["1459",{"_index":1479,"t":{"280":{"position":[[33,5]]}}}],["15",{"_index":1249,"t":{"224":{"position":[[96,2]]},"226":{"position":[[281,2],[933,2]]},"496":{"position":[[648,2],[856,2]]}}}],["150",{"_index":2182,"t":{"506":{"position":[[739,3],[781,3]]}}}],["150kb",{"_index":2323,"t":{"532":{"position":[[151,6]]}}}],["15mbp",{"_index":2091,"t":{"498":{"position":[[2152,7]]}}}],["16",{"_index":1406,"t":{"258":{"position":[[851,2]]}}}],["16:09:54.448+01:00",{"_index":1250,"t":{"224":{"position":[[99,18]]},"226":{"position":[[284,18],[936,18]]}}}],["17",{"_index":2058,"t":{"496":{"position":[[702,2]]},"498":{"position":[[2364,3],[2457,3]]}}}],["1727795042",{"_index":2101,"t":{"498":{"position":[[2890,10]]}}}],["18",{"_index":2098,"t":{"498":{"position":[[2710,2],[2732,2]]}}}],["1:1",{"_index":294,"t":{"28":{"position":[[789,3]]}}}],["1kb",{"_index":2321,"t":{"532":{"position":[[134,4]]}}}],["1lqrcbccb4np93f9",{"_index":1262,"t":{"226":{"position":[[421,16],[654,16]]}}}],["1msg/10",{"_index":2340,"t":{"536":{"position":[[530,7]]}}}],["1px",{"_index":1108,"t":{"184":{"position":[[2063,3]]}}}],["2",{"_index":308,"t":{"30":{"position":[[301,2]]},"172":{"position":[[490,1]]},"184":{"position":[[1039,2]]},"200":{"position":[[723,4]]},"204":{"position":[[257,2]]},"208":{"position":[[432,2]]},"256":{"position":[[702,2]]},"302":{"position":[[400,1]]},"496":{"position":[[279,3],[714,3]]},"506":{"position":[[567,1]]},"508":{"position":[[411,1]]},"523":{"position":[[1321,1],[1747,2],[2413,1]]},"525":{"position":[[1894,2]]},"560":{"position":[[614,1]]}}}],["20",{"_index":2172,"t":{"506":{"position":[[116,2]]}}}],["200msg/day",{"_index":2195,"t":{"508":{"position":[[413,12]]}}}],["2023",{"_index":1247,"t":{"224":{"position":[[88,4]]},"226":{"position":[[273,4],[925,4]]},"464":{"position":[[127,5]]},"496":{"position":[[376,6]]},"523":{"position":[[3840,6]]},"525":{"position":[[405,4]]}}}],["2024",{"_index":1752,"t":{"428":{"position":[[38,4]]},"564":{"position":[[39,4]]}}}],["21",{"_index":2036,"t":{"496":{"position":[[590,2]]}}}],["21600",{"_index":1291,"t":{"234":{"position":[[1251,5]]},"242":{"position":[[492,5]]}}}],["22",{"_index":2059,"t":{"496":{"position":[[705,2]]}}}],["23",{"_index":2047,"t":{"496":{"position":[[639,2]]}}}],["232",{"_index":2226,"t":{"519":{"position":[[1134,3]]}}}],["24*3600/1=86400",{"_index":2165,"t":{"504":{"position":[[2666,15]]}}}],["24*3600/240=360",{"_index":2169,"t":{"504":{"position":[[3070,15]]}}}],["240",{"_index":2168,"t":{"504":{"position":[[3021,3],[3270,3]]}}}],["25",{"_index":2264,"t":{"523":{"position":[[1510,2],[2703,2],[2850,2]]}}}],["250",{"_index":2174,"t":{"506":{"position":[[296,3],[472,3],[561,3],[1082,3]]}}}],["250m",{"_index":2273,"t":{"523":{"position":[[3550,5]]}}}],["256",{"_index":2420,"t":{"560":{"position":[[362,3]]}}}],["25mbp",{"_index":2125,"t":{"502":{"position":[[1500,7]]}}}],["26",{"_index":2057,"t":{"496":{"position":[[694,2]]},"498":{"position":[[2298,3]]}}}],["263",{"_index":2453,"t":{"562":{"position":[[1314,3]]}}}],["27",{"_index":2054,"t":{"496":{"position":[[675,2]]},"525":{"position":[[413,2]]}}}],["286cae9f2990bfc49dafdd3a9e737f56ddba3656e5e427108cef456fb67680e8",{"_index":1308,"t":{"236":{"position":[[394,64],[852,64],[940,64]]}}}],["2gb",{"_index":692,"t":{"103":{"position":[[257,3]]},"192":{"position":[[368,3]]},"212":{"position":[[519,3]]}}}],["2mbyte",{"_index":2346,"t":{"538":{"position":[[358,7]]}}}],["3",{"_index":311,"t":{"30":{"position":[[350,2]]},"64":{"position":[[517,2],[531,2],[542,2]]},"66":{"position":[[547,2],[561,2],[572,2]]},"496":{"position":[[389,3],[781,3],[827,1]]},"498":{"position":[[2114,4]]},"523":{"position":[[1496,1],[2689,1]]}}}],["3.85",{"_index":2406,"t":{"558":{"position":[[1048,4]]}}}],["30",{"_index":1009,"t":{"166":{"position":[[228,2]]},"240":{"position":[[565,3]]},"496":{"position":[[625,2]]},"506":{"position":[[691,2],[711,2]]},"511":{"position":[[95,2]]},"519":{"position":[[755,2]]}}}],["300",{"_index":998,"t":{"162":{"position":[[240,3]]},"519":{"position":[[775,3]]}}}],["3000",{"_index":2338,"t":{"536":{"position":[[482,4]]}}}],["32",{"_index":1198,"t":{"206":{"position":[[331,2]]},"236":{"position":[[351,2],[389,2],[530,2],[712,2],[802,3],[816,2]]}}}],["33",{"_index":2040,"t":{"496":{"position":[[602,2],[697,2]]}}}],["37",{"_index":2050,"t":{"496":{"position":[[651,2]]}}}],["38",{"_index":2032,"t":{"496":{"position":[[567,2],[772,2]]},"498":{"position":[[2757,2]]}}}],["38.8",{"_index":2225,"t":{"519":{"position":[[1088,7]]}}}],["384",{"_index":2309,"t":{"528":{"position":[[655,3]]}}}],["4",{"_index":996,"t":{"162":{"position":[[169,1]]},"242":{"position":[[774,2]]},"254":{"position":[[434,1]]},"538":{"position":[[418,3]]},"558":{"position":[[1055,2],[1146,1],[1874,1]]},"562":{"position":[[2044,1]]}}}],["4.0",{"_index":2510,"t":{"572":{"position":[[83,3],[116,5]]}}}],["400",{"_index":2179,"t":{"506":{"position":[[632,3]]}}}],["44",{"_index":2041,"t":{"496":{"position":[[605,2],[665,2]]}}}],["479c95bbf74222417abf76c7f9c480a6790e454374dc4f59bbb15ca183ce1abd",{"_index":2294,"t":{"525":{"position":[[741,65]]}}}],["48",{"_index":1282,"t":{"234":{"position":[[694,3]]}}}],["49",{"_index":2042,"t":{"496":{"position":[[615,2]]}}}],["4k",{"_index":2090,"t":{"498":{"position":[[2127,2],[2613,3]]}}}],["4k/uhd",{"_index":2062,"t":{"496":{"position":[[849,6]]}}}],["4px",{"_index":1125,"t":{"184":{"position":[[2378,4],[2477,4]]}}}],["5",{"_index":999,"t":{"162":{"position":[[246,1]]},"496":{"position":[[842,1]]},"504":{"position":[[1476,1],[1621,1],[1651,1],[1655,1],[1728,1]]},"506":{"position":[[500,1],[724,1]]}}}],["50",{"_index":925,"t":{"154":{"position":[[726,2]]},"496":{"position":[[654,2],[678,2]]},"502":{"position":[[1217,2],[1420,2]]},"504":{"position":[[814,2],[1031,2]]},"525":{"position":[[1440,2],[1547,2]]}}}],["500",{"_index":2144,"t":{"504":{"position":[[1043,3],[1690,3]]},"506":{"position":[[211,4],[569,3]]}}}],["5000",{"_index":2349,"t":{"538":{"position":[[505,4]]}}}],["500kb",{"_index":2395,"t":{"554":{"position":[[574,6]]},"562":{"position":[[195,6],[1619,6]]}}}],["508",{"_index":2393,"t":{"554":{"position":[[379,3]]},"562":{"position":[[1109,3]]}}}],["50kb",{"_index":2322,"t":{"532":{"position":[[145,5]]}}}],["520",{"_index":2350,"t":{"538":{"position":[[549,3]]}}}],["53",{"_index":2048,"t":{"496":{"position":[[642,2]]}}}],["54",{"_index":2037,"t":{"496":{"position":[[593,2]]}}}],["56",{"_index":2045,"t":{"496":{"position":[[628,2]]}}}],["58",{"_index":2029,"t":{"496":{"position":[[556,2]]}}}],["6",{"_index":1292,"t":{"234":{"position":[[1265,2]]},"242":{"position":[[506,2]]},"284":{"position":[[403,1]]},"562":{"position":[[2029,1]]}}}],["60",{"_index":2557,"t":{"584":{"position":[[1068,4]]}}}],["60000",{"_index":810,"t":{"125":{"position":[[215,8]]},"154":{"position":[[373,5]]}}}],["60000:60000",{"_index":1169,"t":{"200":{"position":[[325,11]]}}}],["60002",{"_index":482,"t":{"62":{"position":[[424,5]]},"204":{"position":[[382,5]]}}}],["60003",{"_index":483,"t":{"62":{"position":[[434,5]]},"204":{"position":[[392,6]]}}}],["625",{"_index":1407,"t":{"258":{"position":[[856,4]]}}}],["627",{"_index":2451,"t":{"562":{"position":[[1228,4]]}}}],["63",{"_index":2055,"t":{"496":{"position":[[681,2]]}}}],["6300",{"_index":1765,"t":{"430":{"position":[[308,4]]},"566":{"position":[[249,4]]}}}],["64",{"_index":905,"t":{"154":{"position":[[239,2]]},"236":{"position":[[262,3]]},"358":{"position":[[26,3]]}}}],["65000",{"_index":799,"t":{"123":{"position":[[126,5]]}}}],["68",{"_index":2033,"t":{"496":{"position":[[570,2]]}}}],["7",{"_index":872,"t":{"146":{"position":[[268,3]]},"496":{"position":[[700,1]]},"523":{"position":[[3837,2]]}}}],["71",{"_index":2049,"t":{"496":{"position":[[645,2]]}}}],["72",{"_index":2038,"t":{"496":{"position":[[596,2],[631,2]]}}}],["7640",{"_index":2213,"t":{"519":{"position":[[250,5]]}}}],["8",{"_index":1318,"t":{"236":{"position":[[789,2]]},"420":{"position":[[339,1]]},"506":{"position":[[798,1]]}}}],["8.8.4.4",{"_index":1203,"t":{"206":{"position":[[922,8]]}}}],["8.8.8.8",{"_index":1202,"t":{"206":{"position":[[910,7]]}}}],["8000",{"_index":1034,"t":{"176":{"position":[[99,4]]},"238":{"position":[[346,5]]}}}],["8001",{"_index":1326,"t":{"238":{"position":[[909,5]]}}}],["8002",{"_index":1330,"t":{"238":{"position":[[1118,5]]}}}],["8008",{"_index":1015,"t":{"168":{"position":[[183,4]]}}}],["83",{"_index":2060,"t":{"496":{"position":[[769,2]]}}}],["84",{"_index":2052,"t":{"496":{"position":[[668,2]]}}}],["85",{"_index":2034,"t":{"496":{"position":[[573,2]]}}}],["86",{"_index":2178,"t":{"506":{"position":[[629,2]]}}}],["8645",{"_index":1007,"t":{"166":{"position":[[158,4]]},"240":{"position":[[431,5]]},"274":{"position":[[44,4]]}}}],["8997",{"_index":2222,"t":{"519":{"position":[[809,4]]}}}],["9",{"_index":1750,"t":{"428":{"position":[[27,1]]},"498":{"position":[[2692,1]]}}}],["9.6",{"_index":2187,"t":{"506":{"position":[[817,4]]}}}],["9000",{"_index":1018,"t":{"172":{"position":[[117,4]]},"240":{"position":[[1044,5]]},"519":{"position":[[852,5]]}}}],["9000:9000/udp",{"_index":1170,"t":{"200":{"position":[[340,13]]}}}],["93",{"_index":2043,"t":{"496":{"position":[[618,2]]}}}],["95",{"_index":2159,"t":{"504":{"position":[[2141,2]]},"562":{"position":[[1196,3]]}}}],["95%/99",{"_index":2191,"t":{"506":{"position":[[1113,7]]}}}],["99",{"_index":2160,"t":{"504":{"position":[[2147,3]]}}}],["9990",{"_index":2430,"t":{"560":{"position":[[841,4]]}}}],["_nwaku",{"_index":2236,"t":{"521":{"position":[[95,6],[156,6],[258,6],[340,6]]}}}],["abil",{"_index":1486,"t":{"280":{"position":[[579,7]]}}}],["abnorm",{"_index":2440,"t":{"562":{"position":[[437,8]]}}}],["abov",{"_index":1100,"t":{"184":{"position":[[1714,6]]},"266":{"position":[[112,5]]},"426":{"position":[[162,6]]},"498":{"position":[[9,5]]},"562":{"position":[[126,5]]},"570":{"position":[[1073,6]]}}}],["absent",{"_index":1965,"t":{"482":{"position":[[256,6]]}}}],["absolut",{"_index":590,"t":{"93":{"position":[[156,8]]}}}],["abus",{"_index":1957,"t":{"478":{"position":[[1006,7]]}}}],["accept",{"_index":826,"t":{"137":{"position":[[184,7]]},"139":{"position":[[155,7]]},"220":{"position":[[219,8]]},"274":{"position":[[854,8]]},"528":{"position":[[765,6]]},"562":{"position":[[1179,11]]}}}],["access",{"_index":46,"t":{"4":{"position":[[226,6],[494,6]]},"54":{"position":[[304,11]]},"56":{"position":[[82,11]]},"89":{"position":[[1408,6]]},"103":{"position":[[81,6]]},"166":{"position":[[300,6],[368,6]]},"200":{"position":[[799,10]]},"240":{"position":[[600,6],[681,6]]},"268":{"position":[[27,6]]},"272":{"position":[[104,6]]},"310":{"position":[[177,9]]},"344":{"position":[[186,9]]},"350":{"position":[[84,6]]},"398":{"position":[[28,7],[111,13]]},"420":{"position":[[64,7],[139,10]]},"424":{"position":[[98,6]]},"496":{"position":[[359,9]]},"564":{"position":[[149,6],[519,6]]},"568":{"position":[[773,11],[845,6],[1007,10]]},"570":{"position":[[451,10],[1163,10]]},"574":{"position":[[563,8],[600,6]]}}}],["accident",{"_index":1422,"t":{"266":{"position":[[393,12]]}}}],["accommod",{"_index":1572,"t":{"306":{"position":[[338,11]]},"380":{"position":[[201,11]]}}}],["accompani",{"_index":1613,"t":{"318":{"position":[[1408,11]]}}}],["accord",{"_index":1620,"t":{"320":{"position":[[303,9]]},"584":{"position":[[1290,10],[1937,10]]}}}],["account",{"_index":543,"t":{"81":{"position":[[58,7]]},"406":{"position":[[429,10],[495,10]]},"474":{"position":[[269,8]]},"498":{"position":[[858,8],[2206,8]]},"560":{"position":[[896,7]]},"562":{"position":[[2246,8]]}}}],["accur",{"_index":2459,"t":{"562":{"position":[[2378,9]]},"570":{"position":[[872,9]]},"574":{"position":[[399,9]]}}}],["accuraci",{"_index":2478,"t":{"568":{"position":[[421,9]]},"570":{"position":[[941,9]]}}}],["achiev",{"_index":1497,"t":{"284":{"position":[[120,7]]},"412":{"position":[[82,7]]},"414":{"position":[[197,8]]},"416":{"position":[[97,8]]},"508":{"position":[[295,9]]}}}],["ack/nack",{"_index":2448,"t":{"562":{"position":[[961,8]]}}}],["acknowledg",{"_index":1586,"t":{"314":{"position":[[138,15],[341,12]]},"352":{"position":[[96,16]]}}}],["acquir",{"_index":2369,"t":{"546":{"position":[[395,7]]}}}],["act",{"_index":1911,"t":{"468":{"position":[[557,4]]},"474":{"position":[[95,4]]},"498":{"position":[[608,6]]},"521":{"position":[[292,6],[374,6]]},"523":{"position":[[122,4]]},"530":{"position":[[260,4]]},"532":{"position":[[371,4]]}}}],["action",{"_index":1712,"t":{"410":{"position":[[216,7]]},"412":{"position":[[62,7]]},"462":{"position":[[799,7]]},"584":{"position":[[2234,6]]}}}],["activ",{"_index":353,"t":{"38":{"position":[[212,6]]},"40":{"position":[[95,6]]},"115":{"position":[[2266,6]]},"284":{"position":[[294,8]]},"412":{"position":[[118,10]]},"440":{"position":[[646,10],[687,10],[780,10]]},"442":{"position":[[209,10]]},"464":{"position":[[278,10]]},"574":{"position":[[524,10],[717,10]]}}}],["actor",{"_index":1715,"t":{"410":{"position":[[340,6]]},"412":{"position":[[47,5],[134,6]]}}}],["actual",{"_index":618,"t":{"93":{"position":[[3026,8]]},"410":{"position":[[333,6]]},"532":{"position":[[362,8]]},"570":{"position":[[695,6]]}}}],["ad",{"_index":254,"t":{"22":{"position":[[246,6]]},"30":{"position":[[421,6]]},"75":{"position":[[119,5]]},"258":{"position":[[274,6]]}}}],["adapt",{"_index":79,"t":{"6":{"position":[[283,8]]},"178":{"position":[[198,8]]},"556":{"position":[[51,10]]}}}],["add",{"_index":128,"t":{"12":{"position":[[103,3]]},"14":{"position":[[104,3]]},"16":{"position":[[458,4],[607,3]]},"48":{"position":[[75,3]]},"64":{"position":[[125,3]]},"77":{"position":[[150,3]]},"87":{"position":[[172,3]]},"115":{"position":[[62,3]]},"154":{"position":[[412,3]]},"178":{"position":[[103,3]]},"180":{"position":[[445,3]]},"258":{"position":[[455,3]]},"464":{"position":[[216,4]]},"476":{"position":[[0,3],[184,3]]},"530":{"position":[[159,3]]},"534":{"position":[[28,4],[555,3]]},"558":{"position":[[648,4]]}}}],["add(new",{"_index":303,"t":{"30":{"position":[[216,8],[267,8],[315,8]]},"184":{"position":[[953,8],[1004,8]]}}}],["addit",{"_index":1500,"t":{"284":{"position":[[312,10]]},"300":{"position":[[587,10]]},"316":{"position":[[267,10]]},"406":{"position":[[381,8]]},"434":{"position":[[3,8]]},"448":{"position":[[474,8]]},"525":{"position":[[1405,10],[1512,10],[1782,10]]}}}],["addition",{"_index":1527,"t":{"290":{"position":[[256,13]]},"324":{"position":[[91,13]]},"392":{"position":[[201,13]]},"406":{"position":[[576,13]]},"462":{"position":[[221,13]]}}}],["addr",{"_index":930,"t":{"156":{"position":[[35,5],[104,5]]}}}],["address",{"_index":66,"t":{"6":{"position":[[92,7]]},"62":{"position":[[865,7]]},"154":{"position":[[265,7],[306,7],[497,8]]},"156":{"position":[[299,7]]},"158":{"position":[[626,7],[665,7],[753,7],[761,7]]},"166":{"position":[[88,7],[116,7]]},"168":{"position":[[105,7],[133,7]]},"172":{"position":[[368,7]]},"192":{"position":[[1613,9],[1670,9],[1759,9],[1815,10]]},"212":{"position":[[455,10]]},"220":{"position":[[621,10]]},"222":{"position":[[17,9],[207,9]]},"224":{"position":[[383,7],[494,7]]},"226":{"position":[[28,10],[591,9],[1236,9]]},"232":{"position":[[72,7],[781,7]]},"240":{"position":[[209,7],[239,7],[803,8]]},"282":{"position":[[516,7]]},"296":{"position":[[63,9]]},"358":{"position":[[96,10],[121,9]]},"430":{"position":[[227,7]]},"432":{"position":[[552,8],[623,7],[730,9],[836,7]]},"468":{"position":[[819,8]]},"470":{"position":[[87,7]]},"566":{"position":[[167,7]]}}}],["address=127.0.0.1",{"_index":1345,"t":{"240":{"position":[[1110,17]]}}}],["address=[rest",{"_index":1339,"t":{"240":{"position":[[772,13]]}}}],["adequ",{"_index":1784,"t":{"438":{"position":[[288,8]]}}}],["admin",{"_index":1010,"t":{"166":{"position":[[281,5],[320,5]]},"240":{"position":[[574,5],[615,5],[1172,5]]}}}],["admin=[true|fals",{"_index":1342,"t":{"240":{"position":[[919,18]]}}}],["admin=tru",{"_index":1347,"t":{"240":{"position":[[1273,10]]}}}],["administ",{"_index":2559,"t":{"584":{"position":[[1227,12]]}}}],["administr",{"_index":2568,"t":{"584":{"position":[[1891,14]]}}}],["adopt",{"_index":8,"t":{"2":{"position":[[93,9]]},"511":{"position":[[423,8]]}}}],["advanc",{"_index":1409,"t":{"260":{"position":[[260,8]]},"274":{"position":[[1031,8]]},"404":{"position":[[122,8]]}}}],["adversari",{"_index":1389,"t":{"254":{"position":[[659,12]]},"406":{"position":[[46,11]]},"412":{"position":[[19,9]]},"414":{"position":[[53,9]]}}}],["advertis",{"_index":922,"t":{"154":{"position":[[596,9]]},"468":{"position":[[107,13],[462,13]]},"472":{"position":[[144,13]]}}}],["advic",{"_index":2488,"t":{"568":{"position":[[1586,6]]}}}],["advis",{"_index":2529,"t":{"576":{"position":[[412,7]]}}}],["affect",{"_index":1802,"t":{"440":{"position":[[668,7],[741,6]]},"534":{"position":[[373,6]]},"554":{"position":[[235,8],[456,8]]},"562":{"position":[[1431,7]]},"586":{"position":[[412,6]]}}}],["africa",{"_index":2056,"t":{"496":{"position":[[684,6]]},"498":{"position":[[2291,6],[2357,6],[2750,6]]}}}],["again",{"_index":1945,"t":{"478":{"position":[[387,6]]}}}],["against",{"_index":1570,"t":{"306":{"position":[[283,7]]},"406":{"position":[[555,7]]},"478":{"position":[[934,7]]},"484":{"position":[[27,7]]},"578":{"position":[[53,7]]},"584":{"position":[[102,7],[2276,7]]}}}],["agent",{"_index":901,"t":{"154":{"position":[[131,5],[155,5]]}}}],["aggreg",{"_index":2530,"t":{"576":{"position":[[474,9]]}}}],["agnost",{"_index":1619,"t":{"320":{"position":[[220,8]]}}}],["agnostic",{"_index":1636,"t":{"326":{"position":[[122,12]]}}}],["agre",{"_index":2463,"t":{"564":{"position":[[390,6],[467,5]]}}}],["agreement",{"_index":2574,"t":{"586":{"position":[[44,9],[155,11]]}}}],["aim",{"_index":529,"t":{"77":{"position":[[10,4]]},"404":{"position":[[3,3]]},"408":{"position":[[177,6]]},"432":{"position":[[3,3]]},"492":{"position":[[17,4]]},"502":{"position":[[338,3]]},"525":{"position":[[11,4],[879,5]]},"556":{"position":[[830,4]]},"570":{"position":[[1205,3]]}}}],["aka",{"_index":2114,"t":{"502":{"position":[[614,3]]}}}],["alert",{"_index":432,"t":{"50":{"position":[[931,7]]}}}],["alic",{"_index":320,"t":{"32":{"position":[[241,8]]},"93":{"position":[[541,5],[998,5],[2883,5],[3054,5],[3228,8],[3290,8]]},"278":{"position":[[36,5],[102,5],[233,6],[240,5],[337,5],[472,6],[479,5],[571,5],[616,5]]},"298":{"position":[[0,5]]},"302":{"position":[[36,5],[95,5],[135,5],[219,6],[226,5],[300,5],[329,5],[390,5]]}}}],["alice'",{"_index":619,"t":{"93":{"position":[[3063,7]]},"298":{"position":[[114,7]]}}}],["aliceprivatekey",{"_index":599,"t":{"93":{"position":[[1010,15],[1332,16],[1627,16]]}}}],["alicepublickey",{"_index":600,"t":{"93":{"position":[[1056,14]]}}}],["align",{"_index":1121,"t":{"184":{"position":[[2309,5]]}}}],["aliv",{"_index":973,"t":{"158":{"position":[[1353,5],[1377,5]]}}}],["allmessag",{"_index":1141,"t":{"190":{"position":[[600,11]]}}}],["alloc",{"_index":2074,"t":{"498":{"position":[[997,8]]},"502":{"position":[[995,9],[1062,8]]}}}],["allow",{"_index":63,"t":{"6":{"position":[[38,8]]},"16":{"position":[[304,6]]},"26":{"position":[[244,6]]},"28":{"position":[[381,6],[562,6]]},"50":{"position":[[433,8]]},"93":{"position":[[427,6]]},"125":{"position":[[381,8]]},"154":{"position":[[737,7],[798,7]]},"166":{"position":[[417,5],[430,5],[731,5]]},"210":{"position":[[916,8]]},"232":{"position":[[130,6]]},"234":{"position":[[1478,6]]},"242":{"position":[[217,6]]},"244":{"position":[[218,6]]},"250":{"position":[[577,6]]},"254":{"position":[[77,8]]},"256":{"position":[[182,8]]},"268":{"position":[[94,8]]},"280":{"position":[[77,6],[329,6]]},"284":{"position":[[828,6]]},"288":{"position":[[198,5]]},"310":{"position":[[16,6]]},"314":{"position":[[108,6]]},"318":{"position":[[1525,8],[1662,7]]},"320":{"position":[[244,6]]},"326":{"position":[[135,8]]},"340":{"position":[[49,6]]},"348":{"position":[[58,6]]},"368":{"position":[[131,8]]},"374":{"position":[[165,8]]},"388":{"position":[[81,8]]},"504":{"position":[[680,6],[2427,5],[2636,5],[2741,6],[3040,5],[3151,5],[3373,5]]},"506":{"position":[[455,5]]},"508":{"position":[[371,5]]},"528":{"position":[[914,7]]},"538":{"position":[[265,7],[671,5]]},"550":{"position":[[587,5]]},"560":{"position":[[54,6]]},"572":{"position":[[146,6]]}}}],["along",{"_index":880,"t":{"148":{"position":[[51,5]]},"184":{"position":[[1824,5]]},"406":{"position":[[590,5]]}}}],["alongsid",{"_index":224,"t":{"18":{"position":[[1432,9]]},"58":{"position":[[331,9]]},"190":{"position":[[176,9]]},"468":{"position":[[874,9]]}}}],["alreadi",{"_index":9,"t":{"2":{"position":[[118,7]]},"494":{"position":[[1253,7]]},"525":{"position":[[835,7]]},"560":{"position":[[219,7]]}}}],["altern",{"_index":1580,"t":{"310":{"position":[[161,11]]},"344":{"position":[[170,11]]},"498":{"position":[[1724,12]]},"504":{"position":[[1865,12]]}}}],["although",{"_index":1605,"t":{"318":{"position":[[1088,8]]},"452":{"position":[[798,8]]}}}],["altruist",{"_index":1898,"t":{"464":{"position":[[891,15]]}}}],["alway",{"_index":654,"t":{"99":{"position":[[338,6]]},"137":{"position":[[741,6]]},"139":{"position":[[752,6]]},"438":{"position":[[662,6]]},"523":{"position":[[1284,6]]}}}],["amazon",{"_index":1229,"t":{"214":{"position":[[931,6]]}}}],["ambient",{"_index":1508,"t":{"284":{"position":[[1037,7]]}}}],["amend",{"_index":2508,"t":{"570":{"position":[[1347,7]]}}}],["america",{"_index":2028,"t":{"496":{"position":[[548,7],[582,7]]},"498":{"position":[[2684,7],[2702,7]]}}}],["amic",{"_index":2553,"t":{"584":{"position":[[755,8]]}}}],["amongst",{"_index":2303,"t":{"525":{"position":[[1687,7]]}}}],["amount",{"_index":1023,"t":{"172":{"position":[[409,6],[500,6]]},"432":{"position":[[403,6]]},"468":{"position":[[796,6],[1011,7]]},"474":{"position":[[246,6]]},"478":{"position":[[927,6]]},"492":{"position":[[117,6]]},"494":{"position":[[557,7]]},"504":{"position":[[655,6],[1542,6],[2920,6]]},"556":{"position":[[651,6]]},"558":{"position":[[899,6]]},"560":{"position":[[331,6],[710,6]]}}}],["analysi",{"_index":1978,"t":{"490":{"position":[[59,8]]},"494":{"position":[[1219,8]]},"506":{"position":[[1101,8]]},"525":{"position":[[193,9]]}}}],["analyz",{"_index":1970,"t":{"488":{"position":[[13,7],[89,7],[245,7]]},"523":{"position":[[53,9]]}}}],["and/or",{"_index":977,"t":{"158":{"position":[[1546,6]]}}}],["android",{"_index":100,"t":{"8":{"position":[[239,9]]}}}],["announc",{"_index":923,"t":{"154":{"position":[[677,8]]},"232":{"position":[[157,9]]},"246":{"position":[[75,8]]}}}],["anonym",{"_index":1382,"t":{"254":{"position":[[187,10],[524,9],[582,9]]},"256":{"position":[[19,9]]},"258":{"position":[[597,9]]},"274":{"position":[[512,9]]},"300":{"position":[[568,10]]},"304":{"position":[[129,9],[251,10]]},"378":{"position":[[145,10]]},"410":{"position":[[205,10]]},"412":{"position":[[0,9],[90,10],[227,9]]},"418":{"position":[[102,9]]}}}],["anoth",{"_index":462,"t":{"56":{"position":[[14,7]]},"91":{"position":[[1556,7]]},"406":{"position":[[72,7]]},"440":{"position":[[509,7]]},"498":{"position":[[1516,7]]},"523":{"position":[[171,7]]},"556":{"position":[[796,7]]}}}],["anyon",{"_index":36,"t":{"4":{"position":[[65,6]]},"280":{"position":[[336,6]]},"494":{"position":[[803,6],[864,6]]}}}],["api",{"_index":102,"t":{"10":{"position":[[31,3],[40,3],[133,3]]},"73":{"position":[[61,4],[124,3],[197,4]]},"81":{"position":[[188,4]]},"115":{"position":[[1869,3]]},"166":{"position":[[258,3],[326,4],[396,4],[505,3]]},"192":{"position":[[573,3],[1726,4]]},"200":{"position":[[864,3]]},"220":{"position":[[60,4]]},"222":{"position":[[115,4]]},"240":{"position":[[22,3],[89,4],[158,3],[259,3],[375,3],[502,3],[621,3],[704,3],[1025,3],[1190,3]]},"274":{"position":[[32,3]]},"550":{"position":[[98,3],[204,5]]}}}],["app",{"_index":107,"t":{"10":{"position":[[160,3],[282,3]]},"16":{"position":[[356,3]]},"18":{"position":[[723,3],[761,3]]},"97":{"position":[[130,3]]},"99":{"position":[[98,3],[207,3],[267,3]]},"101":{"position":[[78,3]]},"182":{"position":[[66,4],[527,4],[729,5]]},"184":{"position":[[349,5],[1693,3]]},"186":{"position":[[261,5]]},"188":{"position":[[252,5]]},"190":{"position":[[299,5]]},"258":{"position":[[252,3]]},"502":{"position":[[1692,4]]},"523":{"position":[[187,3],[369,4],[406,3],[504,3]]}}}],["app%2f2%2fchatroom",{"_index":1446,"t":{"274":{"position":[[786,18]]}}}],["app.css",{"_index":1070,"t":{"184":{"position":[[328,11],[1901,7]]}}}],["app.jsx",{"_index":1059,"t":{"182":{"position":[[655,7]]},"184":{"position":[[88,7]]}}}],["app/0/a/proto",{"_index":1400,"t":{"258":{"position":[[327,14]]}}}],["app/2/chatroom",{"_index":1442,"t":{"274":{"position":[[562,14]]}}}],["appear",{"_index":451,"t":{"52":{"position":[[445,8]]}}}],["appli",{"_index":414,"t":{"50":{"position":[[468,5]]},"85":{"position":[[280,7]]},"318":{"position":[[393,7]]},"428":{"position":[[227,7]]},"434":{"position":[[309,6]]},"498":{"position":[[147,5]]},"523":{"position":[[1877,8],[3432,8]]},"558":{"position":[[1717,7]]},"568":{"position":[[656,5]]},"576":{"position":[[587,5]]}}}],["applic",{"_index":14,"t":{"2":{"position":[[177,13],[277,11]]},"6":{"position":[[432,12],[513,13],[695,12]]},"8":{"position":[[47,13],[178,12],[277,12]]},"12":{"position":[[346,13]]},"16":{"position":[[51,11],[276,12]]},"18":{"position":[[87,12],[677,11],[997,11],[1086,11],[1345,11]]},"28":{"position":[[32,11],[706,12]]},"34":{"position":[[364,11]]},"36":{"position":[[105,12]]},"38":{"position":[[129,12]]},"40":{"position":[[1176,12]]},"70":{"position":[[103,12]]},"79":{"position":[[176,11],[474,13]]},"83":{"position":[[126,13]]},"93":{"position":[[243,11]]},"95":{"position":[[108,12],[403,12]]},"115":{"position":[[966,12],[1189,12],[1257,13],[1698,12],[1885,12]]},"137":{"position":[[564,11]]},"139":{"position":[[679,11]]},"178":{"position":[[241,12]]},"180":{"position":[[88,12]]},"182":{"position":[[144,11]]},"184":{"position":[[1839,11]]},"186":{"position":[[24,12]]},"188":{"position":[[27,12]]},"190":{"position":[[131,11],[1001,11]]},"250":{"position":[[51,13],[113,11],[177,11]]},"256":{"position":[[99,11],[319,12]]},"258":{"position":[[8,11],[730,11]]},"296":{"position":[[5,12]]},"304":{"position":[[74,12],[175,12]]},"316":{"position":[[311,11]]},"318":{"position":[[28,11]]},"336":{"position":[[96,12]]},"348":{"position":[[113,12]]},"362":{"position":[[49,11],[144,12]]},"386":{"position":[[134,13]]},"392":{"position":[[184,11]]},"394":{"position":[[123,11]]},"422":{"position":[[0,12]]},"432":{"position":[[226,10]]},"438":{"position":[[694,10]]},"498":{"position":[[2542,13]]},"502":{"position":[[895,12]]},"542":{"position":[[209,13]]},"548":{"position":[[435,12]]},"552":{"position":[[17,11]]},"562":{"position":[[1138,12]]},"568":{"position":[[697,10],[959,10]]},"576":{"position":[[628,10]]},"584":{"position":[[2017,10]]}}}],["application'",{"_index":296,"t":{"30":{"position":[[12,13]]},"115":{"position":[[218,13],[368,13]]}}}],["application/json",{"_index":1237,"t":{"220":{"position":[[228,17]]},"274":{"position":[[432,17],[863,17]]}}}],["appoint",{"_index":2366,"t":{"546":{"position":[[293,7]]}}}],["appreci",{"_index":656,"t":{"101":{"position":[[15,10]]},"523":{"position":[[2353,11]]}}}],["approach",{"_index":209,"t":{"18":{"position":[[1029,8]]},"258":{"position":[[347,8]]},"280":{"position":[[166,8]]},"304":{"position":[[21,9]]},"428":{"position":[[98,8]]},"436":{"position":[[13,9]]},"448":{"position":[[277,8]]},"452":{"position":[[821,10]]},"456":{"position":[[56,10]]},"494":{"position":[[514,9],[672,10]]},"498":{"position":[[789,9]]},"500":{"position":[[314,8]]},"504":{"position":[[1882,8],[2249,8]]},"508":{"position":[[181,8],[243,8]]},"523":{"position":[[293,9]]}}}],["appropri",{"_index":1160,"t":{"196":{"position":[[52,11]]},"468":{"position":[[784,11]]},"568":{"position":[[806,11]]}}}],["approv",{"_index":676,"t":{"101":{"position":[[516,9]]}}}],["apt",{"_index":712,"t":{"105":{"position":[[197,3]]}}}],["arbitr",{"_index":2541,"t":{"582":{"position":[[102,12]]},"584":{"position":[[260,11],[427,11],[549,11],[1215,11],[1263,11],[1339,11],[1447,8],[1499,11],[1656,11],[1781,11],[1860,12],[1910,10],[1986,12],[2264,11]]}}}],["arch",{"_index":709,"t":{"105":{"position":[[164,4]]}}}],["architectur",{"_index":1568,"t":{"306":{"position":[[33,12]]},"494":{"position":[[733,14],[784,12]]},"556":{"position":[[128,13]]}}}],["archiv",{"_index":2196,"t":{"511":{"position":[[48,9],[229,7]]},"523":{"position":[[754,7],[1760,7]]},"525":{"position":[[473,8]]}}}],["area",{"_index":2365,"t":{"546":{"position":[[240,4]]}}}],["arg",{"_index":1166,"t":{"200":{"position":[[66,8],[189,6]]}}}],["arguabl",{"_index":1932,"t":{"474":{"position":[[1120,8]]}}}],["argument",{"_index":886,"t":{"150":{"position":[[235,8]]},"154":{"position":[[622,8]]},"156":{"position":[[205,8]]},"158":{"position":[[1323,8],[1484,8],[1626,8],[1704,8]]},"170":{"position":[[238,8]]},"172":{"position":[[259,8]]},"200":{"position":[[211,9]]}}}],["aris",{"_index":2528,"t":{"576":{"position":[[251,7]]},"578":{"position":[[130,7]]},"584":{"position":[[690,7]]}}}],["aros",{"_index":2570,"t":{"584":{"position":[[2110,5]]}}}],["around",{"_index":2161,"t":{"504":{"position":[[2186,6]]},"552":{"position":[[117,6]]},"558":{"position":[[871,6]]}}}],["array",{"_index":175,"t":{"16":{"position":[[432,7]]},"68":{"position":[[21,5],[294,5]]}}}],["arriv",{"_index":1540,"t":{"294":{"position":[[898,7]]},"562":{"position":[[1216,8]]}}}],["asia",{"_index":2046,"t":{"496":{"position":[[634,4]]},"498":{"position":[[2727,4]]}}}],["ask",{"_index":1796,"t":{"440":{"position":[[305,3],[381,3],[435,3],[623,5]]}}}],["assign",{"_index":1723,"t":{"414":{"position":[[261,6]]},"452":{"position":[[650,7]]},"458":{"position":[[118,8]]},"478":{"position":[[494,9]]}}}],["assist",{"_index":231,"t":{"20":{"position":[[39,11]]}}}],["associ",{"_index":1755,"t":{"430":{"position":[[152,12],[255,11],[434,12]]},"566":{"position":[[92,12],[196,11],[385,12]]}}}],["assum",{"_index":1913,"t":{"470":{"position":[[12,6],[113,7]]},"504":{"position":[[304,6],[1938,6]]},"506":{"position":[[509,8],[763,8]]},"534":{"position":[[422,8]]},"538":{"position":[[446,9],[618,9]]},"558":{"position":[[1840,8]]}}}],["assumpt",{"_index":2081,"t":{"498":{"position":[[1790,12]]},"504":{"position":[[1168,10]]},"570":{"position":[[118,11]]}}}],["async",{"_index":364,"t":{"40":{"position":[[457,5]]},"139":{"position":[[134,5]]},"184":{"position":[[1111,5]]},"186":{"position":[[418,5]]},"523":{"position":[[3305,5]]}}}],["asynchron",{"_index":1666,"t":{"374":{"position":[[34,12]]},"523":{"position":[[3098,12]]}}}],["atom",{"_index":1894,"t":{"464":{"position":[[340,10],[521,9]]},"474":{"position":[[601,10],[638,9],[660,6],[1064,9]]}}}],["attach",{"_index":587,"t":{"93":{"position":[[75,9]]},"334":{"position":[[28,8]]},"528":{"position":[[705,8]]}}}],["attack",{"_index":1690,"t":{"406":{"position":[[212,6],[455,7],[567,8]]},"478":{"position":[[560,8],[1045,6],[1171,8]]},"504":{"position":[[435,9]]},"536":{"position":[[709,7]]}}}],["attempt",{"_index":437,"t":{"52":{"position":[[0,7]]},"206":{"position":[[739,7]]},"208":{"position":[[873,7]]}}}],["attorney",{"_index":2537,"t":{"578":{"position":[[113,10]]}}}],["attribut",{"_index":1591,"t":{"316":{"position":[[107,11],[133,9],[180,9],[243,9],[354,9],[444,9]]},"572":{"position":[[71,11],[299,11]]}}}],["aur",{"_index":727,"t":{"105":{"position":[[469,3],[485,4]]}}}],["authent",{"_index":586,"t":{"93":{"position":[[37,12]]},"396":{"position":[[228,13]]},"400":{"position":[[178,13]]},"416":{"position":[[80,12]]}}}],["author",{"_index":422,"t":{"50":{"position":[[708,9]]}}}],["auto",{"_index":1019,"t":{"172":{"position":[[295,4]]},"184":{"position":[[1975,5],[2120,5]]}}}],["automat",{"_index":1020,"t":{"172":{"position":[[327,13]]},"420":{"position":[[356,9]]},"458":{"position":[[104,13]]},"464":{"position":[[496,14]]}}}],["avail",{"_index":27,"t":{"2":{"position":[[353,9]]},"93":{"position":[[378,9]]},"103":{"position":[[305,9]]},"111":{"position":[[123,9]]},"125":{"position":[[588,9]]},"148":{"position":[[13,9]]},"190":{"position":[[845,9]]},"192":{"position":[[788,9],[1124,9],[1329,9]]},"198":{"position":[[28,9]]},"212":{"position":[[263,9]]},"216":{"position":[[136,9]]},"284":{"position":[[566,9]]},"312":{"position":[[343,13]]},"318":{"position":[[760,12]]},"382":{"position":[[63,9]]},"416":{"position":[[162,9]]},"456":{"position":[[196,9]]},"494":{"position":[[1527,9]]},"496":{"position":[[98,9],[145,9]]},"502":{"position":[[717,10]]},"568":{"position":[[478,12],[1062,9]]},"572":{"position":[[38,9]]}}}],["averag",{"_index":1988,"t":{"494":{"position":[[80,7]]},"496":{"position":[[54,7],[514,7],[530,7]]},"498":{"position":[[2247,7],[2315,7],[2638,7]]},"523":{"position":[[2373,7]]},"525":{"position":[[1753,8]]},"532":{"position":[[161,7]]},"534":{"position":[[85,7],[394,7]]},"554":{"position":[[339,7]]},"558":{"position":[[2141,7]]},"560":{"position":[[445,7]]},"562":{"position":[[296,7],[1080,7],[2017,8]]}}}],["avoid",{"_index":514,"t":{"73":{"position":[[45,8]]},"412":{"position":[[101,8]]},"470":{"position":[[192,8]]}}}],["await",{"_index":257,"t":{"24":{"position":[[185,5],[236,5],[309,5]]},"26":{"position":[[189,5],[434,5]]},"32":{"position":[[426,5]]},"34":{"position":[[517,5],[613,5],[765,5]]},"40":{"position":[[207,5],[303,5],[502,5],[750,5],[868,5]]},"60":{"position":[[246,5]]},"62":{"position":[[242,5],[759,5]]},"64":{"position":[[599,5],[911,5]]},"66":{"position":[[646,5]]},"68":{"position":[[200,5],[251,5]]},"89":{"position":[[710,5],[1094,5],[1183,5]]},"91":{"position":[[861,5],[1254,5],[1343,5]]},"93":{"position":[[1772,5],[1832,5],[1890,5],[1946,5],[3304,5]]},"129":{"position":[[185,5],[236,5]]},"131":{"position":[[186,5]]},"137":{"position":[[629,5]]},"139":{"position":[[469,5],[565,5],[632,5]]},"142":{"position":[[428,5]]},"144":{"position":[[537,5],[691,5],[830,5]]},"146":{"position":[[403,5]]},"186":{"position":[[770,5]]},"478":{"position":[[1101,8]]}}}],["award",{"_index":2550,"t":{"584":{"position":[[561,5]]}}}],["away",{"_index":1841,"t":{"452":{"position":[[253,4]]},"478":{"position":[[626,4]]},"558":{"position":[[536,5]]},"562":{"position":[[1957,4]]}}}],["awk",{"_index":1183,"t":{"200":{"position":[[704,3]]}}}],["azur",{"_index":1228,"t":{"214":{"position":[[924,6]]}}}],["b",{"_index":1029,"t":{"172":{"position":[[598,1]]},"294":{"position":[[697,1]]},"482":{"position":[[193,2]]}}}],["b452ed8",{"_index":2265,"t":{"523":{"position":[[1807,8]]}}}],["b6dd6899",{"_index":2249,"t":{"523":{"position":[[801,9]]}}}],["baarerstrass",{"_index":1764,"t":{"430":{"position":[[291,13]]},"566":{"position":[[232,13]]}}}],["back",{"_index":1903,"t":{"466":{"position":[[459,4]]},"488":{"position":[[157,4]]}}}],["backbon",{"_index":1885,"t":{"462":{"position":[[138,8]]}}}],["background",{"_index":1116,"t":{"184":{"position":[[2159,10],[2282,10],[2435,10]]}}}],["backup",{"_index":1503,"t":{"284":{"position":[[515,7],[608,7]]}}}],["backward",{"_index":762,"t":{"115":{"position":[[336,8]]},"142":{"position":[[79,8]]},"158":{"position":[[1172,9]]}}}],["badli",{"_index":1846,"t":{"452":{"position":[[426,6]]}}}],["balanc",{"_index":532,"t":{"77":{"position":[[70,7]]},"304":{"position":[[235,7]]}}}],["ban",{"_index":1955,"t":{"478":{"position":[[971,3],[1126,3]]}}}],["band",{"_index":571,"t":{"89":{"position":[[1321,4]]},"91":{"position":[[1475,4]]},"93":{"position":[[3124,4]]},"360":{"position":[[7,4]]}}}],["bandwidth",{"_index":965,"t":{"158":{"position":[[1136,9]]},"292":{"position":[[103,9],[278,10],[355,9]]},"310":{"position":[[253,10],[300,9]]},"314":{"position":[[65,9]]},"382":{"position":[[94,10]]},"420":{"position":[[959,9]]},"456":{"position":[[186,9]]},"492":{"position":[[41,9]]},"494":{"position":[[592,10],[935,9],[1054,9],[1414,9],[1537,9],[1597,9]]},"496":{"position":[[62,9],[301,9],[402,9],[814,9]]},"498":{"position":[[77,9],[282,9],[359,10],[550,10],[888,9],[957,9],[1012,9],[1162,9],[1258,9],[1331,9],[1400,9],[1620,9],[1850,10],[1963,10],[2010,9],[2392,9],[2503,10],[2646,9]]},"500":{"position":[[62,9]]},"502":{"position":[[94,10],[141,10],[465,9],[642,9],[982,9],[1041,9],[1126,9],[1652,9],[1765,10],[1817,10]]},"504":{"position":[[852,9],[1463,9],[2089,10],[2166,9]]},"506":{"position":[[895,10],[1144,9]]},"508":{"position":[[31,9],[310,9]]},"554":{"position":[[115,9]]},"558":{"position":[[294,9],[1541,10],[1566,9],[1598,10]]},"562":{"position":[[605,11],[2079,9],[2156,9]]}}}],["bandwidth/hardwar",{"_index":1994,"t":{"494":{"position":[[420,18]]}}}],["barrier",{"_index":2274,"t":{"523":{"position":[[3556,8]]}}}],["base",{"_index":43,"t":{"4":{"position":[[171,5],[439,5]]},"83":{"position":[[44,5]]},"105":{"position":[[501,4]]},"212":{"position":[[224,5]]},"254":{"position":[[415,5]]},"258":{"position":[[541,5]]},"284":{"position":[[888,5]]},"316":{"position":[[155,5]]},"334":{"position":[[131,5]]},"378":{"position":[[44,5]]},"414":{"position":[[296,5]]},"420":{"position":[[382,5],[713,5]]},"440":{"position":[[707,5]]},"452":{"position":[[538,5]]},"456":{"position":[[50,5]]},"464":{"position":[[169,5],[698,5]]},"468":{"position":[[409,5],[719,5]]},"523":{"position":[[511,5]]},"562":{"position":[[952,5]]},"570":{"position":[[65,5],[590,5]]}}}],["base32",{"_index":1196,"t":{"206":{"position":[[297,6]]}}}],["base64",{"_index":1437,"t":{"274":{"position":[[335,7],[530,10]]}}}],["bash",{"_index":701,"t":{"105":{"position":[[89,5]]}}}],["basi",{"_index":1769,"t":{"432":{"position":[[205,5]]},"478":{"position":[[899,6]]},"568":{"position":[[44,5],[1177,5]]}}}],["batteri",{"_index":1672,"t":{"382":{"position":[[128,7]]}}}],["be",{"_index":350,"t":{"38":{"position":[[106,5]]},"182":{"position":[[966,5]]},"250":{"position":[[492,5]]},"280":{"position":[[808,5]]},"328":{"position":[[80,5]]},"414":{"position":[[375,5]]},"418":{"position":[[453,5]]},"502":{"position":[[908,5],[1259,5]]},"504":{"position":[[2893,5]]},"523":{"position":[[47,5],[3613,5]]},"558":{"position":[[115,5]]},"584":{"position":[[1364,5]]}}}],["bear",{"_index":2504,"t":{"570":{"position":[[910,4]]}}}],["becom",{"_index":1505,"t":{"284":{"position":[[639,6]]},"502":{"position":[[1550,8]]}}}],["befor",{"_index":541,"t":{"81":{"position":[[0,6]]},"93":{"position":[[495,6],[1385,6],[1680,6]]},"192":{"position":[[1057,6]]},"218":{"position":[[66,6]]},"230":{"position":[[66,6]]},"440":{"position":[[791,6]]},"456":{"position":[[292,6]]},"474":{"position":[[364,6]]},"478":{"position":[[270,6]]},"564":{"position":[[316,6]]}}}],["begin",{"_index":361,"t":{"40":{"position":[[117,6]]},"144":{"position":[[1007,9]]},"224":{"position":[[28,6]]},"226":{"position":[[204,6],[853,6]]},"502":{"position":[[19,5]]},"562":{"position":[[891,10]]}}}],["behav",{"_index":1844,"t":{"452":{"position":[[343,7],[418,7]]},"519":{"position":[[553,7]]}}}],["behaviour",{"_index":1724,"t":{"414":{"position":[[311,9]]},"448":{"position":[[204,10]]},"464":{"position":[[374,10],[446,9]]},"546":{"position":[[421,10]]}}}],["behind",{"_index":1175,"t":{"200":{"position":[[594,6]]}}}],["believ",{"_index":1809,"t":{"440":{"position":[[978,7]]},"574":{"position":[[338,8]]},"584":{"position":[[294,7]]}}}],["below",{"_index":786,"t":{"117":{"position":[[290,5]]},"468":{"position":[[623,7]]},"478":{"position":[[340,5]]},"496":{"position":[[222,5]]},"523":{"position":[[3540,5],[3776,5]]},"542":{"position":[[235,5]]}}}],["benchmark",{"_index":1980,"t":{"490":{"position":[[162,11],[225,10]]},"528":{"position":[[216,10]]}}}],["beneficiary'",{"_index":1731,"t":{"418":{"position":[[300,13]]}}}],["benefit",{"_index":537,"t":{"79":{"position":[[192,7]]},"312":{"position":[[147,8]]},"452":{"position":[[490,9]]},"464":{"position":[[387,7]]},"523":{"position":[[3052,7]]},"544":{"position":[[431,8]]}}}],["besid",{"_index":1651,"t":{"342":{"position":[[145,7]]},"534":{"position":[[261,7]]}}}],["best",{"_index":2452,"t":{"562":{"position":[[1283,4],[1809,4]]}}}],["best/worst",{"_index":2435,"t":{"562":{"position":[[238,10]]}}}],["better",{"_index":522,"t":{"73":{"position":[[234,6]]},"502":{"position":[[111,6]]},"506":{"position":[[943,6]]},"508":{"position":[[236,6]]},"519":{"position":[[561,6]]},"521":{"position":[[737,7]]},"523":{"position":[[1159,6],[1479,7],[3020,6],[3176,6]]}}}],["between",{"_index":163,"t":{"16":{"position":[[244,7],[332,7]]},"77":{"position":[[78,7]]},"89":{"position":[[1278,7]]},"294":{"position":[[47,7]]},"304":{"position":[[243,7]]},"318":{"position":[[1116,7]]},"320":{"position":[[79,7]]},"322":{"position":[[85,7],[134,7]]},"362":{"position":[[117,7]]},"390":{"position":[[64,7]]},"498":{"position":[[2587,7]]},"504":{"position":[[2834,7]]},"517":{"position":[[81,7]]},"528":{"position":[[173,7]]},"558":{"position":[[1384,7],[2044,7]]},"582":{"position":[[62,7]]},"584":{"position":[[1714,7]]},"586":{"position":[[54,7]]}}}],["beyond",{"_index":1896,"t":{"464":{"position":[[845,6]]},"562":{"position":[[1767,7]]}}}],["big",{"_index":2408,"t":{"558":{"position":[[1635,3]]},"562":{"position":[[779,3],[1595,3],[1679,3]]}}}],["bigger",{"_index":2171,"t":{"506":{"position":[[30,6]]},"523":{"position":[[1681,6]]},"558":{"position":[[1479,6]]}}}],["biggest",{"_index":2458,"t":{"562":{"position":[[2309,7]]}}}],["binari",{"_index":690,"t":{"103":{"position":[[223,6]]},"109":{"position":[[16,7]]},"111":{"position":[[32,6]]},"113":{"position":[[89,6]]},"119":{"position":[[168,6]]},"121":{"position":[[215,6]]},"192":{"position":[[232,8]]},"214":{"position":[[39,7],[463,7],[509,6],[539,6],[579,6],[653,8],[697,7],[841,8]]},"216":{"position":[[31,7]]}}}],["binaries.yml",{"_index":2251,"t":{"523":{"position":[[879,12],[1954,12]]}}}],["bind",{"_index":86,"t":{"6":{"position":[[538,8],[617,8],[653,8]]},"8":{"position":[[159,8],[257,8]]},"186":{"position":[[272,4]]},"568":{"position":[[1214,7]]}}}],["bit",{"_index":1026,"t":{"172":{"position":[[572,4]]},"504":{"position":[[2945,3]]},"534":{"position":[[222,4]]}}}],["bitcoin",{"_index":1865,"t":{"458":{"position":[[0,7]]},"460":{"position":[[5,7]]}}}],["bittorr",{"_index":1857,"t":{"456":{"position":[[106,10]]}}}],["block",{"_index":1067,"t":{"184":{"position":[[125,6],[1938,6]]},"280":{"position":[[732,7]]},"296":{"position":[[270,7]]},"458":{"position":[[160,7],[220,6],[234,5],[510,6]]},"523":{"position":[[1246,8],[3361,5]]},"538":{"position":[[490,5],[510,6]]}}}],["blockchain",{"_index":1648,"t":{"336":{"position":[[113,10]]},"346":{"position":[[120,10]]},"454":{"position":[[74,12]]},"460":{"position":[[158,10]]},"464":{"position":[[398,11],[783,12]]},"470":{"position":[[76,10]]},"528":{"position":[[845,11]]},"538":{"position":[[54,10]]}}}],["blog",{"_index":1578,"t":{"308":{"position":[[350,4]]},"404":{"position":[[320,4]]}}}],["board",{"_index":120,"t":{"10":{"position":[[314,5]]}}}],["bob",{"_index":614,"t":{"93":{"position":[[2206,3],[2473,3]]},"278":{"position":[[142,3],[185,3]]},"298":{"position":[[35,3]]},"302":{"position":[[107,3],[175,4],[180,3],[368,3]]}}}],["bob'",{"_index":1465,"t":{"278":{"position":[[52,5]]},"302":{"position":[[52,5]]}}}],["bobprivatekey",{"_index":615,"t":{"93":{"position":[[2483,13],[2656,14]]}}}],["bodi",{"_index":1084,"t":{"184":{"position":[[1217,6],[2087,4]]}}}],["boilerpl",{"_index":1043,"t":{"180":{"position":[[134,11]]}}}],["boot",{"_index":1301,"t":{"236":{"position":[[44,5]]}}}],["bootstrap",{"_index":110,"t":{"10":{"position":[[179,9]]},"18":{"position":[[776,9],[845,9],[893,9]]},"24":{"position":[[403,12],[434,9],[471,9],[537,9]]},"58":{"position":[[38,9],[170,9]]},"60":{"position":[[42,13],[183,9],[216,9]]},"62":{"position":[[44,9],[195,9],[502,9],[708,9]]},"64":{"position":[[3,9],[551,9],[863,9]]},"66":{"position":[[13,9],[140,9],[281,9],[581,9]]},"97":{"position":[[38,9]]},"115":{"position":[[1381,9],[1482,9],[1573,9]]},"172":{"position":[[170,9],[206,9]]},"208":{"position":[[150,9],[195,9],[258,9],[332,9],[359,9],[389,9],[416,9],[494,10],[598,9],[884,9]]},"210":{"position":[[214,9],[645,13]]},"218":{"position":[[37,9],[201,9],[323,9]]},"230":{"position":[[37,9]]},"276":{"position":[[295,9]]},"280":{"position":[[308,13],[487,9]]},"284":{"position":[[231,14]]},"296":{"position":[[48,9]]},"302":{"position":[[372,10]]},"332":{"position":[[0,13]]},"368":{"position":[[148,9]]}}}],["bootstrapp",{"_index":475,"t":{"62":{"position":[[87,14],[266,15],[783,15]]},"66":{"position":[[680,15]]}}}],["border",{"_index":1107,"t":{"184":{"position":[[2055,7],[2363,6],[2462,6]]}}}],["both",{"_index":226,"t":{"18":{"position":[[1584,4]]},"46":{"position":[[176,4]]},"58":{"position":[[483,4]]},"93":{"position":[[920,4]]},"190":{"position":[[549,4]]},"486":{"position":[[118,4]]},"504":{"position":[[1742,4]]},"519":{"position":[[486,4],[861,4],[1420,4]]},"521":{"position":[[197,4]]},"523":{"position":[[2985,4]]},"586":{"position":[[199,4]]}}}],["bottleneck",{"_index":2233,"t":{"519":{"position":[[1319,10]]},"562":{"position":[[2317,11]]}}}],["bottom",{"_index":1120,"t":{"184":{"position":[[2221,7]]}}}],["bound",{"_index":2464,"t":{"564":{"position":[[403,5]]},"584":{"position":[[404,5]]}}}],["boundari",{"_index":2128,"t":{"502":{"position":[[1629,8]]}}}],["bounti",{"_index":677,"t":{"101":{"position":[[545,8],[654,6]]}}}],["box",{"_index":1637,"t":{"326":{"position":[[211,3]]},"422":{"position":[[165,3]]},"562":{"position":[[264,3]]}}}],["branch",{"_index":745,"t":{"107":{"position":[[60,6]]},"282":{"position":[[252,6],[418,7]]},"560":{"position":[[136,7]]}}}],["break",{"_index":1371,"t":{"250":{"position":[[292,8]]},"404":{"position":[[260,5]]}}}],["brew",{"_index":731,"t":{"105":{"position":[[595,4]]}}}],["briefli",{"_index":1772,"t":{"432":{"position":[[599,7]]}}}],["bring",{"_index":1847,"t":{"452":{"position":[[474,6]]},"464":{"position":[[49,6]]},"521":{"position":[[635,6]]},"584":{"position":[[2061,5]]}}}],["broadcast",{"_index":291,"t":{"28":{"position":[[734,12]]},"91":{"position":[[1452,12]]},"93":{"position":[[3101,12]]},"158":{"position":[[857,12]]}}}],["broadest",{"_index":2543,"t":{"584":{"position":[[34,8]]}}}],["browser",{"_index":72,"t":{"6":{"position":[[206,7]]},"12":{"position":[[258,7]]},"42":{"position":[[119,7]]},"48":{"position":[[129,9]]},"50":{"position":[[166,9],[204,8],[802,8]]},"70":{"position":[[54,7]]},"73":{"position":[[22,7],[116,7],[189,7]]},"77":{"position":[[50,8],[86,7]]},"79":{"position":[[47,8],[150,8],[435,7]]},"115":{"position":[[1434,7]]},"166":{"position":[[514,8]]},"220":{"position":[[801,7]]},"232":{"position":[[390,7]]},"238":{"position":[[39,7],[116,7]]},"276":{"position":[[688,9]]},"288":{"position":[[338,9]]},"320":{"position":[[552,7],[692,8]]},"354":{"position":[[179,8]]}}}],["browser'",{"_index":386,"t":{"48":{"position":[[27,9]]},"50":{"position":[[974,9]]},"79":{"position":[[287,9]]}}}],["bucket",{"_index":1025,"t":{"172":{"position":[[474,6],[557,7]]},"254":{"position":[[400,7]]},"258":{"position":[[175,7]]}}}],["buffer",{"_index":150,"t":{"16":{"position":[[78,7]]},"115":{"position":[[203,7],[276,7]]},"250":{"position":[[476,7],[870,7]]},"256":{"position":[[275,6]]}}}],["bug",{"_index":238,"t":{"20":{"position":[[178,4]]},"550":{"position":[[109,4],[214,4]]},"552":{"position":[[137,4]]}}}],["build",{"_index":81,"t":{"6":{"position":[[341,5]]},"18":{"position":[[81,5],[556,5]]},"103":{"position":[[38,5],[283,5]]},"105":{"position":[[3,5],[213,5]]},"109":{"position":[[0,5]]},"111":{"position":[[46,8]]},"115":{"position":[[1242,8],[1285,5]]},"184":{"position":[[6,5]]},"190":{"position":[[1107,8]]},"192":{"position":[[245,8]]},"194":{"position":[[38,5]]},"198":{"position":[[198,5],[329,5]]},"212":{"position":[[332,6]]},"214":{"position":[[687,5],[731,5],[749,5],[791,5]]},"318":{"position":[[16,8]]},"348":{"position":[[79,5]]},"400":{"position":[[69,5]]},"422":{"position":[[29,5]]},"546":{"position":[[82,8]]},"548":{"position":[[69,5]]},"550":{"position":[[23,8]]}}}],["build/wakunode2",{"_index":758,"t":{"111":{"position":[[99,17],[154,17]]},"119":{"position":[[181,17]]},"121":{"position":[[280,17]]},"123":{"position":[[278,17],[485,17]]},"125":{"position":[[544,17]]},"204":{"position":[[174,17],[399,17]]},"206":{"position":[[522,17],[931,17]]},"208":{"position":[[277,17],[543,17]]},"210":{"position":[[270,17],[587,17],[678,17]]},"216":{"position":[[112,17],[167,17]]},"232":{"position":[[203,17],[339,17]]},"234":{"position":[[987,17],[1276,17],[1567,17],[1729,17]]},"236":{"position":[[173,17],[1030,17]]},"238":{"position":[[561,17],[915,17],[1124,17]]},"240":{"position":[[731,17],[1050,17],[1232,17]]},"242":{"position":[[88,17],[286,17],[517,17]]},"244":{"position":[[99,17],[289,17],[444,17]]},"246":{"position":[[217,17]]}}}],["built",{"_index":469,"t":{"60":{"position":[[33,5]]},"113":{"position":[[73,5]]},"200":{"position":[[175,5],[917,5]]},"280":{"position":[[0,5]]},"322":{"position":[[14,5]]},"420":{"position":[[906,5]]}}}],["bunch",{"_index":2271,"t":{"523":{"position":[[3296,5]]}}}],["bundl",{"_index":516,"t":{"73":{"position":[[78,9]]}}}],["burst",{"_index":2146,"t":{"504":{"position":[[1078,5]]},"506":{"position":[[77,7]]}}}],["busi",{"_index":1662,"t":{"362":{"position":[[82,8]]},"523":{"position":[[3709,4]]}}}],["button",{"_index":1097,"t":{"184":{"position":[[1588,7],[1612,7],[2426,6]]}}}],["buy",{"_index":2490,"t":{"568":{"position":[[1694,3],[1734,3]]}}}],["byte",{"_index":174,"t":{"16":{"position":[[427,4]]},"115":{"position":[[2560,5]]},"206":{"position":[[334,4]]},"236":{"position":[[354,4],[533,4],[715,4]]},"254":{"position":[[436,5]]},"258":{"position":[[291,4],[470,5]]},"504":{"position":[[1694,5]]},"528":{"position":[[665,6]]}}}],["bytes/sec",{"_index":969,"t":{"158":{"position":[[1212,9]]}}}],["bytestohex",{"_index":632,"t":{"95":{"position":[[462,11]]}}}],["bytestohex(privatekey",{"_index":638,"t":{"95":{"position":[[757,23]]}}}],["bytestohex(symmetrickey",{"_index":636,"t":{"95":{"position":[[709,25]]}}}],["c",{"_index":85,"t":{"6":{"position":[[536,1]]},"105":{"position":[[67,1]]},"236":{"position":[[787,1],[800,1],[814,1]]},"294":{"position":[[837,2]]}}}],["c#/uniti",{"_index":89,"t":{"6":{"position":[[567,9]]}}}],["c.waku.sandbox.status.im/tcp/30303/p2p/16uiu2hamsjvsjphxrdbniguv5bjrrzfbhttwftsyikaqbycjwmpv",{"_index":1300,"t":{"234":{"position":[[1788,92]]},"242":{"position":[[579,92]]},"244":{"position":[[507,92]]}}}],["c/c",{"_index":88,"t":{"6":{"position":[[560,6]]}}}],["c/o",{"_index":1760,"t":{"430":{"position":[[267,3]]},"566":{"position":[[208,3]]}}}],["c078075",{"_index":2252,"t":{"523":{"position":[[913,7],[1988,7]]}}}],["ca",{"_index":423,"t":{"50":{"position":[[718,5]]}}}],["cach",{"_index":1008,"t":{"166":{"position":[[213,5],[270,5]]},"234":{"position":[[18,7]]},"240":{"position":[[448,5],[514,6],[870,5],[894,5],[1209,5],[1321,5]]}}}],["calcul",{"_index":1906,"t":{"468":{"position":[[89,11],[394,11],[698,10]]},"472":{"position":[[73,11]]},"532":{"position":[[194,9]]},"558":{"position":[[966,10],[1932,9]]}}}],["calendar",{"_index":2558,"t":{"584":{"position":[[1073,8]]}}}],["call",{"_index":598,"t":{"93":{"position":[[967,4],[2440,4]]},"121":{"position":[[232,6]]},"222":{"position":[[68,7]]},"250":{"position":[[551,6]]},"504":{"position":[[2391,7]]},"525":{"position":[[564,7]]},"544":{"position":[[59,5]]}}}],["callback",{"_index":327,"t":{"34":{"position":[[56,8],[186,8],[210,8],[653,10]]},"40":{"position":[[343,10],[790,10]]},"89":{"position":[[1134,10],[1236,10]]},"91":{"position":[[1294,10],[1396,10]]},"93":{"position":[[1821,10],[1935,10],[2689,8],[2741,8],[3344,10]]},"137":{"position":[[162,8],[319,9],[333,8],[472,8],[496,8],[683,9]]},"142":{"position":[[481,9]]},"144":{"position":[[228,8],[273,8],[591,9],[884,9]]},"146":{"position":[[456,9]]}}}],["can't",{"_index":2073,"t":{"498":{"position":[[981,5],[1202,5],[1831,5]]},"502":{"position":[[961,5]]},"504":{"position":[[420,5]]}}}],["candid",{"_index":747,"t":{"107":{"position":[[90,9]]}}}],["cap",{"_index":2104,"t":{"500":{"position":[[55,6]]},"502":{"position":[[132,8],[244,7],[269,6],[618,7]]},"504":{"position":[[578,3],[607,3],[647,3],[1447,3],[1756,3],[2082,6]]},"508":{"position":[[24,6]]}}}],["capabl",{"_index":11,"t":{"2":{"position":[[144,12]]},"284":{"position":[[718,13],[771,13],[909,13]]},"320":{"position":[[897,12]]},"511":{"position":[[34,10]]}}}],["capac",{"_index":927,"t":{"154":{"position":[[839,8]]},"160":{"position":[[241,8]]},"166":{"position":[[219,8],[231,8]]},"234":{"position":[[428,8]]},"240":{"position":[[454,8],[475,8],[900,9],[1215,8]]},"406":{"position":[[95,8]]}}}],["capacity:25000",{"_index":1277,"t":{"234":{"position":[[487,15]]}}}],["capacity:@waku",{"_index":1082,"t":{"184":{"position":[[1171,8]]}}}],["hammer",{"_index":2296,"t":{"525":{"position":[[869,6],[1455,6],[1562,6],[1833,6]]}}}],["hand",{"_index":2246,"t":{"523":{"position":[[157,5]]},"534":{"position":[[13,5]]}}}],["handl",{"_index":217,"t":{"18":{"position":[[1310,6]]},"36":{"position":[[70,6]]},"40":{"position":[[1141,6]]},"44":{"position":[[124,6]]},"54":{"position":[[74,6]]},"95":{"position":[[196,8]]}}}],["handleinputchang",{"_index":1076,"t":{"184":{"position":[[522,17]]}}}],["happen",{"_index":569,"t":{"89":{"position":[[1296,6]]},"158":{"position":[[1264,6]]},"504":{"position":[[1322,7]]},"523":{"position":[[3406,7]]},"544":{"position":[[39,6]]}}}],["hard",{"_index":1554,"t":{"298":{"position":[[96,5]]}}}],["hardcod",{"_index":592,"t":{"93":{"position":[[325,9]]}}}],["harm",{"_index":2518,"t":{"574":{"position":[[423,8]]}}}],["harmless",{"_index":2536,"t":{"578":{"position":[[35,8]]}}}],["harry'",{"_index":1473,"t":{"278":{"position":[[456,7],[531,7]]}}}],["hash",{"_index":1385,"t":{"254":{"position":[[460,6]]},"258":{"position":[[186,7],[669,4],[802,4]]},"276":{"position":[[109,4]]},"282":{"position":[[139,4],[291,6]]},"338":{"position":[[57,4]]},"370":{"position":[[95,4]]},"474":{"position":[[83,4]]}}}],["have",{"_index":1862,"t":{"456":{"position":[[299,6]]},"504":{"position":[[824,6],[2868,6]]},"525":{"position":[[49,6]]}}}],["haven't",{"_index":2009,"t":{"494":{"position":[[1442,7]]}}}],["hd",{"_index":2061,"t":{"496":{"position":[[824,2],[839,2]]},"498":{"position":[[2600,2]]}}}],["head",{"_index":683,"t":{"101":{"position":[[670,4]]},"236":{"position":[[794,4]]},"586":{"position":[[268,8]]}}}],["header",{"_index":1236,"t":{"220":{"position":[[212,6]]},"274":{"position":[[410,6],[847,6]]}}}],["heard",{"_index":2548,"t":{"584":{"position":[[495,5]]}}}],["heavi",{"_index":1398,"t":{"258":{"position":[[138,5]]}}}],["height",{"_index":1105,"t":{"184":{"position":[[2040,7]]}}}],["hel1.wakudev.misc",{"_index":2297,"t":{"525":{"position":[[1090,18]]}}}],["hel1.wakudev.misc.statusim.net",{"_index":2257,"t":{"523":{"position":[[960,32],[2035,32]]}}}],["held",{"_index":2520,"t":{"576":{"position":[[15,4]]},"584":{"position":[[1519,4]]},"586":{"position":[[532,4]]}}}],["hello",{"_index":321,"t":{"32":{"position":[[259,7]]},"274":{"position":[[485,6]]}}}],["help",{"_index":248,"t":{"20":{"position":[[335,4]]},"44":{"position":[[59,8],[150,4]]},"93":{"position":[[16,5]]},"111":{"position":[[174,4]]},"125":{"position":[[538,5],[564,4]]},"216":{"position":[[187,4]]},"250":{"position":[[280,5]]},"310":{"position":[[285,5]]},"320":{"position":[[11,4]]},"482":{"position":[[131,5]]},"508":{"position":[[289,5]]},"513":{"position":[[276,4]]},"542":{"position":[[145,4]]},"544":{"position":[[407,4]]},"550":{"position":[[369,4],[788,4]]},"560":{"position":[[268,5]]}}}],["helper",{"_index":728,"t":{"105":{"position":[[473,6],[490,7]]}}}],["henc",{"_index":2077,"t":{"498":{"position":[[1314,5]]},"542":{"position":[[83,6]]}}}],["here",{"_index":392,"t":{"48":{"position":[[94,4]]},"83":{"position":[[179,5]]},"144":{"position":[[376,5]]},"148":{"position":[[0,4]]},"250":{"position":[[0,4]]},"252":{"position":[[85,4]]},"294":{"position":[[0,4]]},"304":{"position":[[288,4]]},"406":{"position":[[247,5],[724,5],[869,5]]},"496":{"position":[[155,4]]},"562":{"position":[[340,5],[1031,5]]}}}],["herein",{"_index":2484,"t":{"568":{"position":[[994,6],[1257,6],[1493,7],[1527,6]]},"570":{"position":[[825,6],[1004,7]]},"584":{"position":[[1422,6]]}}}],["hesit",{"_index":241,"t":{"20":{"position":[[223,8]]}}}],["hex",{"_index":907,"t":{"154":{"position":[[247,3]]},"158":{"position":[[516,3],[594,3]]},"236":{"position":[[271,3],[359,3],[385,3],[553,3]]},"358":{"position":[[35,3]]}}}],["hexadecim",{"_index":631,"t":{"95":{"position":[[372,11],[666,11],[806,11]]}}}],["hextobyt",{"_index":633,"t":{"95":{"position":[[474,10]]}}}],["hextobytes(privatekeyhex",{"_index":643,"t":{"95":{"position":[[910,26]]}}}],["hextobytes(symmetrickeyhex",{"_index":641,"t":{"95":{"position":[[854,28]]}}}],["hide",{"_index":1387,"t":{"254":{"position":[[624,4]]},"400":{"position":[[240,6]]}}}],["high",{"_index":1218,"t":{"210":{"position":[[1071,4]]},"256":{"position":[[345,4]]},"452":{"position":[[458,4]]},"504":{"position":[[3001,4]]},"532":{"position":[[461,4]]},"558":{"position":[[59,4]]},"562":{"position":[[711,4]]},"570":{"position":[[500,4],[1027,4]]}}}],["higher",{"_index":2115,"t":{"502":{"position":[[687,6]]},"519":{"position":[[967,6]]},"521":{"position":[[644,6]]},"558":{"position":[[227,6],[272,6]]}}}],["highli",{"_index":246,"t":{"20":{"position":[[312,6]]},"212":{"position":[[139,6]]},"250":{"position":[[838,6]]}}}],["highlight",{"_index":2362,"t":{"544":{"position":[[456,11]]},"548":{"position":[[233,9]]},"552":{"position":[[252,9]]}}}],["hinder",{"_index":2167,"t":{"504":{"position":[[2978,7]]}}}],["histor",{"_index":197,"t":{"18":{"position":[[357,10]]},"115":{"position":[[537,10],[661,10]]},"125":{"position":[[412,10]]},"127":{"position":[[87,10]]},"135":{"position":[[121,10]]},"146":{"position":[[791,10]]},"234":{"position":[[1513,10],[1708,10]]},"248":{"position":[[192,10]]},"292":{"position":[[195,10]]},"420":{"position":[[456,10]]},"448":{"position":[[423,10]]},"466":{"position":[[44,8]]},"538":{"position":[[587,10]]}}}],["histori",{"_index":861,"t":{"144":{"position":[[1031,8]]},"468":{"position":[[755,8]]},"470":{"position":[[48,8]]},"482":{"position":[[229,8]]},"511":{"position":[[154,7]]}}}],["historyqueri",{"_index":1899,"t":{"466":{"position":[[104,12]]},"468":{"position":[[847,12]]}}}],["historyrespons",{"_index":1900,"t":{"466":{"position":[[151,15]]},"468":{"position":[[1038,15]]}}}],["hold",{"_index":2535,"t":{"578":{"position":[[27,4]]}}}],["home/.cargo/env",{"_index":722,"t":{"105":{"position":[[313,18]]}}}],["homebrew",{"_index":710,"t":{"105":{"position":[[181,10]]}}}],["hongkong",{"_index":1299,"t":{"234":{"position":[[1779,8]]},"242":{"position":[[570,8]]},"244":{"position":[[498,8]]}}}],["honour",{"_index":1942,"t":{"478":{"position":[[199,7]]}}}],["hood",{"_index":1430,"t":{"270":{"position":[[140,5]]},"420":{"position":[[622,5]]}}}],["hop",{"_index":1027,"t":{"172":{"position":[[581,3],[628,4]]},"534":{"position":[[518,5]]},"556":{"position":[[614,4],[661,4]]},"558":{"position":[[175,4],[242,5],[473,4],[608,4],[644,3],[909,4],[1148,4],[1308,4],[1352,4],[1876,4]]},"562":{"position":[[1368,3],[1953,3]]}}}],["hopr",{"_index":1928,"t":{"474":{"position":[[688,6]]}}}],["host",{"_index":478,"t":{"62":{"position":[[389,4]]},"166":{"position":[[542,4]]},"200":{"position":[[827,4]]},"204":{"position":[[347,4]]},"210":{"position":[[521,4]]},"336":{"position":[[56,7]]}}}],["host]:[websocket",{"_index":444,"t":{"52":{"position":[[142,16]]}}}],["hour",{"_index":997,"t":{"162":{"position":[[171,5]]},"234":{"position":[[698,7],[1268,7]]},"242":{"position":[[509,7],[777,7]]},"468":{"position":[[747,4]]},"470":{"position":[[40,4]]}}}],["http",{"_index":410,"t":{"50":{"position":[[350,8],[612,5]]},"105":{"position":[[256,8],[397,8],[545,8]]},"166":{"position":[[59,4],[136,4],[190,4],[315,4],[383,4],[590,4]]},"168":{"position":[[198,4]]}}}],["http://127.0.0.1:8645/debug/v1/info",{"_index":1235,"t":{"220":{"position":[[170,37]]},"274":{"position":[[184,37]]}}}],["http://127.0.0.1:8645/debug/v1/vers",{"_index":1436,"t":{"274":{"position":[[110,40]]}}}],["http://127.0.0.1:8645/relay/v1/auto/messag",{"_index":1438,"t":{"274":{"position":[[359,46]]}}}],["http://127.0.0.1:8645/store/v1/messages?contenttopics=%2fmi",{"_index":1445,"t":{"274":{"position":[[725,60]]}}}],["http://localhost:3000/d/yns_4vfvk/nwaku",{"_index":1433,"t":{"272":{"position":[[6,39]]}}}],["https://cdn.jsdelivr.net/npm/protobufjs@latest/dist/protobuf.min.j",{"_index":181,"t":{"16":{"position":[[735,70]]}}}],["https://creativecommons.org/licenses/by/4.0",{"_index":2515,"t":{"572":{"position":[[390,45]]}}}],["https://examples.waku.org/rln",{"_index":1685,"t":{"404":{"position":[[391,29]]}}}],["https://github.com/spacejam/sl",{"_index":964,"t":{"158":{"position":[[1091,34]]}}}],["https://github.com/vacp2p/research/issues/148",{"_index":1692,"t":{"406":{"position":[[253,46]]},"414":{"position":[[476,46]]}}}],["https://github.com/waku",{"_index":550,"t":{"83":{"position":[[185,23]]},"101":{"position":[[678,23]]},"107":{"position":[[129,23]]},"198":{"position":[[284,23]]},"264":{"position":[[10,23]]},"406":{"position":[[875,23]]},"472":{"position":[[21,23],[91,23],[164,23],[235,23]]},"476":{"position":[[31,23],[137,23],[225,23],[321,23]]},"480":{"position":[[70,23],[141,23]]},"484":{"position":[[52,23],[145,23]]},"488":{"position":[[42,23],[198,23],[362,23],[504,23]]},"492":{"position":[[172,23]]},"494":{"position":[[1080,23],[1169,23],[1321,23]]},"498":{"position":[[181,23],[2830,23]]},"511":{"position":[[459,23]]},"515":{"position":[[0,23],[42,23]]},"517":{"position":[[122,23]]},"525":{"position":[[1141,23],[1264,23]]},"560":{"position":[[962,23]]}}}],["https://sh.rustup.r",{"_index":720,"t":{"105":{"position":[[280,20],[421,20],[569,20]]}}}],["https://unpkg.com/@waku/sdk@latest/bundle/index.j",{"_index":146,"t":{"14":{"position":[[227,53]]}}}],["https://vac.dev/build",{"_index":1701,"t":{"406":{"position":[[730,24]]}}}],["hub",{"_index":1161,"t":{"198":{"position":[[52,3]]}}}],["huge",{"_index":2457,"t":{"562":{"position":[[2060,4]]}}}],["hundr",{"_index":2532,"t":{"576":{"position":[[537,7]]}}}],["i.",{"_index":1952,"t":{"478":{"position":[[805,5]]},"523":{"position":[[63,4]]}}}],["i13n",{"_index":1823,"t":{"448":{"position":[[176,5],[293,5],[502,5]]},"456":{"position":[[346,4]]},"460":{"position":[[93,4]]},"468":{"position":[[280,4],[1165,4]]}}}],["id",{"_index":899,"t":{"154":{"position":[[39,2],[52,2],[112,2]]},"158":{"position":[[474,2],[537,2]]},"258":{"position":[[233,3],[628,3]]},"525":{"position":[[702,3]]}}}],["id'",{"_index":1405,"t":{"258":{"position":[[807,4]]}}}],["id=\"messag",{"_index":1093,"t":{"184":{"position":[[1481,11]]}}}],["idea",{"_index":119,"t":{"10":{"position":[[309,4],[341,5]]},"554":{"position":[[537,4]]},"562":{"position":[[593,4],[1653,4]]}}}],["ideal",{"_index":1893,"t":{"464":{"position":[[329,7]]}}}],["ident",{"_index":949,"t":{"158":{"position":[[491,8],[565,8]]},"400":{"position":[[231,8]]},"410":{"position":[[116,11]]},"474":{"position":[[838,11]]},"478":{"position":[[594,10]]},"504":{"position":[[151,8]]},"540":{"position":[[99,9]]}}}],["identif",{"_index":1714,"t":{"410":{"position":[[311,14]]}}}],["identifi",{"_index":902,"t":{"154":{"position":[[185,10]]},"254":{"position":[[311,12]]},"258":{"position":[[203,10]]},"318":{"position":[[931,12]]},"342":{"position":[[68,8]]},"370":{"position":[[21,10]]},"376":{"position":[[46,10]]},"410":{"position":[[77,11]]},"412":{"position":[[161,12]]},"418":{"position":[[190,8],[344,12]]},"432":{"position":[[653,11]]},"548":{"position":[[172,8]]},"586":{"position":[[277,11]]}}}],["idl",{"_index":974,"t":{"158":{"position":[[1387,4]]}}}],["ii",{"_index":2006,"t":{"494":{"position":[[1130,3],[1574,3]]},"500":{"position":[[86,3]]},"502":{"position":[[583,3]]},"504":{"position":[[1572,3],[2013,3]]},"506":{"position":[[335,3]]},"554":{"position":[[258,3]]},"556":{"position":[[926,3]]},"584":{"position":[[965,4]]}}}],["illustr",{"_index":1536,"t":{"294":{"position":[[18,12]]}}}],["imag",{"_index":773,"t":{"115":{"position":[[2465,6],[2550,6]]},"119":{"position":[[295,5]]},"198":{"position":[[17,6],[156,6],[215,5],[342,5],[360,5]]},"200":{"position":[[58,7],[116,5],[129,5]]},"214":{"position":[[861,6]]}}}],["immedi",{"_index":1683,"t":{"404":{"position":[[203,9]]},"444":{"position":[[185,11]]},"580":{"position":[[217,11]]}}}],["impact",{"_index":1938,"t":{"476":{"position":[[285,6]]},"494":{"position":[[1235,6]]},"511":{"position":[[262,6],[343,7]]},"530":{"position":[[356,6]]},"562":{"position":[[2065,6]]}}}],["implement",{"_index":44,"t":{"4":{"position":[[182,14],[450,14]]},"6":{"position":[[8,11]]},"12":{"position":[[205,14]]},"75":{"position":[[137,9]]},"356":{"position":[[34,10]]},"396":{"position":[[56,12]]},"402":{"position":[[81,15]]},"404":{"position":[[354,14]]},"436":{"position":[[67,11]]},"490":{"position":[[185,15]]},"536":{"position":[[50,11],[105,11],[165,11]]}}}],["impli",{"_index":2343,"t":{"538":{"position":[[10,7]]},"558":{"position":[[281,7]]},"568":{"position":[[163,8],[1385,7]]},"574":{"position":[[246,5]]}}}],["implic",{"_index":1378,"t":{"252":{"position":[[71,13]]},"528":{"position":[[106,12],[961,12]]}}}],["implicit",{"_index":1874,"t":{"458":{"position":[[287,9]]}}}],["import",{"_index":144,"t":{"14":{"position":[[205,6]]},"16":{"position":[[713,6],[728,6]]},"24":{"position":[[94,6]]},"26":{"position":[[101,6],[323,6]]},"28":{"position":[[86,6]]},"30":{"position":[[83,6]]},"50":{"position":[[181,9]]},"60":{"position":[[135,6]]},"62":{"position":[[147,6]]},"64":{"position":[[273,6],[318,6],[813,6]]},"66":{"position":[[86,6],[131,6],[178,6]]},"68":{"position":[[123,6]]},"89":{"position":[[162,6],[415,6],[882,6]]},"91":{"position":[[162,6],[570,6],[1051,6]]},"93":{"position":[[563,6],[640,6],[734,6],[2228,6],[2291,6]]},"95":{"position":[[453,6]]},"129":{"position":[[94,6]]},"131":{"position":[[87,6]]},"133":{"position":[[92,6]]},"142":{"position":[[151,6]]},"144":{"position":[[180,6]]},"182":{"position":[[182,6],[237,6],[681,6]]},"184":{"position":[[144,6],[189,6],[228,6],[286,6],[321,6]]},"186":{"position":[[208,6]]},"188":{"position":[[194,6]]},"190":{"position":[[223,6]]},"410":{"position":[[143,9]]},"474":{"position":[[861,9]]},"502":{"position":[[445,10]]},"558":{"position":[[139,9],[1614,9]]},"562":{"position":[[346,9]]}}}],["impos",{"_index":403,"t":{"50":{"position":[[213,6]]},"300":{"position":[[579,7]]},"308":{"position":[[245,7]]},"318":{"position":[[902,7]]},"384":{"position":[[164,8]]}}}],["imposs",{"_index":2158,"t":{"504":{"position":[[2054,10]]}}}],["improv",{"_index":249,"t":{"20":{"position":[[340,7]]},"258":{"position":[[510,7]]},"276":{"position":[[544,9]]},"320":{"position":[[874,8]]},"494":{"position":[[690,11]]},"504":{"position":[[114,12]]},"550":{"position":[[196,7]]}}}],["in/out",{"_index":2129,"t":{"502":{"position":[[1645,6]]}}}],["incent",{"_index":1700,"t":{"406":{"position":[[679,9]]},"464":{"position":[[704,10],[734,10]]}}}],["incentiv",{"_index":1853,"t":{"454":{"position":[[13,12]]}}}],["incentivis",{"_index":220,"t":{"18":{"position":[[1372,15]]},"58":{"position":[[271,15]]},"324":{"position":[[16,11]]},"404":{"position":[[20,12]]},"406":{"position":[[393,13]]},"422":{"position":[[383,15]]},"448":{"position":[[146,15]]},"452":{"position":[[16,15]]},"464":{"position":[[80,12]]},"468":{"position":[[16,12]]},"486":{"position":[[67,12]]},"488":{"position":[[420,15]]}}}],["incident",{"_index":2525,"t":{"576":{"position":[[202,11]]}}}],["includ",{"_index":84,"t":{"6":{"position":[[527,8]]},"16":{"position":[[814,7]]},"40":{"position":[[582,8]]},"105":{"position":[[55,9]]},"212":{"position":[[404,8]]},"266":{"position":[[335,7]]},"280":{"position":[[233,9],[626,9]]},"288":{"position":[[305,9]]},"316":{"position":[[84,8]]},"326":{"position":[[5,8]]},"336":{"position":[[131,9]]},"342":{"position":[[182,8]]},"354":{"position":[[171,7]]},"382":{"position":[[84,9]]},"394":{"position":[[68,9]]},"408":{"position":[[364,7]]},"414":{"position":[[392,9]]},"420":{"position":[[223,8],[446,9]]},"460":{"position":[[44,7]]},"552":{"position":[[98,7]]},"564":{"position":[[181,9]]},"568":{"position":[[172,9]]},"570":{"position":[[243,7],[727,9],[1259,9]]},"572":{"position":[[233,9]]},"574":{"position":[[104,9]]},"578":{"position":[[103,9],[210,9]]},"584":{"position":[[74,8],[1873,9]]}}}],["incom",{"_index":809,"t":{"125":{"position":[[163,8]]},"188":{"position":[[129,8]]},"248":{"position":[[141,8]]},"320":{"position":[[666,8]]}}}],["incorpor",{"_index":1518,"t":{"288":{"position":[[104,12]]},"584":{"position":[[1409,12]]}}}],["increas",{"_index":1030,"t":{"172":{"position":[[610,8]]},"256":{"position":[[8,8]]},"280":{"position":[[408,9]]},"452":{"position":[[327,9]]},"532":{"position":[[118,9]]},"534":{"position":[[159,8],[211,8]]},"554":{"position":[[470,10]]},"562":{"position":[[926,10],[1580,9],[2170,8]]}}}],["incur",{"_index":2378,"t":{"548":{"position":[[554,5]]}}}],["inde",{"_index":2136,"t":{"504":{"position":[[525,6]]}}}],["indemnifi",{"_index":2534,"t":{"578":{"position":[[10,9]]}}}],["independ",{"_index":1812,"t":{"442":{"position":[[110,11]]},"448":{"position":[[94,11]]}}}],["index",{"_index":850,"t":{"144":{"position":[[41,5],[796,5]]},"158":{"position":[[318,5],[328,5]]},"184":{"position":[[1248,6]]}}}],["indic",{"_index":355,"t":{"38":{"position":[[277,9]]},"182":{"position":[[930,9]]},"294":{"position":[[216,9]]},"314":{"position":[[177,10]]},"432":{"position":[[433,9]]},"521":{"position":[[687,9]]},"523":{"position":[[3670,9]]},"554":{"position":[[505,9]]},"562":{"position":[[225,8]]}}}],["individu",{"_index":2402,"t":{"558":{"position":[[542,10],[714,10],[2016,10]]}}}],["industri",{"_index":2496,"t":{"570":{"position":[[168,8]]}}}],["inf",{"_index":1246,"t":{"224":{"position":[[84,3]]},"226":{"position":[[269,3],[921,3]]}}}],["info",{"_index":263,"t":{"24":{"position":[[328,4]]},"28":{"position":[[611,4]]},"30":{"position":[[365,4]]},"40":{"position":[[907,4]]},"52":{"position":[[311,5],[387,5]]},"58":{"position":[[142,4]]},"85":{"position":[[170,4]]},"93":{"position":[[176,4]]},"103":{"position":[[239,4]]},"117":{"position":[[206,4]]},"121":{"position":[[439,4]]},"123":{"position":[[629,4]]},"137":{"position":[[696,4]]},"139":{"position":[[717,4]]},"144":{"position":[[941,4]]},"146":{"position":[[542,4]]},"152":{"position":[[127,5]]},"184":{"position":[[1697,4]]},"190":{"position":[[825,4]]},"202":{"position":[[117,4]]},"206":{"position":[[673,4]]},"208":{"position":[[796,4]]},"210":{"position":[[837,4]]},"212":{"position":[[466,4]]},"218":{"position":[[601,4]]},"220":{"position":[[122,4],[562,4]]},"222":{"position":[[89,4],[120,4],[224,4]]},"232":{"position":[[695,4]]},"242":{"position":[[697,4]]},"246":{"position":[[304,4]]},"254":{"position":[[467,4]]},"258":{"position":[[575,4]]},"268":{"position":[[361,4]]},"274":{"position":[[163,4]]},"300":{"position":[[293,4]]},"310":{"position":[[264,4]]},"312":{"position":[[234,4]]},"314":{"position":[[306,4]]},"320":{"position":[[838,4]]},"420":{"position":[[628,4]]}}}],["inform",{"_index":594,"t":{"93":{"position":[[366,11]]},"95":{"position":[[273,11]]},"220":{"position":[[91,11]]},"226":{"position":[[39,11]]},"254":{"position":[[257,12],[324,11]]},"294":{"position":[[875,9]]},"300":{"position":[[387,11]]},"304":{"position":[[196,8]]},"318":{"position":[[1573,11]]},"342":{"position":[[210,11]]},"346":{"position":[[51,11]]},"360":{"position":[[33,11]]},"366":{"position":[[47,11]]},"412":{"position":[[174,11]]},"418":{"position":[[357,11]]},"428":{"position":[[78,6]]},"436":{"position":[[191,11]]},"440":{"position":[[937,11]]},"498":{"position":[[34,8]]},"562":{"position":[[986,11]]},"568":{"position":[[1076,13],[1245,11],[1505,11]]},"570":{"position":[[803,11],[982,11],[1246,12]]}}}],["infrastructur",{"_index":1632,"t":{"324":{"position":[[153,14]]},"406":{"position":[[774,14]]},"422":{"position":[[134,15],[301,14]]}}}],["infring",{"_index":2473,"t":{"568":{"position":[[278,12]]}}}],["infura",{"_index":1746,"t":{"424":{"position":[[126,6],[150,6]]}}}],["init",{"_index":734,"t":{"105":{"position":[[639,4]]}}}],["initi",{"_index":1645,"t":{"332":{"position":[[21,7]]},"402":{"position":[[73,7]]},"464":{"position":[[856,7]]},"536":{"position":[[8,7]]},"544":{"position":[[17,7],[144,7]]}}}],["initialis",{"_index":646,"t":{"99":{"position":[[0,10],[191,10]]},"190":{"position":[[143,11]]},"284":{"position":[[5,12]]}}}],["inject",{"_index":1963,"t":{"482":{"position":[[200,9]]},"540":{"position":[[211,9]]}}}],["innov",{"_index":1480,"t":{"280":{"position":[[155,10]]}}}],["input",{"_index":1075,"t":{"184":{"position":[[502,5],[1462,6],[1493,6],[2341,5]]},"186":{"position":[[100,5]]}}}],["inputmessag",{"_index":1071,"t":{"184":{"position":[[363,14],[471,12]]},"186":{"position":[[614,12]]}}}],["inputmessage.length",{"_index":1130,"t":{"186":{"position":[[445,19]]}}}],["insecur",{"_index":407,"t":{"50":{"position":[[288,8]]},"54":{"position":[[57,8]]}}}],["insert",{"_index":1967,"t":{"484":{"position":[[129,9]]},"519":{"position":[[8,6],[473,7],[1469,6]]},"525":{"position":[[106,6],[445,6],[1416,9],[1523,9],[1617,6],[1658,6],[1793,9]]}}}],["inspir",{"_index":1884,"t":{"460":{"position":[[169,8]]}}}],["instal",{"_index":136,"t":{"14":{"position":[[0,7],[81,7],[175,10]]},"16":{"position":[[501,7],[583,7],[680,10]]},"22":{"position":[[214,12]]},"30":{"position":[[398,12]]},"64":{"position":[[47,7],[92,7]]},"87":{"position":[[0,7],[122,7]]},"99":{"position":[[244,9]]},"105":{"position":[[205,7],[341,7],[600,7]]},"115":{"position":[[9,7],[142,12],[445,12],[1347,12]]},"180":{"position":[[292,7],[399,7]]},"196":{"position":[[17,9]]}}}],["instanc",{"_index":1856,"t":{"456":{"position":[[92,9]]},"478":{"position":[[1018,9]]},"525":{"position":[[342,9]]}}}],["instanceof",{"_index":368,"t":{"40":{"position":[[625,10]]}}}],["instead",{"_index":487,"t":{"62":{"position":[[873,7]]},"103":{"position":[[230,8]]},"158":{"position":[[1567,7]]},"246":{"position":[[453,8]]},"254":{"position":[[283,7]]},"410":{"position":[[89,7]]},"500":{"position":[[150,8]]},"530":{"position":[[283,8]]},"536":{"position":[[240,8]]}}}],["institut",{"_index":2561,"t":{"584":{"position":[[1275,11]]}}}],["instruct",{"_index":766,"t":{"115":{"position":[[1331,12],[2436,13]]},"196":{"position":[[64,12]]},"234":{"position":[[856,8]]},"426":{"position":[[59,12]]}}}],["instrument",{"_index":2417,"t":{"560":{"position":[[154,10]]}}}],["integ",{"_index":2020,"t":{"496":{"position":[[264,8]]}}}],["integr",{"_index":21,"t":{"2":{"position":[[252,9]]},"6":{"position":[[53,9],[314,11],[404,11],[489,11],[675,11]]},"8":{"position":[[14,12],[205,9],[304,9]]},"12":{"position":[[306,9]]},"18":{"position":[[644,9]]},"87":{"position":[[34,11]]},"93":{"position":[[141,9]]},"115":{"position":[[1161,9],[1669,9]]},"178":{"position":[[210,9]]},"180":{"position":[[326,11]]},"190":{"position":[[967,10]]},"320":{"position":[[825,12]]},"386":{"position":[[44,9]]},"396":{"position":[[242,10]]},"400":{"position":[[192,10]]},"416":{"position":[[66,9]]},"548":{"position":[[418,10]]}}}],["intellectu",{"_index":2474,"t":{"568":{"position":[[294,12]]}}}],["intend",{"_index":1629,"t":{"324":{"position":[[5,7]]},"428":{"position":[[66,8]]},"568":{"position":[[1042,8]]}}}],["intention",{"_index":1718,"t":{"414":{"position":[[104,13]]}}}],["inter",{"_index":2454,"t":{"562":{"position":[[1471,5]]}}}],["interact",{"_index":104,"t":{"10":{"position":[[87,8]]},"24":{"position":[[62,8]]},"52":{"position":[[56,13]]},"129":{"position":[[62,8]]},"192":{"position":[[478,8],[523,8]]},"212":{"position":[[413,11]]},"220":{"position":[[8,8]]},"240":{"position":[[29,8]]},"260":{"position":[[160,8],[382,8]]},"274":{"position":[[53,11]]},"284":{"position":[[848,12]]},"286":{"position":[[95,11]]},"294":{"position":[[35,11]]},"364":{"position":[[94,11]]},"424":{"position":[[186,8]]},"434":{"position":[[218,8]]},"470":{"position":[[179,12]]},"542":{"position":[[348,11]]},"544":{"position":[[152,12],[291,12]]}}}],["interconnect",{"_index":2336,"t":{"536":{"position":[[372,14]]}}}],["interest",{"_index":1381,"t":{"254":{"position":[[120,10]]},"374":{"position":[[155,9]]},"376":{"position":[[74,8],[112,10]]},"432":{"position":[[699,8]]},"556":{"position":[[531,10]]}}}],["interfac",{"_index":103,"t":{"10":{"position":[[44,9]]},"184":{"position":[[19,9],[1159,11],[1989,9]]},"188":{"position":[[171,10]]},"192":{"position":[[577,9]]}}}],["intern",{"_index":2511,"t":{"572":{"position":[[87,13]]},"584":{"position":[[1325,13],[1972,13]]}}}],["internet",{"_index":1659,"t":{"354":{"position":[[97,8],[135,8]]},"494":{"position":[[114,8]]},"502":{"position":[[542,8]]}}}],["interoper",{"_index":160,"t":{"16":{"position":[[190,17]]},"115":{"position":[[314,17]]}}}],["interpret",{"_index":2579,"t":{"586":{"position":[[423,14]]}}}],["interv",{"_index":2192,"t":{"506":{"position":[[1121,8]]}}}],["introduc",{"_index":1528,"t":{"290":{"position":[[275,10]]},"448":{"position":[[447,9]]},"458":{"position":[[12,10],[391,10]]}}}],["invalid",{"_index":457,"t":{"54":{"position":[[81,7],[188,10]]},"458":{"position":[[243,8]]},"586":{"position":[[537,7]]}}}],["invest",{"_index":2268,"t":{"523":{"position":[[3183,8]]}}}],["investig",{"_index":459,"t":{"54":{"position":[[230,11]]},"550":{"position":[[462,14],[610,14],[696,11],[802,14]]}}}],["invoc",{"_index":755,"t":{"109":{"position":[[54,10]]}}}],["involv",{"_index":1460,"t":{"276":{"position":[[593,8]]},"296":{"position":[[478,8]]},"304":{"position":[[113,8]]},"318":{"position":[[236,8]]},"452":{"position":[[766,8]]},"474":{"position":[[1045,9]]},"558":{"position":[[786,8]]}}}],["io",{"_index":98,"t":{"8":{"position":[[145,5]]}}}],["io4qdxtotg86ppck2kvmevcxc2advzwrxxsvnzeaoa0jhshbm5qed69rqz1s1mweeqj3aoklo_7eu9iibcpmveklcqbgmlkgny0ixnly3ayntzrmaeddbhk1gx6y_zv5dvw5qb3dtsommvhtzo1wsorrf2lol2ddwrwgimohxdha3uyaw",{"_index":1208,"t":{"208":{"position":[[618,177]]},"226":{"position":[[1043,177],[1266,177]]}}}],["ip",{"_index":479,"t":{"62":{"position":[[394,4]]},"156":{"position":[[161,3]]},"170":{"position":[[224,3]]},"172":{"position":[[365,2],[389,2],[439,2],[481,2],[530,2]]},"200":{"position":[[573,3],[638,3]]},"204":{"position":[[352,4]]},"206":{"position":[[443,3],[669,3],[906,3]]},"210":{"position":[[526,4]]},"232":{"position":[[778,2]]},"246":{"position":[[103,2]]},"254":{"position":[[99,2]]},"280":{"position":[[243,3]]},"282":{"position":[[513,2]]},"296":{"position":[[259,3]]},"432":{"position":[[549,2],[620,2],[727,2],[833,2]]}}}],["ip4/0.0.0.0/tcp/60000/p2p/16uiu2hamqcsh9v81xoqtwgut3qwkzwbwy1tttqwpr3djhu2tswmn",{"_index":1255,"t":{"224":{"position":[[391,80]]}}}],["ip4/0.0.0.0/tcp/60000/p2p/16uiu2hamubpqufqqje3jiqob5yoiubbya59nb4qqezeitnghea6w",{"_index":1239,"t":{"220":{"position":[[269,82]]}}}],["ip4/0.0.0.0/tcp/60002/ws/p2p/16uiu2hakzjwwgeaxfegnmkfpspc6vgbrqcdtlg5q3gmk2v4pqw7h",{"_index":485,"t":{"62":{"position":[[528,86]]},"66":{"position":[[307,86]]}}}],["ip4/0.0.0.0/tcp/60003/ws/p2p/16uiu2hamfba7lgtwy5wvvikdmxvo3cklqkmvvtudu63fe8safeqj",{"_index":486,"t":{"62":{"position":[[615,86]]},"66":{"position":[[394,86]]}}}],["ip4/0.0.0.0/tcp/8000/ws/p2p/16uiu2hamqcsh9v81xoqtwgut3qwkzwbwy1tttqwpr3djhu2tswmn",{"_index":1256,"t":{"224":{"position":[[502,82]]}}}],["ipf",{"_index":779,"t":{"115":{"position":[[2640,4]]},"318":{"position":[[970,5],[1041,4]]},"460":{"position":[[81,5]]}}}],["ipt",{"_index":2413,"t":{"558":{"position":[[2005,3]]}}}],["ipv4",{"_index":938,"t":{"156":{"position":[[294,4]]},"232":{"position":[[18,4],[67,4]]}}}],["ish",{"_index":2312,"t":{"530":{"position":[[29,4],[92,4]]}}}],["isload",{"_index":1061,"t":{"182":{"position":[[791,9],[918,11]]},"184":{"position":[[641,9]]}}}],["isn't",{"_index":768,"t":{"115":{"position":[[1737,5]]}}}],["issu",{"_index":243,"t":{"20":{"position":[[243,5]]},"40":{"position":[[990,7]]},"44":{"position":[[15,6]]},"50":{"position":[[673,6],[909,6]]},"56":{"position":[[322,5],[397,6]]},"115":{"position":[[2103,6]]},"478":{"position":[[549,7]]},"488":{"position":[[29,6]]},"492":{"position":[[11,5]]},"494":{"position":[[1034,5],[1307,6],[1495,5]]},"500":{"position":[[5,5]]},"525":{"position":[[37,6]]},"528":{"position":[[137,5]]},"546":{"position":[[485,6],[621,7]]},"550":{"position":[[480,7],[880,6],[912,5]]},"556":{"position":[[824,5]]}}}],["it'",{"_index":401,"t":{"50":{"position":[[176,4]]},"115":{"position":[[2510,4]]},"214":{"position":[[390,4]]},"464":{"position":[[875,4]]},"498":{"position":[[802,4]]},"538":{"position":[[462,4]]},"554":{"position":[[230,4]]},"562":{"position":[[740,4],[2255,4]]}}}],["item",{"_index":1122,"t":{"184":{"position":[[2315,6]]},"552":{"position":[[262,5]]}}}],["itself",{"_index":814,"t":{"125":{"position":[[458,7]]},"234":{"position":[[1559,7]]},"468":{"position":[[156,6]]},"519":{"position":[[1359,6]]},"534":{"position":[[273,6]]},"540":{"position":[[255,7]]},"562":{"position":[[1526,7]]}}}],["iu4qbkyj8ovxwz4fialxz_1a8docu2wc",{"_index":1261,"t":{"226":{"position":[[388,32],[621,32]]}}}],["iu4qcqzxzdb_jsymloyor0f5e_95hbiywgo_wgx2riddbmcjzktzmlcr0wmmzv47lgik_tvwww5ming90ris83tismbgmlkgny0gmlwhaaaaacjc2vjcdi1nmsxoqpszztg",{"_index":1241,"t":{"220":{"position":[[371,131]]}}}],["javascript",{"_index":74,"t":{"6":{"position":[[227,10]]},"12":{"position":[[23,10],[151,10]]},"48":{"position":[[161,10]]},"115":{"position":[[70,10],[1453,10],[1722,10]]},"178":{"position":[[23,10]]},"192":{"position":[[594,10]]}}}],["javascript/typescript",{"_index":70,"t":{"6":{"position":[[167,21]]}}}],["jmeter",{"_index":2242,"t":{"521":{"position":[[416,7],[584,6],[787,6]]}}}],["join",{"_index":15,"t":{"2":{"position":[[191,4]]},"218":{"position":[[3,4]]},"230":{"position":[[3,4]]}}}],["jq",{"_index":715,"t":{"105":{"position":[[240,2]]}}}],["js",{"_index":235,"t":{"20":{"position":[[112,3],[256,2]]},"34":{"position":[[969,2]]},"101":{"position":[[266,2],[425,2]]},"146":{"position":[[878,2]]},"404":{"position":[[387,3],[421,3]]}}}],["json",{"_index":177,"t":{"16":{"position":[[447,4]]},"115":{"position":[[425,5]]},"152":{"position":[[278,4]]}}}],["judg",{"_index":2549,"t":{"584":{"position":[[506,6]]}}}],["jump",{"_index":2407,"t":{"558":{"position":[[1342,4]]}}}],["juri",{"_index":2551,"t":{"584":{"position":[[615,4]]}}}],["jurisdict",{"_index":2483,"t":{"568":{"position":[[826,13]]},"584":{"position":[[650,14]]}}}],["k",{"_index":455,"t":{"54":{"position":[[50,1],[128,1]]},"256":{"position":[[17,1]]},"258":{"position":[[584,1],[595,1],[771,1],[829,1]]},"478":{"position":[[346,1],[404,1]]}}}],["kademlia'",{"_index":1028,"t":{"172":{"position":[[587,10]]}}}],["kb",{"_index":2215,"t":{"519":{"position":[[293,3]]}}}],["kbyte",{"_index":2141,"t":{"504":{"position":[[817,6],[1034,6],[1623,6]]},"506":{"position":[[502,6]]}}}],["kbytes/msg",{"_index":2181,"t":{"506":{"position":[[726,10]]}}}],["kbytes/sec",{"_index":2183,"t":{"506":{"position":[[743,10],[785,10]]}}}],["keen",{"_index":2357,"t":{"542":{"position":[[107,4]]},"550":{"position":[[361,4]]},"552":{"position":[[55,4],[180,4]]}}}],["keep",{"_index":510,"t":{"70":{"position":[[177,4]]},"91":{"position":[[279,4]]},"109":{"position":[[136,4]]},"115":{"position":[[866,7]]},"158":{"position":[[1348,4],[1372,4]]},"252":{"position":[[113,4]]},"478":{"position":[[98,5]]},"494":{"position":[[411,4]]},"523":{"position":[[1711,5]]},"528":{"position":[[888,4]]}}}],["kept",{"_index":2566,"t":{"584":{"position":[[1742,4]]}}}],["key",{"_index":391,"t":{"48":{"position":[[89,4],[172,3]]},"89":{"position":[[43,3],[157,4],[258,3],[641,3],[1265,3],[1357,3]]},"91":{"position":[[31,3],[64,3],[157,4],[274,4],[353,3],[374,4],[521,3],[792,3],[996,3],[1440,3]]},"93":{"position":[[313,3],[536,4],[855,3],[935,4],[1292,3],[1360,3],[1587,3],[1655,3],[2045,3],[2134,3],[2388,3],[2815,3],[2896,3],[3078,3]]},"95":{"position":[[27,4],[140,4],[187,3],[269,3],[364,4],[554,4],[658,4],[796,4]]},"125":{"position":[[136,3]]},"150":{"position":[[182,3]]},"154":{"position":[[232,3]]},"158":{"position":[[477,3],[507,3],[551,3],[585,3],[837,3],[849,3]]},"176":{"position":[[213,3],[239,3]]},"206":{"position":[[284,5],[346,3]]},"236":{"position":[[26,3],[144,3],[215,4],[258,3],[495,3],[546,3],[629,3],[728,3],[829,3],[846,3],[1015,3]]},"238":{"position":[[461,3],[488,3],[707,3],[734,3],[1058,3],[1197,3]]},"254":{"position":[[379,5],[456,3]]},"258":{"position":[[244,4]]},"268":{"position":[[34,3]]},"322":{"position":[[118,3]]},"358":{"position":[[7,3],[55,3]]},"370":{"position":[[121,4]]},"400":{"position":[[104,3]]},"525":{"position":[[624,3],[687,3]]}}}],["key={index",{"_index":1086,"t":{"184":{"position":[[1265,11]]}}}],["key]@[domain",{"_index":497,"t":{"64":{"position":[[433,12]]},"206":{"position":[[603,12]]}}}],["keystore/keystore.json",{"_index":1427,"t":{"268":{"position":[[314,22]]}}}],["kind",{"_index":894,"t":{"152":{"position":[[211,4]]},"568":{"position":[[146,5]]}}}],["kit",{"_index":109,"t":{"10":{"position":[[172,3]]}}}],["knowledg",{"_index":1610,"t":{"318":{"position":[[1285,9]]},"378":{"position":[[58,9]]},"468":{"position":[[427,9]]},"470":{"position":[[134,10]]}}}],["known",{"_index":1499,"t":{"284":{"position":[[222,5]]},"468":{"position":[[732,5]]},"498":{"position":[[2080,5]]},"584":{"position":[[2160,5]]}}}],["kotlin",{"_index":91,"t":{"6":{"position":[[588,6]]},"8":{"position":[[232,6],[270,6]]}}}],["l",{"_index":753,"t":{"107":{"position":[[197,1]]}}}],["laid",{"_index":1795,"t":{"440":{"position":[[240,4]]}}}],["languag",{"_index":65,"t":{"6":{"position":[[78,9]]},"584":{"position":[[1765,8]]}}}],["laptop",{"_index":1989,"t":{"494":{"position":[[88,6]]},"498":{"position":[[600,7]]}}}],["larg",{"_index":1604,"t":{"318":{"position":[[1057,6],[1178,5]]},"406":{"position":[[123,5]]}}}],["larger",{"_index":1487,"t":{"280":{"position":[[602,6]]}}}],["last",{"_index":877,"t":{"146":{"position":[[710,4]]},"234":{"position":[[1246,4]]},"428":{"position":[[13,4]]},"564":{"position":[[13,4]]}}}],["lastmessag",{"_index":854,"t":{"144":{"position":[[631,11]]}}}],["late",{"_index":1892,"t":{"464":{"position":[[122,4]]}}}],["latenc",{"_index":1484,"t":{"280":{"position":[[446,8]]},"296":{"position":[[186,8]]},"304":{"position":[[279,8]]},"534":{"position":[[569,7]]},"558":{"position":[[1376,7]]},"560":{"position":[[453,7]]},"562":{"position":[[1482,7]]}}}],["latency=100m",{"_index":2422,"t":{"560":{"position":[[430,14]]}}}],["later",{"_index":1541,"t":{"294":{"position":[[929,5]]},"312":{"position":[[121,6]]},"482":{"position":[[292,6]]}}}],["latest",{"_index":232,"t":{"20":{"position":[[76,6]]},"99":{"position":[[354,6]]},"103":{"position":[[92,6]]},"214":{"position":[[610,6]]},"538":{"position":[[140,6]]}}}],["latitud",{"_index":2212,"t":{"519":{"position":[[241,8]]}}}],["law",{"_index":2480,"t":{"568":{"position":[[708,4],[976,5]]},"576":{"position":[[639,4]]},"582":{"position":[[6,3],[145,4]]},"584":{"position":[[66,3]]}}}],["lawsuit",{"_index":2572,"t":{"584":{"position":[[2241,7]]}}}],["layer",{"_index":1704,"t":{"408":{"position":[[16,6]]},"410":{"position":[[46,7]]},"420":{"position":[[707,5]]}}}],["lead",{"_index":1302,"t":{"236":{"position":[[50,7]]},"410":{"position":[[283,7]]},"478":{"position":[[722,5]]}}}],["leaf",{"_index":1496,"t":{"282":{"position":[[402,4]]}}}],["leak",{"_index":1614,"t":{"318":{"position":[[1556,4]]}}}],["learn",{"_index":189,"t":{"18":{"position":[[68,5],[189,5],[324,5],[458,5],[592,5],[727,5],[880,5],[1009,5],[1133,5],[1265,5]]},"24":{"position":[[515,5]]},"111":{"position":[[182,5]]},"113":{"position":[[174,5]]},"115":{"position":[[494,5],[628,5]]},"190":{"position":[[1157,5]]},"192":{"position":[[80,5]]},"200":{"position":[[1027,5]]},"216":{"position":[[199,5]]},"226":{"position":[[1608,5]]},"248":{"position":[[308,5]]},"274":{"position":[[1064,5]]},"276":{"position":[[443,5]]},"282":{"position":[[537,8]]},"300":{"position":[[281,5]]},"318":{"position":[[121,5]]},"420":{"position":[[529,5]]}}}],["leav",{"_index":2095,"t":{"498":{"position":[[2514,7]]},"504":{"position":[[1116,5]]},"536":{"position":[[658,7]]}}}],["led",{"_index":2429,"t":{"560":{"position":[[834,3]]}}}],["legal",{"_index":1758,"t":{"430":{"position":[[212,5]]},"432":{"position":[[199,5]]},"566":{"position":[[152,5]]},"568":{"position":[[431,9],[785,7],[1565,6]]},"576":{"position":[[93,5]]}}}],["legal@free.technolog",{"_index":1817,"t":{"446":{"position":[[89,22]]},"586":{"position":[[902,22]]}}}],["legisl",{"_index":1770,"t":{"432":{"position":[[245,12]]},"438":{"position":[[713,12]]},"440":{"position":[[269,12]]}}}],["legitim",{"_index":1773,"t":{"432":{"position":[[688,10]]}}}],["leobago",{"_index":2016,"t":{"496":{"position":[[175,8]]}}}],["less",{"_index":1031,"t":{"172":{"position":[[623,4]]},"262":{"position":[[113,5]]},"424":{"position":[[267,5]]},"498":{"position":[[437,5],[1085,4],[1803,4]]},"558":{"position":[[237,4],[248,4]]}}}],["let",{"_index":803,"t":{"123":{"position":[[232,4]]},"502":{"position":[[14,4]]},"504":{"position":[[687,4]]},"506":{"position":[[202,4]]}}}],["let'",{"_index":1065,"t":{"184":{"position":[[0,5]]},"238":{"position":[[1303,5]]},"558":{"position":[[0,5]]}}}],["level",{"_index":798,"t":{"123":{"position":[[99,5]]},"152":{"position":[[35,5],[76,5],[105,7]]},"222":{"position":[[233,6]]},"248":{"position":[[98,5]]},"334":{"position":[[68,5]]},"438":{"position":[[297,5]]},"523":{"position":[[1726,5]]},"558":{"position":[[64,6]]}}}],["leverag",{"_index":1657,"t":{"350":{"position":[[57,9]]},"356":{"position":[[64,9]]},"542":{"position":[[150,8]]}}}],["liabil",{"_index":1814,"t":{"442":{"position":[[179,9]]},"504":{"position":[[2954,9]]},"576":{"position":[[73,10],[484,9],[572,9]]}}}],["liabl",{"_index":2519,"t":{"574":{"position":[[498,6]]},"576":{"position":[[20,6]]}}}],["lib",{"_index":730,"t":{"105":{"position":[[527,4]]}}}],["libp2p",{"_index":378,"t":{"44":{"position":[[86,6]]},"46":{"position":[[195,7]]},"48":{"position":[[277,6]]},"64":{"position":[[623,7],[935,7]]},"66":{"position":[[670,7]]},"85":{"position":[[185,6]]},"125":{"position":[[172,6]]},"154":{"position":[[318,6],[755,6]]},"210":{"position":[[890,6]]},"278":{"position":[[655,6]]},"302":{"position":[[117,6]]},"306":{"position":[[126,6]]},"318":{"position":[[298,6]]},"322":{"position":[[30,7]]},"328":{"position":[[0,6]]},"348":{"position":[[0,6]]},"410":{"position":[[60,6]]},"519":{"position":[[723,8]]}}}],["libp2p'",{"_index":1630,"t":{"324":{"position":[[75,8]]}}}],["libp2p.getp",{"_index":506,"t":{"68":{"position":[[66,17]]}}}],["libp2p/bootstrap",{"_index":505,"t":{"66":{"position":[[157,20]]}}}],["libpq",{"_index":724,"t":{"105":{"position":[[372,5]]}}}],["libpq.5.dylib",{"_index":737,"t":{"105":{"position":[[672,13]]}}}],["libpq5",{"_index":714,"t":{"105":{"position":[[233,6]]}}}],["libpqisbusi",{"_index":2275,"t":{"523":{"position":[[3647,13]]}}}],["librari",{"_index":705,"t":{"105":{"position":[[130,8]]},"386":{"position":[[16,10]]},"546":{"position":[[47,9]]},"550":{"position":[[392,8]]}}}],["licenc",{"_index":2513,"t":{"572":{"position":[[138,7],[342,8]]}}}],["licens",{"_index":1818,"t":{"446":{"position":[[129,8]]},"572":{"position":[[101,7]]},"586":{"position":[[942,8]]}}}],["light",{"_index":192,"t":{"18":{"position":[[167,5],[231,5],[253,5],[380,5]]},"22":{"position":[[88,5],[126,5]]},"24":{"position":[[47,5],[161,5]]},"28":{"position":[[191,7]]},"32":{"position":[[49,5],[415,5]]},"34":{"position":[[911,5],[963,5],[976,5]]},"36":{"position":[[169,5],[211,5]]},"89":{"position":[[699,5]]},"91":{"position":[[850,5]]},"93":{"position":[[1750,5]]},"127":{"position":[[47,5]]},"129":{"position":[[47,5],[161,5]]},"146":{"position":[[816,5]]},"182":{"position":[[297,5],[437,5],[604,5],[759,5],[841,5]]},"184":{"position":[[609,5],[1080,5]]},"186":{"position":[[387,5]]},"218":{"position":[[527,5]]},"242":{"position":[[25,5]]},"244":{"position":[[25,5],[51,5],[163,5]]},"254":{"position":[[23,5]]},"284":{"position":[[800,5]]},"292":{"position":[[289,5]]},"300":{"position":[[165,5]]},"310":{"position":[[23,5]]},"314":{"position":[[0,5],[321,5]]},"344":{"position":[[34,5]]},"350":{"position":[[2,5]]},"352":{"position":[[0,5],[34,5]]},"368":{"position":[[57,5]]},"418":{"position":[[522,5]]},"462":{"position":[[245,5],[292,5],[455,5],[526,5],[615,5],[677,5],[717,5]]},"466":{"position":[[16,5]]},"474":{"position":[[934,5]]},"488":{"position":[[459,5]]},"498":{"position":[[723,5],[1573,5],[1689,5]]},"528":{"position":[[549,5]]}}}],["lightn",{"_index":1927,"t":{"474":{"position":[[674,10]]}}}],["lightnodeprovid",{"_index":1049,"t":{"182":{"position":[[90,17],[246,17],[484,18],[535,20]]}}}],["lightpush",{"_index":499,"t":{"64":{"position":[[520,10]]},"66":{"position":[[550,10]]},"164":{"position":[[31,9],[54,9],[125,9]]},"244":{"position":[[81,9],[245,9],[400,9]]},"462":{"position":[[281,10],[990,10]]},"488":{"position":[[475,10]]}}}],["lightpush.send",{"_index":314,"t":{"32":{"position":[[110,16]]}}}],["lightpush=tru",{"_index":1355,"t":{"244":{"position":[[119,14]]}}}],["lightpushnod",{"_index":1005,"t":{"164":{"position":[[85,13]]},"244":{"position":[[191,13]]}}}],["lightpushnode=/dns4/nod",{"_index":1357,"t":{"244":{"position":[[464,24]]}}}],["lightpushnode=[light",{"_index":1356,"t":{"244":{"position":[[309,20]]}}}],["lightweight",{"_index":1220,"t":{"212":{"position":[[11,11]]},"250":{"position":[[924,11]]},"310":{"position":[[149,11]]},"344":{"position":[[158,11]]}}}],["limit",{"_index":3,"t":{"2":{"position":[[27,11]]},"50":{"position":[[228,11]]},"70":{"position":[[143,11]]},"81":{"position":[[72,12]]},"115":{"position":[[1784,12]]},"172":{"position":[[392,5],[484,5]]},"268":{"position":[[186,7],[248,6]]},"280":{"position":[[755,7]]},"292":{"position":[[73,7],[347,7]]},"296":{"position":[[293,7]]},"300":{"position":[[87,7]]},"308":{"position":[[60,5],[153,5]]},"310":{"position":[[245,7]]},"314":{"position":[[57,7]]},"318":{"position":[[1224,8],[1256,8]]},"326":{"position":[[259,7]]},"350":{"position":[[27,7]]},"378":{"position":[[5,5],[93,8]]},"382":{"position":[[9,7]]},"384":{"position":[[63,5],[135,5]]},"392":{"position":[[130,7]]},"398":{"position":[[137,7]]},"404":{"position":[[90,5],[149,7]]},"408":{"position":[[314,12]]},"414":{"position":[[418,5]]},"420":{"position":[[281,8]]},"432":{"position":[[10,5]]},"434":{"position":[[19,7]]},"440":{"position":[[40,5]]},"484":{"position":[[110,5]]},"492":{"position":[[277,5]]},"494":{"position":[[917,8],[994,7],[1396,5]]},"498":{"position":[[2435,7],[2774,5]]},"500":{"position":[[114,8],[301,8],[323,6]]},"502":{"position":[[587,7]]},"504":{"position":[[202,5],[227,5],[450,8],[711,5],[761,7],[2266,8],[2340,11],[3129,6]]},"506":{"position":[[917,5]]},"508":{"position":[[162,6],[201,5],[320,6]]},"511":{"position":[[83,5]]},"519":{"position":[[676,11]]},"536":{"position":[[519,7]]},"548":{"position":[[533,11]]},"554":{"position":[[125,11]]},"568":{"position":[[190,10]]},"576":{"position":[[513,7],[558,10]]},"578":{"position":[[228,10]]},"584":{"position":[[570,8],[2039,12]]},"586":{"position":[[402,6]]}}}],["limitless",{"_index":122,"t":{"10":{"position":[[363,9]]}}}],["line",{"_index":760,"t":{"111":{"position":[[141,4]]},"117":{"position":[[83,4],[314,4]]},"119":{"position":[[51,4],[272,4]]},"121":{"position":[[516,4]]},"123":{"position":[[705,4]]},"150":{"position":[[85,4]]},"192":{"position":[[859,4]]},"216":{"position":[[154,4]]},"498":{"position":[[832,5]]}}}],["link",{"_index":736,"t":{"105":{"position":[[664,4]]},"254":{"position":[[94,4]]},"410":{"position":[[275,7]]},"412":{"position":[[110,7],[364,6],[502,6]]},"418":{"position":[[407,4],[501,4]]},"442":{"position":[[37,5]]},"464":{"position":[[351,6]]},"562":{"position":[[827,5]]},"568":{"position":[[613,6]]},"574":{"position":[[39,5],[182,7]]}}}],["linkabl",{"_index":1730,"t":{"418":{"position":[[284,8]]}}}],["linux",{"_index":694,"t":{"103":{"position":[[319,5]]},"105":{"position":[[169,5]]},"236":{"position":[[287,6],[462,6]]}}}],["list",{"_index":474,"t":{"62":{"position":[[23,4],[478,4]]},"64":{"position":[[204,4],[230,4],[393,4]]},"66":{"position":[[257,4]]},"137":{"position":[[220,4]]},"139":{"position":[[191,4]]},"170":{"position":[[119,4]]},"188":{"position":[[394,4]]},"200":{"position":[[203,4]]},"206":{"position":[[190,4],[366,4],[884,5]]},"280":{"position":[[497,4],[609,4],[780,6],[915,8]]},"296":{"position":[[416,4]]},"448":{"position":[[512,4]]},"468":{"position":[[1096,4]]}}}],["listen",{"_index":293,"t":{"28":{"position":[[769,6]]},"125":{"position":[[152,6]]},"154":{"position":[[258,6],[296,9],[383,9]]},"166":{"position":[[106,9],[163,9]]},"168":{"position":[[123,9],[188,9]]},"172":{"position":[[122,9]]},"176":{"position":[[114,9]]},"192":{"position":[[1652,9]]},"200":{"position":[[832,10]]},"220":{"position":[[611,9]]},"222":{"position":[[183,9]]},"224":{"position":[[40,9],[118,9],[359,9],[474,9]]},"238":{"position":[[286,9],[636,9]]},"240":{"position":[[229,9],[348,9],[793,9],[839,9]]},"320":{"position":[[485,9]]},"358":{"position":[[86,9]]}}}],["listenaddress",{"_index":1238,"t":{"220":{"position":[[248,18],[571,15]]}}}],["litig",{"_index":2545,"t":{"584":{"position":[[277,10],[474,10]]}}}],["live",{"_index":1930,"t":{"474":{"position":[[832,5]]},"486":{"position":[[162,4]]},"552":{"position":[[32,5]]},"560":{"position":[[541,4]]}}}],["ln",{"_index":741,"t":{"105":{"position":[[740,2]]}}}],["load",{"_index":881,"t":{"150":{"position":[[43,5]]},"270":{"position":[[112,6]]},"276":{"position":[[268,4]]},"300":{"position":[[598,4]]},"338":{"position":[[129,4]]}}}],["local",{"_index":389,"t":{"48":{"position":[[57,5]]},"50":{"position":[[499,8]]},"62":{"position":[[383,5],[818,5],[965,8]]},"95":{"position":[[290,5]]},"198":{"position":[[221,8]]},"200":{"position":[[181,7]]},"204":{"position":[[341,5]]},"210":{"position":[[515,5]]},"238":{"position":[[887,5]]},"452":{"position":[[636,5]]},"480":{"position":[[47,5]]},"519":{"position":[[223,7]]},"523":{"position":[[735,8]]},"538":{"position":[[214,7]]},"568":{"position":[[970,5]]}}}],["localhost",{"_index":416,"t":{"50":{"position":[[516,9]]},"166":{"position":[[699,12]]}}}],["locat",{"_index":470,"t":{"60":{"position":[[90,6]]},"192":{"position":[[1798,6]]},"206":{"position":[[379,9]]},"220":{"position":[[161,8]]},"274":{"position":[[101,8],[175,8],[350,8],[716,8]]},"284":{"position":[[171,6]]},"288":{"position":[[35,8]]},"332":{"position":[[136,6]]},"366":{"position":[[30,7]]},"494":{"position":[[1560,9]]}}}],["lock",{"_index":1878,"t":{"458":{"position":[[448,4]]}}}],["log",{"_index":214,"t":{"18":{"position":[[1186,4]]},"42":{"position":[[59,4]]},"44":{"position":[[47,4],[140,4]]},"46":{"position":[[16,4],[112,4],[167,4],[246,4]]},"48":{"position":[[14,4],[230,4],[290,4],[321,4]]},"52":{"position":[[435,3]]},"115":{"position":[[2044,4]]},"123":{"position":[[95,3],[179,7]]},"152":{"position":[[31,3],[72,3],[162,3],[219,4]]},"168":{"position":[[238,7],[266,8]]},"192":{"position":[[634,4],[693,4],[742,4],[1712,4]]},"222":{"position":[[57,4],[229,3]]},"224":{"position":[[13,3],[73,3]]},"226":{"position":[[189,3],[258,3],[838,3],[910,3]]},"270":{"position":[[176,4],[249,4]]}}}],["log(1000)/log(6",{"_index":2405,"t":{"558":{"position":[[1029,16]]}}}],["log(total_nodes)/log(d)=5",{"_index":2330,"t":{"534":{"position":[[492,25]]}}}],["logging.logformat.text",{"_index":893,"t":{"152":{"position":[[173,22]]}}}],["logging.loglevel.info",{"_index":888,"t":{"152":{"position":[[41,21]]}}}],["logic",{"_index":1663,"t":{"362":{"position":[[91,5]]}}}],["logo",{"_index":1754,"t":{"430":{"position":[[135,5],[238,5],[350,8],[417,5]]},"566":{"position":[[75,5],[179,5],[291,8],[368,5]]}}}],["long",{"_index":1271,"t":{"234":{"position":[[278,4]]},"318":{"position":[[804,4],[1064,4]]},"474":{"position":[[827,4]]},"502":{"position":[[232,4]]},"506":{"position":[[146,4]]},"550":{"position":[[721,4]]},"558":{"position":[[1321,4]]}}}],["longer",{"_index":2328,"t":{"534":{"position":[[321,8]]}}}],["look",{"_index":184,"t":{"18":{"position":[[7,4]]},"22":{"position":[[202,4]]},"24":{"position":[[459,4]]},"30":{"position":[[377,4]]},"34":{"position":[[951,4]]},"36":{"position":[[125,4]]},"95":{"position":[[175,4],[1076,4]]},"111":{"position":[[221,4]]},"113":{"position":[[125,4]]},"125":{"position":[[633,4]]},"146":{"position":[[860,4]]},"176":{"position":[[426,4]]},"190":{"position":[[883,4],[1051,4]]},"200":{"position":[[978,4]]},"216":{"position":[[264,4]]},"224":{"position":[[0,4]]},"226":{"position":[[176,4],[825,4],[1559,4]]},"248":{"position":[[266,4]]},"274":{"position":[[987,4]]},"276":{"position":[[407,4]]},"300":{"position":[[238,4]]},"420":{"position":[[607,4]]},"424":{"position":[[86,4],[303,4]]},"426":{"position":[[7,4]]},"506":{"position":[[962,7]]},"525":{"position":[[19,4]]},"570":{"position":[[37,7],[213,7],[549,7]]}}}],["lookup",{"_index":1032,"t":{"172":{"position":[[637,6]]},"282":{"position":[[4,6],[169,6],[320,6]]}}}],["lose",{"_index":2116,"t":{"502":{"position":[[747,6],[1533,6]]}}}],["loss",{"_index":2221,"t":{"519":{"position":[[661,4]]}}}],["lost",{"_index":2220,"t":{"519":{"position":[[612,4],[930,4]]},"576":{"position":[[127,4]]}}}],["lot",{"_index":1459,"t":{"276":{"position":[[569,4]]},"322":{"position":[[51,3]]}}}],["low",{"_index":1483,"t":{"280":{"position":[[442,3],[455,3]]},"292":{"position":[[99,3]]},"296":{"position":[[182,3],[195,3]]},"300":{"position":[[448,3]]},"414":{"position":[[343,3]]},"452":{"position":[[559,3]]},"494":{"position":[[475,4]]},"498":{"position":[[355,3],[546,3]]}}}],["lower",{"_index":2401,"t":{"558":{"position":[[487,5]]},"562":{"position":[[678,5],[1836,6],[2129,5]]}}}],["lowest",{"_index":2093,"t":{"498":{"position":[[2240,6],[2308,6],[2450,6]]}}}],["luckili",{"_index":2333,"t":{"536":{"position":[[132,8]]}}}],["m",{"_index":1943,"t":{"478":{"position":[[297,1],[397,2]]},"556":{"position":[[210,1],[284,2]]},"558":{"position":[[1859,1]]}}}],["machin",{"_index":1434,"t":{"272":{"position":[[137,8]]},"523":{"position":[[936,7],[2011,7]]},"525":{"position":[[1066,7]]}}}],["maco",{"_index":695,"t":{"103":{"position":[[329,6]]},"105":{"position":[[175,5]]}}}],["made",{"_index":1444,"t":{"274":{"position":[[666,4]]},"494":{"position":[[1261,5]]},"568":{"position":[[1057,4]]},"572":{"position":[[33,4]]}}}],["magnitud",{"_index":2092,"t":{"498":{"position":[[2183,9],[3022,9]]}}}],["main",{"_index":1567,"t":{"304":{"position":[[301,4]]},"360":{"position":[[98,4]]},"494":{"position":[[912,4]]},"502":{"position":[[936,4]]},"528":{"position":[[156,4],[579,4]]}}}],["main.jsx",{"_index":1047,"t":{"182":{"position":[[7,8]]}}}],["mainli",{"_index":2004,"t":{"494":{"position":[[986,7]]},"560":{"position":[[144,6]]}}}],["maintain",{"_index":967,"t":{"158":{"position":[[1163,8]]},"212":{"position":[[105,8]]},"236":{"position":[[86,8]]},"376":{"position":[[155,8]]},"436":{"position":[[128,8]]},"464":{"position":[[880,10]]},"552":{"position":[[63,8]]}}}],["mainten",{"_index":1549,"t":{"296":{"position":[[374,11]]}}}],["major",{"_index":748,"t":{"107":{"position":[[104,5]]},"504":{"position":[[1130,8]]}}}],["make",{"_index":700,"t":{"105":{"position":[[83,5]]},"109":{"position":[[24,4],[49,4],[121,4],[179,4]]},"113":{"position":[[24,4]]},"198":{"position":[[348,4]]},"266":{"position":[[236,4]]},"304":{"position":[[191,4]]},"312":{"position":[[75,6]]},"406":{"position":[[114,6],[153,5],[445,5]]},"418":{"position":[[237,6]]},"434":{"position":[[138,6]]},"513":{"position":[[178,5]]},"521":{"position":[[433,4]]},"525":{"position":[[1462,6],[1569,6],[1840,6]]},"568":{"position":[[367,4],[716,4]]},"584":{"position":[[97,4],[953,7]]}}}],["malici",{"_index":1697,"t":{"406":{"position":[[474,9]]}}}],["manag",{"_index":138,"t":{"14":{"position":[[59,8]]},"16":{"position":[[561,8]]},"18":{"position":[[1232,6],[1278,6]]},"36":{"position":[[38,6]]},"38":{"position":[[145,6]]},"40":{"position":[[1104,7]]},"79":{"position":[[262,10]]},"87":{"position":[[100,8]]},"115":{"position":[[2143,6],[2353,6]]},"158":{"position":[[441,11]]},"180":{"position":[[377,8]]},"336":{"position":[[68,10]]}}}],["mani",{"_index":521,"t":{"73":{"position":[[184,4]]},"306":{"position":[[350,4]]},"374":{"position":[[191,4]]},"380":{"position":[[213,4]]},"414":{"position":[[89,4]]},"458":{"position":[[362,4]]}}}],["manner",{"_index":2398,"t":{"556":{"position":[[429,7]]},"584":{"position":[[388,7]]}}}],["manual",{"_index":2250,"t":{"523":{"position":[[872,6],[1947,6]]}}}],["map",{"_index":1186,"t":{"200":{"position":[[765,8]]}}}],["map(async",{"_index":839,"t":{"139":{"position":[[600,10]]}}}],["margin",{"_index":1102,"t":{"184":{"position":[[1965,7],[2214,6],[2398,6]]}}}],["market",{"_index":2497,"t":{"570":{"position":[[181,7],[620,6]]}}}],["massiv",{"_index":2156,"t":{"504":{"position":[[1834,9]]}}}],["master",{"_index":746,"t":{"107":{"position":[[70,7]]}}}],["match",{"_index":424,"t":{"50":{"position":[[728,5]]},"294":{"position":[[588,5],[983,8],[1095,5]]},"462":{"position":[[885,5]]},"466":{"position":[[329,7]]}}}],["math",{"_index":2177,"t":{"506":{"position":[[384,4]]}}}],["matrix",{"_index":1831,"t":{"452":{"position":[[54,7]]}}}],["matter",{"_index":2320,"t":{"532":{"position":[[51,6]]},"546":{"position":[[330,6]]},"558":{"position":[[1102,6]]},"568":{"position":[[1475,7]]},"570":{"position":[[437,7],[1123,7]]}}}],["max",{"_index":924,"t":{"154":{"position":[[710,3],[774,3]]},"162":{"position":[[363,3],[466,3]]},"506":{"position":[[614,4],[706,4],[758,4]]}}}],["maximum",{"_index":926,"t":{"154":{"position":[[729,7],[790,7],[848,7]]},"162":{"position":[[387,7],[484,7]]},"172":{"position":[[401,7],[492,7]]},"492":{"position":[[33,7],[109,7],[239,7]]},"494":{"position":[[1406,7],[1589,7]]},"498":{"position":[[69,7]]},"502":{"position":[[1033,7]]},"504":{"position":[[973,7],[1455,7],[1531,7],[1576,7],[2215,7]]},"506":{"position":[[887,7]]},"519":{"position":[[0,7],[444,7],[1461,7]]},"558":{"position":[[891,7]]},"568":{"position":[[669,7]]},"576":{"position":[[600,7]]}}}],["mb/gb",{"_index":1279,"t":{"234":{"position":[[543,6]]}}}],["mbits/sec",{"_index":2188,"t":{"506":{"position":[[822,10]]}}}],["mbp",{"_index":1983,"t":{"492":{"position":[[56,4],[289,4]]},"494":{"position":[[960,4],[1484,5],[1610,4]]},"496":{"position":[[93,4],[332,5],[428,4],[489,6],[503,6],[734,6],[755,6],[829,4],[844,4],[859,4]]},"498":{"position":[[1993,4],[2302,5],[2368,5],[2572,5],[2786,4]]},"502":{"position":[[1220,4],[1423,5],[1662,6]]}}}],["mbytes/",{"_index":2152,"t":{"504":{"position":[[1478,8],[1657,8],[1730,8]]}}}],["mbytes/sec",{"_index":2186,"t":{"506":{"position":[[806,10]]}}}],["mbytes/second",{"_index":2145,"t":{"504":{"position":[[1047,14]]}}}],["mean",{"_index":374,"t":{"40":{"position":[[1012,4]]},"294":{"position":[[140,5]]},"412":{"position":[[10,5]]},"438":{"position":[[197,5]]},"498":{"position":[[1367,7],[1484,7]]},"504":{"position":[[3215,7]]},"521":{"position":[[52,5]]},"532":{"position":[[228,5]]},"556":{"position":[[573,5]]},"564":{"position":[[375,5]]},"584":{"position":[[43,7]]},"586":{"position":[[760,4]]}}}],["meant",{"_index":2083,"t":{"498":{"position":[[1869,5]]}}}],["measur",{"_index":1728,"t":{"416":{"position":[[149,8]]},"432":{"position":[[803,8]]},"436":{"position":[[101,8]]},"486":{"position":[[105,7]]},"521":{"position":[[769,8]]},"556":{"position":[[716,8]]},"558":{"position":[[1406,8]]},"560":{"position":[[182,7],[514,13]]}}}],["mechan",{"_index":468,"t":{"58":{"position":[[198,10]]},"79":{"position":[[416,10]]},"192":{"position":[[1314,10]]},"202":{"position":[[184,10]]},"218":{"position":[[136,11],[363,9],[452,9],[668,10]]},"230":{"position":[[136,11]]},"276":{"position":[[55,9]]},"284":{"position":[[146,9],[961,11]]},"288":{"position":[[135,11],[187,10]]},"290":{"position":[[313,9]]},"324":{"position":[[28,10]]},"338":{"position":[[27,9]]},"340":{"position":[[34,9]]},"368":{"position":[[34,9]]},"390":{"position":[[25,9]]},"400":{"position":[[117,10]]},"414":{"position":[[226,9]]},"460":{"position":[[185,11]]},"468":{"position":[[1170,10]]},"474":{"position":[[1084,10]]},"478":{"position":[[975,9]]},"528":{"position":[[53,9]]}}}],["media",{"_index":776,"t":{"115":{"position":[[2536,5],[2603,5]]}}}],["median",{"_index":2021,"t":{"496":{"position":[[287,6],[718,6],[741,6]]},"560":{"position":[[637,6]]}}}],["meet",{"_index":1366,"t":{"248":{"position":[[225,4]]},"498":{"position":[[1208,4],[1544,7],[1608,7]]},"584":{"position":[[305,5]]}}}],["member",{"_index":678,"t":{"101":{"position":[[577,7]]},"318":{"position":[[1636,7]]},"528":{"position":[[906,7]]},"538":{"position":[[257,7],[344,7],[404,7]]}}}],["membership",{"_index":944,"t":{"158":{"position":[[307,10],[772,10]]},"262":{"position":[[173,10]]},"268":{"position":[[8,10],[283,10],[476,11]]},"270":{"position":[[98,10]]},"424":{"position":[[217,10],[499,11]]},"504":{"position":[[165,11],[344,10],[665,11],[731,11],[917,11],[1556,11],[1608,12],[1677,12],[2644,10],[2882,10],[3048,10]]},"506":{"position":[[273,10],[423,11],[444,10]]},"508":{"position":[[354,12]]},"528":{"position":[[367,10],[488,11]]}}}],["memori",{"_index":1286,"t":{"234":{"position":[[897,6]]},"382":{"position":[[110,7]]},"494":{"position":[[584,7]]},"502":{"position":[[1726,7]]},"530":{"position":[[366,6]]},"540":{"position":[[70,6]]}}}],["menduist",{"_index":2419,"t":{"560":{"position":[[250,9]]}}}],["mention",{"_index":2117,"t":{"502":{"position":[[836,7]]}}}],["merchant",{"_index":2471,"t":{"568":{"position":[[219,16]]}}}],["merg",{"_index":673,"t":{"101":{"position":[[489,5]]},"482":{"position":[[93,5]]}}}],["merkl",{"_index":961,"t":{"158":{"position":[[1071,6]]}}}],["mesh",{"_index":1454,"t":{"276":{"position":[[384,4]]},"284":{"position":[[368,5],[418,5]]},"560":{"position":[[237,5]]}}}],["messag",{"_index":148,"t":{"16":{"position":[[24,7],[142,7]]},"18":{"position":[[152,8],[219,8],[294,8],[368,8],[449,8],[547,8]]},"22":{"position":[[107,8],[159,8]]},"28":{"position":[[57,7],[235,7],[411,8],[520,7],[569,8],[656,8],[747,8]]},"30":{"position":[[26,7],[67,7],[130,7]]},"32":{"position":[[8,8],[83,7],[153,7],[250,8],[297,7],[401,7]]},"34":{"position":[[11,8],[78,7],[278,7],[604,8],[734,8],[870,8]]},"36":{"position":[[154,8]]},"38":{"position":[[93,8],[241,7]]},"40":{"position":[[294,8],[574,7]]},"85":{"position":[[114,8],[134,7],[444,7]]},"89":{"position":[[51,7],[325,9],[354,7],[383,7],[505,7],[584,7],[660,8],[685,7],[774,8],[815,7],[847,8],[972,7],[1058,8],[1157,8]]},"91":{"position":[[463,9],[489,7],[538,7],[653,7],[732,7],[811,8],[836,7],[925,8],[963,7],[1016,8],[1134,7],[1218,8],[1317,8],[1545,7]]},"93":{"position":[[0,7],[62,9],[102,8],[189,8],[458,7],[487,7],[871,8],[904,7],[990,7],[1145,8],[1235,7],[1311,8],[1376,8],[1445,8],[1527,7],[1606,8],[1671,8],[1727,8],[2190,7],[2404,8],[2465,7],[2553,8],[2717,7],[2786,7],[3014,7],[3206,7],[3264,7]]},"95":{"position":[[51,7],[1014,8]]},"101":{"position":[[338,7]]},"115":{"position":[[232,7],[382,9],[548,8],[589,8],[672,8],[753,9],[782,7],[879,8],[946,8],[1012,8],[1121,8]]},"125":{"position":[[332,9],[423,8],[450,7]]},"127":{"position":[[98,8]]},"133":{"position":[[41,8],[75,7],[226,7]]},"135":{"position":[[142,9]]},"137":{"position":[[120,8],[291,7],[380,9],[448,9],[772,8]]},"139":{"position":[[90,8],[262,7],[348,9],[456,8],[530,8],[554,8],[778,8]]},"142":{"position":[[213,8],[312,8]]},"144":{"position":[[62,9],[132,8],[252,8],[461,8],[496,8],[758,8],[774,7]]},"146":{"position":[[57,8],[117,8],[294,8],[591,7],[656,7],[720,8],[802,8]]},"150":{"position":[[201,7]]},"158":{"position":[[1196,7]]},"160":{"position":[[133,7],[170,7],[354,7],[449,7],[556,7]]},"162":{"position":[[137,8]]},"164":{"position":[[148,8]]},"166":{"position":[[262,7]]},"184":{"position":[[41,8],[67,9],[417,10],[678,7],[867,7],[1066,7],[1293,9],[1573,11],[1739,7],[1851,7],[2143,8],[2332,8]]},"186":{"position":[[8,8],[373,7],[496,7],[605,8],[648,7]]},"188":{"position":[[11,8],[138,9],[271,8],[313,9],[402,8]]},"190":{"position":[[11,8],[201,9],[337,8],[354,9],[430,8],[472,9],[567,8],[904,8]]},"234":{"position":[[10,7],[151,8],[212,7],[283,8],[712,7],[764,8],[904,7],[1030,7],[1092,7],[1221,8],[1319,7],[1365,7],[1524,8],[1551,7],[1675,8],[1719,9]]},"240":{"position":[[506,7],[1201,7]]},"242":{"position":[[265,8],[454,8]]},"244":{"position":[[268,8],[423,8]]},"248":{"position":[[66,8],[150,8],[203,8]]},"250":{"position":[[317,9],[420,7],[632,9]]},"256":{"position":[[172,9],[290,7],[454,7],[490,7],[614,7]]},"258":{"position":[[124,9],[407,8],[550,8]]},"260":{"position":[[220,9]]},"268":{"position":[[127,8],[218,8],[416,8]]},"270":{"position":[[54,9]]},"274":{"position":[[229,7],[598,8]]},"284":{"position":[[74,7],[460,8]]},"290":{"position":[[98,8],[150,7],[227,8]]},"292":{"position":[[206,9],[257,8],[312,7]]},"294":{"position":[[157,8],[251,8],[343,9],[444,8],[574,8],[661,7],[769,7],[915,8],[974,8],[1081,8]]},"306":{"position":[[89,8],[193,9]]},"308":{"position":[[162,8]]},"310":{"position":[[72,8],[416,9]]},"312":{"position":[[42,8],[206,8],[403,8]]},"314":{"position":[[167,9],[275,8]]},"316":{"position":[[5,7],[51,8],[205,7],[397,7],[506,8]]},"318":{"position":[[156,9],[219,8],[550,7],[619,9],[684,8],[866,10],[1025,9],[1392,7],[1502,8],[1591,7],[1701,8]]},"334":{"position":[[40,8],[98,7]]},"344":{"position":[[83,8]]},"352":{"position":[[54,8]]},"362":{"position":[[28,7],[97,7],[228,7]]},"372":{"position":[[115,7]]},"374":{"position":[[47,9],[87,8],[131,8]]},"376":{"position":[[189,8]]},"380":{"position":[[98,7]]},"384":{"position":[[144,8]]},"388":{"position":[[56,8],[123,8]]},"394":{"position":[[5,7],[38,8]]},"396":{"position":[[5,7],[181,7]]},"398":{"position":[[58,9]]},"404":{"position":[[170,9]]},"412":{"position":[[270,7],[323,8],[390,9]]},"414":{"position":[[94,9]]},"416":{"position":[[180,7]]},"420":{"position":[[33,9],[95,10],[467,7]]},"448":{"position":[[434,9]]},"462":{"position":[[863,8],[947,8],[1035,7]]},"466":{"position":[[53,8],[303,7],[316,7],[508,9]]},"470":{"position":[[377,8]]},"482":{"position":[[35,9],[183,9],[215,8]]},"484":{"position":[[121,7]]},"488":{"position":[[265,7],[347,8]]},"494":{"position":[[289,9]]},"500":{"position":[[332,7]]},"502":{"position":[[754,8],[815,9],[1250,8],[1540,9]]},"504":{"position":[[260,7],[274,7],[501,7],[798,7],[937,8],[1247,8],[1584,7],[1630,7],[1700,7],[2017,7],[2277,7],[2370,7],[2682,8],[2766,8],[2842,9],[2930,9],[3086,8],[3179,8],[3245,8],[3388,8]]},"506":{"position":[[119,8],[484,7],[577,8]]},"508":{"position":[[209,7],[263,8]]},"511":{"position":[[58,8],[146,7],[237,8]]},"513":{"position":[[48,7]]},"519":{"position":[[161,8],[271,7],[381,9],[599,8],[653,7],[779,8],[916,8],[950,7],[1031,8]]},"523":{"position":[[219,8],[428,8]]},"525":{"position":[[310,8],[452,7],[1426,8],[1533,8],[1803,8]]},"528":{"position":[[395,7],[722,8],[786,8]]},"532":{"position":[[74,8],[208,7],[267,8],[476,8]]},"534":{"position":[[172,7],[302,7],[413,8]]},"536":{"position":[[473,8]]},"538":{"position":[[304,9]]},"540":{"position":[[180,8]]},"554":{"position":[[77,7],[182,7],[262,7],[318,8],[416,7],[485,7],[558,8]]},"556":{"position":[[86,8],[166,8],[202,7],[339,8],[480,8],[586,7],[681,7],[779,7],[886,7],[1009,7]]},"558":{"position":[[17,7],[187,7],[391,7],[580,7],[683,7],[921,7],[1134,8],[1290,7],[1465,9],[1490,8],[1639,7],[1654,7],[1705,8],[1758,7],[1851,7],[1946,7],[2094,7]]},"560":{"position":[[73,7],[804,8],[855,9]]},"562":{"position":[[31,7],[167,7],[372,8],[783,7],[1062,8],[1207,8],[1518,7],[1554,7],[1599,9],[1683,9],[2179,7]]}}}],["message'",{"_index":1601,"t":{"318":{"position":[[750,9]]}}}],["message/10",{"_index":2140,"t":{"504":{"position":[[779,10]]}}}],["message/payload",{"_index":827,"t":{"137":{"position":[[540,15]]},"139":{"position":[[655,15]]}}}],["message/proto",{"_index":1376,"t":{"250":{"position":[[752,13]]}}}],["messageindex\\\"\\ndetail",{"_index":2291,"t":{"525":{"position":[[661,25]]}}}],["messageobj",{"_index":334,"t":{"34":{"position":[[334,10],[382,10]]}}}],["messages.map((messag",{"_index":1085,"t":{"184":{"position":[[1224,23]]}}}],["messages.push(wakumessag",{"_index":852,"t":{"144":{"position":[[303,27]]}}}],["messages/minut",{"_index":2339,"t":{"536":{"position":[[487,16]]}}}],["messages/sec",{"_index":2143,"t":{"504":{"position":[[1016,12]]}}}],["messages[messages.length",{"_index":855,"t":{"144":{"position":[[645,24]]}}}],["messagespromis",{"_index":835,"t":{"139":{"position":[[482,16]]}}}],["meta",{"_index":1593,"t":{"316":{"position":[[238,4]]}}}],["metadata",{"_index":1364,"t":{"248":{"position":[[19,8]]},"394":{"position":[[110,8]]}}}],["metal",{"_index":2254,"t":{"523":{"position":[[944,6],[2019,6]]},"525":{"position":[[1074,6]]}}}],["method",{"_index":266,"t":{"24":{"position":[[444,7],[526,7]]},"60":{"position":[[56,6],[226,6]]},"79":{"position":[[221,7]]},"85":{"position":[[161,8],[270,6],[471,8]]},"89":{"position":[[1326,7]]},"91":{"position":[[1480,8]]},"93":{"position":[[352,7],[3129,7]]},"95":{"position":[[1060,8]]},"99":{"position":[[63,8]]},"111":{"position":[[341,7]]},"115":{"position":[[1066,8],[1492,6]]},"117":{"position":[[66,8],[265,6]]},"119":{"position":[[86,8]]},"121":{"position":[[477,6]]},"123":{"position":[[666,6]]},"137":{"position":[[73,6],[310,8]]},"139":{"position":[[281,8]]},"154":{"position":[[460,6]]},"176":{"position":[[457,7]]},"186":{"position":[[282,6]]},"192":{"position":[[776,7],[969,7]]},"216":{"position":[[295,7]]},"238":{"position":[[32,6]]},"280":{"position":[[322,6]]},"318":{"position":[[383,6],[577,7]]},"332":{"position":[[109,7]]},"360":{"position":[[117,6]]},"362":{"position":[[202,7]]},"396":{"position":[[169,7]]},"404":{"position":[[131,7],[377,6]]},"460":{"position":[[98,7]]},"476":{"position":[[17,7]]},"584":{"position":[[1602,7]]}}}],["metric",{"_index":55,"t":{"4":{"position":[[362,7]]},"123":{"position":[[171,7]]},"168":{"position":[[31,7],[63,7],[90,7],[148,7],[163,7],[215,7],[230,7],[258,7]]},"260":{"position":[[238,7]]},"270":{"position":[[80,8]]},"272":{"position":[[75,7]]},"486":{"position":[[52,7]]},"540":{"position":[[151,7]]}}}],["microsoft",{"_index":1227,"t":{"214":{"position":[[914,9]]}}}],["migrat",{"_index":992,"t":{"160":{"position":[[567,9],[598,9]]},"420":{"position":[[866,7]]}}}],["million",{"_index":2238,"t":{"521":{"position":[[233,7]]}}}],["mind",{"_index":511,"t":{"70":{"position":[[185,5]]},"252":{"position":[[121,5]]}}}],["mine",{"_index":1868,"t":{"458":{"position":[[133,5]]}}}],["miner",{"_index":1867,"t":{"458":{"position":[[93,6],[168,6]]},"464":{"position":[[459,6]]}}}],["mini",{"_index":2324,"t":{"532":{"position":[[381,4]]}}}],["minim",{"_index":171,"t":{"16":{"position":[[384,9]]},"448":{"position":[[459,7]]},"550":{"position":[[545,7]]}}}],["minimum",{"_index":691,"t":{"103":{"position":[[246,7]]}}}],["minor",{"_index":2354,"t":{"540":{"position":[[159,5]]},"560":{"position":[[771,5]]}}}],["minut",{"_index":1000,"t":{"162":{"position":[[248,7]]},"538":{"position":[[422,7]]}}}],["misbehav",{"_index":1843,"t":{"452":{"position":[[274,11]]}}}],["misbehaviour",{"_index":1880,"t":{"458":{"position":[[532,13]]}}}],["miss",{"_index":818,"t":{"135":{"position":[[135,6]]},"312":{"position":[[199,6]]},"388":{"position":[[116,6]]},"452":{"position":[[580,4]]}}}],["mitig",{"_index":1691,"t":{"406":{"position":[[219,10]]}}}],["mkdir",{"_index":739,"t":{"105":{"position":[[710,5]]}}}],["mobil",{"_index":96,"t":{"8":{"position":[[40,6],[97,6]]},"288":{"position":[[315,6]]},"354":{"position":[[192,6]]},"498":{"position":[[1751,7]]}}}],["model",{"_index":1698,"t":{"406":{"position":[[506,5]]},"408":{"position":[[140,6]]},"476":{"position":[[100,5]]}}}],["modern",{"_index":393,"t":{"48":{"position":[[122,6]]}}}],["modif",{"_index":2103,"t":{"498":{"position":[[2957,14]]},"500":{"position":[[216,13]]},"560":{"position":[[777,12]]}}}],["modifi",{"_index":388,"t":{"48":{"position":[[46,6]]},"93":{"position":[[2678,6]]},"184":{"position":[[77,6],[1890,6]]},"186":{"position":[[48,6]]},"280":{"position":[[513,9]]},"296":{"position":[[430,9]]},"444":{"position":[[7,6]]},"504":{"position":[[2482,9]]},"560":{"position":[[127,8]]},"572":{"position":[[168,6]]},"580":{"position":[[7,6]]},"586":{"position":[[386,7]]}}}],["modular",{"_index":1517,"t":{"288":{"position":[[81,7]]},"304":{"position":[[13,7]]},"348":{"position":[[12,7]]},"462":{"position":[[49,7]]}}}],["monetari",{"_index":1834,"t":{"452":{"position":[[85,8],[151,8],[192,8]]},"456":{"position":[[337,8]]},"458":{"position":[[54,8],[297,8],[411,8]]},"464":{"position":[[221,8],[289,8],[674,8],[725,8]]}}}],["money",{"_index":1949,"t":{"478":{"position":[[645,6]]}}}],["monitor",{"_index":1159,"t":{"194":{"position":[[132,10]]},"212":{"position":[[93,7]]},"260":{"position":[[297,7],[369,8]]},"272":{"position":[[46,10]]}}}],["more",{"_index":267,"t":{"24":{"position":[[521,4]]},"81":{"position":[[91,4]]},"111":{"position":[[188,4]]},"115":{"position":[[500,5]]},"139":{"position":[[45,4]]},"190":{"position":[[1163,5]]},"218":{"position":[[85,4]]},"230":{"position":[[85,4]]},"248":{"position":[[314,5]]},"258":{"position":[[459,4]]},"276":{"position":[[449,5]]},"288":{"position":[[361,5]]},"300":{"position":[[287,5]]},"308":{"position":[[320,4]]},"318":{"position":[[1497,4]]},"372":{"position":[[178,5]]},"404":{"position":[[290,4]]},"406":{"position":[[719,4],[807,4]]},"420":{"position":[[535,4]]},"422":{"position":[[420,4]]},"464":{"position":[[561,4]]},"474":{"position":[[773,4],[807,4],[856,4],[1129,4]]},"476":{"position":[[4,4]]},"478":{"position":[[837,4]]},"480":{"position":[[9,4]]},"498":{"position":[[370,4]]},"504":{"position":[[3113,4]]},"506":{"position":[[191,4]]},"513":{"position":[[295,4]]},"519":{"position":[[1162,4]]},"523":{"position":[[278,4],[1441,4],[2202,4],[2541,4],[2817,4]]},"525":{"position":[[1634,4],[1700,4],[1911,4]]},"558":{"position":[[289,4],[1503,4],[1609,4]]},"562":{"position":[[745,4],[981,4],[2373,4]]}}}],["moreov",{"_index":1860,"t":{"456":{"position":[[253,9]]},"474":{"position":[[1095,9]]}}}],["mostli",{"_index":1530,"t":{"292":{"position":[[116,6]]},"326":{"position":[[235,6]]},"354":{"position":[[0,6]]},"498":{"position":[[935,6]]}}}],["motiv",{"_index":1222,"t":{"212":{"position":[[246,12]]}}}],["mount",{"_index":2205,"t":{"513":{"position":[[226,7]]},"519":{"position":[[96,8]]}}}],["move",{"_index":1616,"t":{"320":{"position":[[16,4]]}}}],["mpb",{"_index":2087,"t":{"498":{"position":[[2025,5],[2461,5]]}}}],["mpt=ipt_1+ipt_2+ipt_3+ipt_4",{"_index":2412,"t":{"558":{"position":[[1971,27]]}}}],["ms",{"_index":2394,"t":{"554":{"position":[[383,3]]},"562":{"position":[[1113,3],[1233,3],[1318,3]]}}}],["msg",{"_index":840,"t":{"139":{"position":[[626,3]]},"504":{"position":[[2435,3],[2455,3]]}}}],["msg/day",{"_index":2175,"t":{"506":{"position":[[300,8],[476,7],[1086,8]]}}}],["msg/sec",{"_index":2180,"t":{"506":{"position":[[694,7],[714,7]]}}}],["msg1",{"_index":1538,"t":{"294":{"position":[[382,4],[638,4],[752,5],[859,4],[1054,4]]}}}],["msgs/sec",{"_index":2227,"t":{"519":{"position":[[1138,9],[1224,8]]}}}],["mu",{"_index":2438,"t":{"562":{"position":[[304,2]]}}}],["much",{"_index":1859,"t":{"456":{"position":[[231,4]]},"504":{"position":[[2717,5]]},"519":{"position":[[1157,4]]},"523":{"position":[[3015,4]]},"534":{"position":[[385,4]]}}}],["multiaddr",{"_index":446,"t":{"52":{"position":[[209,9]]},"56":{"position":[[114,9]]},"62":{"position":[[31,9],[290,13]]},"154":{"position":[[559,9],[651,9]]},"156":{"position":[[89,10],[182,10]]},"158":{"position":[[1287,9]]},"162":{"position":[[95,9]]},"164":{"position":[[104,9]]},"174":{"position":[[139,9]]},"204":{"position":[[213,9],[247,9]]},"210":{"position":[[200,9],[340,9]]},"232":{"position":[[167,10],[550,9]]},"234":{"position":[[1609,10]]},"236":{"position":[[71,11]]},"242":{"position":[[332,10]]},"244":{"position":[[340,10]]},"246":{"position":[[140,9],[163,9],[206,10],[243,9],[317,9],[436,9]]},"280":{"position":[[257,10]]},"302":{"position":[[68,9],[288,11]]}}}],["multiaddr=[multiaddr",{"_index":1363,"t":{"246":{"position":[[271,20]]}}}],["multiaddress",{"_index":921,"t":{"154":{"position":[[578,14],[695,14]]},"160":{"position":[[93,12]]}}}],["multipl",{"_index":62,"t":{"6":{"position":[[23,8]]},"202":{"position":[[160,8]]},"204":{"position":[[117,8]]},"206":{"position":[[495,8]]},"208":{"position":[[249,8]]},"214":{"position":[[62,8]]},"218":{"position":[[112,8],[644,8]]},"230":{"position":[[112,8]]},"256":{"position":[[191,8]]},"258":{"position":[[377,8]]},"284":{"position":[[937,8]]},"292":{"position":[[145,8]]},"320":{"position":[[284,8]]},"466":{"position":[[213,8]]},"470":{"position":[[317,8]]},"482":{"position":[[72,8]]},"494":{"position":[[380,8]]},"504":{"position":[[3379,8]]},"519":{"position":[[355,8]]},"536":{"position":[[454,8]]},"556":{"position":[[605,8]]},"558":{"position":[[599,8]]}}}],["multipli",{"_index":2120,"t":{"502":{"position":[[1270,10]]}}}],["mvp",{"_index":2380,"t":{"550":{"position":[[38,3],[334,4]]}}}],["my_private_key.pem",{"_index":1313,"t":{"236":{"position":[[683,18],[747,18]]}}}],["n",{"_index":1441,"t":{"274":{"position":[[483,1]]},"478":{"position":[[228,2],[394,2]]},"519":{"position":[[105,3]]},"525":{"position":[[951,1]]}}}],["n1",{"_index":2410,"t":{"558":{"position":[[1891,2]]}}}],["n5",{"_index":2411,"t":{"558":{"position":[[1909,2]]}}}],["n_1...n_i",{"_index":2397,"t":{"556":{"position":[[249,9]]}}}],["naiv",{"_index":2151,"t":{"504":{"position":[[1332,5]]}}}],["name",{"_index":426,"t":{"50":{"position":[[745,5]]},"64":{"position":[[446,7]]},"119":{"position":[[175,5],[301,4]]},"121":{"position":[[78,4]]},"150":{"position":[[0,4]]},"152":{"position":[[0,4]]},"154":{"position":[[0,4]]},"156":{"position":[[0,4],[110,4],[149,4],[242,4],[258,4]]},"158":{"position":[[0,4]]},"160":{"position":[[0,4]]},"162":{"position":[[0,4]]},"164":{"position":[[0,4]]},"166":{"position":[[0,4]]},"168":{"position":[[0,4]]},"170":{"position":[[0,4],[173,4],[212,4]]},"172":{"position":[[0,4]]},"174":{"position":[[0,4]]},"176":{"position":[[0,4]]},"206":{"position":[[275,4],[403,4],[431,4],[508,4],[616,5],[640,4],[657,4],[708,4],[1105,4],[1143,4]]},"232":{"position":[[34,4],[112,4],[248,5],[287,4],[444,4],[584,5],[744,4],[851,4],[912,4]]},"236":{"position":[[663,4]]},"246":{"position":[[385,4]]},"250":{"position":[[125,5],[150,4],[341,5],[360,4]]},"280":{"position":[[144,5],[376,4],[534,5],[649,5],[719,5]]},"290":{"position":[[22,4]]},"340":{"position":[[116,5]]},"502":{"position":[[118,4]]}}}],["name=[domain",{"_index":1267,"t":{"232":{"position":[[235,12]]}}}],["name=nwakunode.com",{"_index":1268,"t":{"232":{"position":[[371,18]]}}}],["name}/{encod",{"_index":1368,"t":{"250":{"position":[[96,16]]}}}],["name}/{version}/{cont",{"_index":1367,"t":{"250":{"position":[[65,24]]}}}],["napkin",{"_index":2176,"t":{"506":{"position":[[377,6]]}}}],["nascent",{"_index":2356,"t":{"542":{"position":[[23,7]]}}}],["nat",{"_index":913,"t":{"154":{"position":[[444,3]]},"200":{"position":[[603,4]]},"246":{"position":[[365,3]]}}}],["nat=ani",{"_index":1176,"t":{"200":{"position":[[610,7]]}}}],["nat=extip:[your",{"_index":1174,"t":{"200":{"position":[[550,15]]}}}],["nativ",{"_index":83,"t":{"6":{"position":[[421,6]]},"12":{"position":[[84,7],[125,6]]},"50":{"position":[[15,6]]},"178":{"position":[[84,7],[125,6]]},"458":{"position":[[47,6],[464,6]]},"464":{"position":[[29,6]]}}}],["natur",{"_index":539,"t":{"79":{"position":[[307,7]]},"584":{"position":[[908,6]]}}}],["nearest",{"_index":2019,"t":{"496":{"position":[[256,7]]}}}],["necessari",{"_index":1418,"t":{"266":{"position":[[245,9]]},"464":{"position":[[814,9]]},"550":{"position":[[436,9],[574,9]]}}}],["need",{"_index":435,"t":{"50":{"position":[[956,4]]},"73":{"position":[[229,4]]},"95":{"position":[[332,4]]},"105":{"position":[[20,4]]},"186":{"position":[[40,4]]},"188":{"position":[[43,4]]},"190":{"position":[[38,4]]},"212":{"position":[[239,6]]},"258":{"position":[[568,6]]},"268":{"position":[[451,4]]},"280":{"position":[[556,4]]},"432":{"position":[[321,4],[418,6]]},"448":{"position":[[140,5]]},"494":{"position":[[243,4]]},"502":{"position":[[1614,5]]},"504":{"position":[[639,4]]},"506":{"position":[[25,4]]},"511":{"position":[[435,6]]},"532":{"position":[[284,4]]},"538":{"position":[[544,4]]},"544":{"position":[[219,5],[424,6]]},"558":{"position":[[2136,4],[2199,4]]}}}],["neglig",{"_index":2348,"t":{"538":{"position":[[376,11]]},"576":{"position":[[54,11]]}}}],["negoti",{"_index":1729,"t":{"416":{"position":[[325,11]]},"468":{"position":[[127,11],[489,12]]},"470":{"position":[[211,11],[287,10]]},"472":{"position":[[217,11]]}}}],["neighbor",{"_index":1850,"t":{"452":{"position":[[528,9],[672,10]]}}}],["neighbour",{"_index":1215,"t":{"210":{"position":[[948,12]]}}}],["neighbourhood",{"_index":1557,"t":{"300":{"position":[[427,14]]}}}],["netflix",{"_index":2025,"t":{"496":{"position":[[437,7]]},"498":{"position":[[2119,7]]}}}],["network",{"_index":32,"t":{"4":{"position":[[9,7],[95,8],[237,7],[505,7]]},"10":{"position":[[110,7]]},"18":{"position":[[1472,8],[1598,7]]},"24":{"position":[[85,8]]},"26":{"position":[[92,8]]},"28":{"position":[[599,7]]},"32":{"position":[[31,7]]},"34":{"position":[[893,7]]},"38":{"position":[[71,8]]},"40":{"position":[[953,7]]},"50":{"position":[[154,7]]},"56":{"position":[[22,10]]},"58":{"position":[[113,7],[371,8],[497,7]]},"83":{"position":[[99,7]]},"85":{"position":[[314,8]]},"101":{"position":[[606,7]]},"115":{"position":[[900,8],[1422,7],[2495,8]]},"129":{"position":[[85,8]]},"154":{"position":[[199,7],[613,8]]},"172":{"position":[[250,8]]},"186":{"position":[[153,7],[672,7]]},"202":{"position":[[108,8]]},"210":{"position":[[925,7],[1018,7]]},"212":{"position":[[387,8]]},"218":{"position":[[17,8]]},"226":{"position":[[1543,8]]},"230":{"position":[[17,8]]},"234":{"position":[[44,7]]},"240":{"position":[[61,8]]},"256":{"position":[[40,7]]},"260":{"position":[[192,7]]},"268":{"position":[[50,8],[432,8]]},"274":{"position":[[497,7],[700,8]]},"276":{"position":[[78,8],[336,8]]},"280":{"position":[[389,8]]},"284":{"position":[[197,8],[446,7]]},"286":{"position":[[87,7]]},"288":{"position":[[67,8]]},"290":{"position":[[60,8],[167,8],[247,8]]},"294":{"position":[[91,8],[171,7]]},"300":{"position":[[222,8],[355,7]]},"302":{"position":[[426,8]]},"306":{"position":[[327,7]]},"308":{"position":[[202,8],[277,7]]},"310":{"position":[[197,8]]},"312":{"position":[[66,8],[435,8]]},"314":{"position":[[297,8],[408,7]]},"316":{"position":[[72,8],[477,7]]},"318":{"position":[[427,8],[704,8],[1353,7]]},"320":{"position":[[43,7],[150,7]]},"324":{"position":[[215,8],[298,8]]},"332":{"position":[[63,8],[162,8]]},"338":{"position":[[161,7]]},"342":{"position":[[136,8]]},"344":{"position":[[206,8]]},"346":{"position":[[94,8]]},"348":{"position":[[20,7],[141,7]]},"350":{"position":[[101,8]]},"352":{"position":[[76,7]]},"354":{"position":[[153,8]]},"356":{"position":[[83,7]]},"364":{"position":[[58,7]]},"366":{"position":[[89,8]]},"368":{"position":[[122,8]]},"370":{"position":[[54,7]]},"372":{"position":[[64,7]]},"380":{"position":[[190,7]]},"384":{"position":[[201,7]]},"388":{"position":[[72,8],[157,8]]},"390":{"position":[[17,7]]},"392":{"position":[[258,8]]},"394":{"position":[[59,8]]},"396":{"position":[[114,8]]},"398":{"position":[[9,7],[68,7]]},"406":{"position":[[668,7]]},"416":{"position":[[353,8]]},"420":{"position":[[9,7],[43,7],[555,8],[574,7],[649,7],[893,7]]},"422":{"position":[[82,8],[200,7],[351,8],[467,8]]},"424":{"position":[[552,8]]},"426":{"position":[[108,8]]},"448":{"position":[[68,7]]},"454":{"position":[[40,8]]},"456":{"position":[[23,8]]},"458":{"position":[[80,8]]},"460":{"position":[[35,8]]},"462":{"position":[[125,8],[1056,8]]},"464":{"position":[[106,9],[550,7],[837,7]]},"476":{"position":[[295,7]]},"486":{"position":[[167,8]]},"498":{"position":[[415,7],[443,7],[738,7],[1139,7]]},"500":{"position":[[36,7]]},"502":{"position":[[1171,8],[1583,7]]},"504":{"position":[[1401,7],[1804,7],[1984,7]]},"528":{"position":[[280,7]]},"530":{"position":[[117,7]]},"534":{"position":[[561,7]]},"536":{"position":[[441,7],[600,7]]},"554":{"position":[[102,7],[141,7]]},"558":{"position":[[1066,7]]},"560":{"position":[[481,8]]},"562":{"position":[[109,7]]}}}],["never",{"_index":1944,"t":{"478":{"position":[[372,5]]}}}],["new",{"_index":233,"t":{"20":{"position":[[83,5],[202,3]]},"30":{"position":[[183,3]]},"32":{"position":[[79,3],[149,3]]},"34":{"position":[[600,3]]},"40":{"position":[[290,3]]},"99":{"position":[[13,3]]},"125":{"position":[[127,3]]},"146":{"position":[[188,3],[218,3]]},"184":{"position":[[920,3]]},"186":{"position":[[492,3]]},"190":{"position":[[563,3]]},"200":{"position":[[15,3]]},"236":{"position":[[15,3]]},"294":{"position":[[911,3]]},"444":{"position":[[148,3]]},"478":{"position":[[583,3],[764,3]]},"528":{"position":[[613,3],[731,3],[825,3]]},"552":{"position":[[206,3],[340,3],[400,3]]},"580":{"position":[[174,3]]}}}],["newer",{"_index":167,"t":{"16":{"position":[[350,5]]}}}],["newli",{"_index":1139,"t":{"190":{"position":[[186,5]]},"458":{"position":[[127,5]]}}}],["newseq[protectedtopic](0",{"_index":884,"t":{"150":{"position":[[134,25]]}}}],["next",{"_index":111,"t":{"10":{"position":[[194,4]]},"18":{"position":[[791,4]]},"40":{"position":[[354,5]]},"97":{"position":[[53,4]]},"99":{"position":[[164,5]]},"144":{"position":[[169,4],[745,4]]},"180":{"position":[[286,5]]},"182":{"position":[[579,5]]},"184":{"position":[[1884,5]]},"504":{"position":[[3297,4]]},"513":{"position":[[16,4]]},"519":{"position":[[323,4]]},"523":{"position":[[364,4],[815,4],[1890,4]]}}}],["nightli",{"_index":1224,"t":{"214":{"position":[[586,7],[671,7]]}}}],["nim",{"_index":42,"t":{"4":{"position":[[167,3]]},"6":{"position":[[383,3],[428,3]]},"212":{"position":[[34,3]]},"511":{"position":[[4,3]]},"525":{"position":[[219,3],[1121,3]]}}}],["node",{"_index":31,"t":{"2":{"position":[[396,5]]},"4":{"position":[[80,6],[217,4],[257,4],[344,4],[485,4]]},"10":{"position":[[123,4]]},"18":{"position":[[237,5],[386,5],[855,5],[908,4],[1317,4],[1367,4],[1426,5],[1496,5],[1615,5]]},"22":{"position":[[94,4]]},"24":{"position":[[53,4],[167,4],[178,4],[301,4],[390,4],[481,5],[547,6]]},"26":{"position":[[53,4]]},"36":{"position":[[77,4]]},"40":{"position":[[1148,4]]},"50":{"position":[[1069,4]]},"52":{"position":[[195,4]]},"58":{"position":[[58,4],[180,4],[214,4],[266,4],[325,5],[395,5],[514,5]]},"60":{"position":[[193,4],[239,4]]},"62":{"position":[[58,4],[205,4],[235,4],[332,4],[718,4],[752,4],[850,5]]},"64":{"position":[[15,4],[225,4],[388,4],[464,4],[561,4],[592,4],[735,4],[873,4],[904,4]]},"66":{"position":[[28,4],[494,4],[591,4],[639,4]]},"68":{"position":[[51,4],[193,4],[326,4]]},"85":{"position":[[213,4],[221,4]]},"103":{"position":[[52,4]]},"111":{"position":[[255,4],[322,4]]},"113":{"position":[[137,4]]},"115":{"position":[[1442,6],[1583,5],[1653,5]]},"117":{"position":[[5,5]]},"119":{"position":[[0,4],[234,4]]},"121":{"position":[[0,5],[316,4],[344,4]]},"123":{"position":[[0,5]]},"125":{"position":[[91,4],[131,4],[598,4],[645,4]]},"127":{"position":[[53,4]]},"129":{"position":[[53,4],[167,4],[178,4]]},"131":{"position":[[53,4]]},"135":{"position":[[100,5],[177,5]]},"137":{"position":[[99,5]]},"139":{"position":[[120,5]]},"146":{"position":[[822,4]]},"148":{"position":[[23,4]]},"154":{"position":[[64,4],[84,4],[150,4],[219,4]]},"162":{"position":[[196,4]]},"166":{"position":[[580,4]]},"170":{"position":[[70,5],[114,4]]},"172":{"position":[[73,5],[83,4],[145,4],[180,4],[216,5],[419,5],[510,5]]},"174":{"position":[[129,4]]},"176":{"position":[[372,4],[438,4]]},"182":{"position":[[303,4],[443,4],[610,4],[765,4],[778,5],[819,6],[847,4],[901,4],[952,4]]},"184":{"position":[[615,4],[628,5]]},"186":{"position":[[294,4],[343,5]]},"188":{"position":[[362,5]]},"190":{"position":[[401,5],[521,5]]},"192":{"position":[[21,5],[124,5],[179,4],[314,5],[349,4],[434,5],[509,5],[553,4],[650,4],[688,4],[808,6],[839,5],[950,4],[1052,4],[1087,4],[1134,4],[1259,4],[1349,6],[1429,5],[1577,5],[1647,4],[1754,4],[1810,4]]},"194":{"position":[[60,4]]},"200":{"position":[[230,4],[943,4],[990,4]]},"202":{"position":[[56,4],[148,4]]},"204":{"position":[[40,4],[290,4]]},"206":{"position":[[35,5],[126,4],[185,4],[828,4],[879,4]]},"208":{"position":[[28,5],[115,4],[160,5],[205,5],[465,4],[863,4]]},"210":{"position":[[35,5],[126,4],[183,4],[224,4],[405,5],[459,5],[476,5],[555,4],[640,4],[961,6]]},"212":{"position":[[64,5],[124,5],[370,4],[434,4],[500,4],[585,5]]},"214":{"position":[[9,5],[93,5],[187,4],[271,4],[377,4],[559,4],[759,4]]},"216":{"position":[[251,5],[276,4],[307,4]]},"218":{"position":[[26,5],[211,5],[333,5],[533,5],[572,4],[632,4]]},"220":{"position":[[38,4],[86,4],[117,4],[763,4]]},"222":{"position":[[40,4],[84,4],[143,5]]},"224":{"position":[[144,5]]},"226":{"position":[[8,4],[66,4],[338,5],[586,4],[993,5],[1231,4],[1526,4],[1571,4]]},"228":{"position":[[56,4]]},"230":{"position":[[26,5]]},"232":{"position":[[85,4],[333,5],[398,5],[424,5],[494,5],[926,5]]},"234":{"position":[[268,4],[869,4],[1163,4],[1489,4],[1650,4]]},"236":{"position":[[0,5],[1010,4]]},"238":{"position":[[47,5],[221,4],[416,4],[841,4],[1001,4],[1375,5]]},"240":{"position":[[47,4],[176,4],[998,4],[1145,4]]},"242":{"position":[[228,4],[414,4]]},"244":{"position":[[229,4],[381,4]]},"260":{"position":[[84,4],[178,4],[279,4],[309,5],[404,4]]},"268":{"position":[[114,4]]},"270":{"position":[[27,5],[188,4]]},"272":{"position":[[70,4]]},"274":{"position":[[11,4],[684,4],[936,4],[999,4]]},"276":{"position":[[232,6],[305,5],[374,5]]},"278":{"position":[[72,4]]},"280":{"position":[[39,4],[208,4],[617,5],[787,5]]},"282":{"position":[[151,4],[301,4]]},"284":{"position":[[25,5],[284,4],[736,4]]},"288":{"position":[[50,5]]},"292":{"position":[[336,5]]},"294":{"position":[[287,4],[353,4],[421,4],[522,4],[621,4],[682,4],[692,4],[721,4],[729,4],[807,5],[832,4],[840,4],[867,4],[941,4],[1025,4],[1033,4]]},"296":{"position":[[58,4],[170,5],[254,4],[328,5],[411,4]]},"298":{"position":[[61,4],[122,5]]},"300":{"position":[[171,5],[205,5],[363,5],[513,5],[616,6]]},"302":{"position":[[383,6]]},"306":{"position":[[355,5]]},"310":{"position":[[29,5]]},"312":{"position":[[294,4]]},"314":{"position":[[46,5]]},"318":{"position":[[145,5],[326,4],[334,4],[1447,5]]},"320":{"position":[[345,6],[416,5],[457,5],[524,6],[608,5]]},"324":{"position":[[46,6],[261,4]]},"332":{"position":[[46,4]]},"336":{"position":[[124,6]]},"340":{"position":[[146,4]]},"342":{"position":[[9,4],[77,6],[191,4]]},"344":{"position":[[40,5]]},"350":{"position":[[8,4],[75,5]]},"352":{"position":[[40,5]]},"356":{"position":[[2,4]]},"358":{"position":[[2,4],[141,5]]},"364":{"position":[[23,5]]},"366":{"position":[[25,4]]},"368":{"position":[[63,5],[109,5]]},"370":{"position":[[37,4]]},"372":{"position":[[42,5]]},"380":{"position":[[218,5]]},"392":{"position":[[168,4]]},"406":{"position":[[617,4]]},"418":{"position":[[164,5],[398,4],[492,4],[528,4]]},"420":{"position":[[439,6]]},"422":{"position":[[330,5],[425,4]]},"424":{"position":[[115,4],[170,4]]},"426":{"position":[[91,4],[133,4]]},"448":{"position":[[106,5],[199,4]]},"452":{"position":[[172,4],[217,5],[516,5],[574,5],[645,4],[699,4]]},"462":{"position":[[402,4],[485,4],[591,5],[621,5],[667,4],[683,4]]},"492":{"position":[[154,5]]},"494":{"position":[[69,4],[312,4],[536,5],[834,5],[881,4]]},"498":{"position":[[400,6],[591,5],[642,5],[1197,4],[1501,4],[1534,5],[1598,5]]},"502":{"position":[[323,5],[383,4],[708,4],[1154,5],[1329,4],[1854,4]]},"504":{"position":[[1146,6]]},"508":{"position":[[68,5]]},"511":{"position":[[13,5],[118,5],[276,5]]},"513":{"position":[[264,4]]},"519":{"position":[[38,4],[109,5],[140,5],[209,5],[364,5],[758,5],[1115,4],[1190,4],[1488,4]]},"521":{"position":[[102,4],[163,4],[265,4],[329,6],[347,4],[493,5],[530,5],[706,4]]},"523":{"position":[[102,4],[684,5],[1237,4]]},"525":{"position":[[100,5],[228,5],[1130,5],[1705,6]]},"528":{"position":[[334,6]]},"530":{"position":[[134,5]]},"532":{"position":[[246,4]]},"534":{"position":[[459,5]]},"536":{"position":[[387,6],[588,4],[651,6]]},"540":{"position":[[25,5]]},"554":{"position":[[43,5]]},"556":{"position":[[148,5],[243,5],[325,4],[441,5],[542,5],[640,6],[760,4],[804,4]]},"558":{"position":[[220,6],[321,5],[337,5],[429,4],[522,5],[780,5],[865,5],[953,5],[1084,5],[1115,4],[1175,6],[1217,5],[1392,6],[1535,5],[1689,4],[1886,4],[2057,4]]},"560":{"position":[[720,5]]},"562":{"position":[[581,4],[633,5],[911,4],[1346,5],[1477,4],[1730,6],[1933,4],[2096,4]]}}}],["node'",{"_index":937,"t":{"156":{"position":[[280,6]]},"192":{"position":[[1606,6],[1705,6]]},"220":{"position":[[604,6]]},"232":{"position":[[141,6],[771,6]]},"370":{"position":[[107,6]]},"406":{"position":[[80,6]]},"418":{"position":[[425,6]]},"452":{"position":[[309,6],[384,6]]},"464":{"position":[[367,6]]}}}],["node.filter.createsubscript",{"_index":338,"t":{"34":{"position":[[523,33]]},"40":{"position":[[213,33]]}}}],["node.lightpush.send(eciesencod",{"_index":607,"t":{"93":{"position":[[1952,33]]}}}],["node.lightpush.send(encod",{"_index":326,"t":{"32":{"position":[[432,28]]},"89":{"position":[[716,28]]},"91":{"position":[[867,28]]}}}],["node.lightpush.send(symmetricencod",{"_index":605,"t":{"93":{"position":[[1838,37]]}}}],["node.start",{"_index":260,"t":{"24":{"position":[[242,13]]},"129":{"position":[[242,13]]}}}],["node.stop",{"_index":262,"t":{"24":{"position":[[315,12]]}}}],["node.store.querygenerator([decod",{"_index":834,"t":{"139":{"position":[[403,37]]},"142":{"position":[[520,35]]},"146":{"position":[[495,35]]}}}],["node.store.querywithorderedcallback",{"_index":829,"t":{"137":{"position":[[635,36]]},"144":{"position":[[543,36],[836,36]]}}}],["node.store.querywithorderedcallback([decod",{"_index":568,"t":{"89":{"position":[[1189,46]]},"91":{"position":[[1349,46]]},"142":{"position":[[434,46]]},"146":{"position":[[409,46]]}}}],["node=/ip4/0.0.0.0/tcp/60000/p2p/16uiu2hamlce6zvqcs6kmqqrbbhyojjfyzgr1q3thtsbykzibqkfr",{"_index":1213,"t":{"210":{"position":[[751,85]]}}}],["node=[discv5",{"_index":1206,"t":{"208":{"position":[[342,12],[399,12]]}}}],["node=[p",{"_index":1210,"t":{"210":{"position":[[329,10]]}}}],["node=enr",{"_index":1207,"t":{"208":{"position":[[608,9]]}}}],["node_a",{"_index":2240,"t":{"521":{"position":[[321,7],[671,6]]}}}],["node_b",{"_index":2241,"t":{"521":{"position":[[403,7],[628,6]]}}}],["node_c",{"_index":2243,"t":{"521":{"position":[[499,7]]}}}],["node_d",{"_index":2244,"t":{"521":{"position":[[511,8]]}}}],["node_opt",{"_index":1054,"t":{"182":{"position":[[322,12]]}}}],["node_requir",{"_index":498,"t":{"64":{"position":[[488,17],[679,18],[1016,18]]},"66":{"position":[[518,17],[757,18]]}}}],["nodea",{"_index":2235,"t":{"521":{"position":[[84,6]]}}}],["nodeb",{"_index":2237,"t":{"521":{"position":[[145,6]]}}}],["nodec",{"_index":2239,"t":{"521":{"position":[[247,6]]}}}],["nodej",{"_index":207,"t":{"18":{"position":[[990,6],[1079,6]]},"42":{"position":[[109,6]]},"46":{"position":[[38,7]]},"70":{"position":[[96,6],[258,7]]},"73":{"position":[[54,6],[157,6],[210,7]]},"77":{"position":[[98,6]]},"79":{"position":[[94,7],[169,6],[338,7],[455,6]]},"81":{"position":[[28,6]]},"83":{"position":[[29,6],[119,6]]},"115":{"position":[[1691,6],[1762,6],[1878,6]]}}}],["nodekey",{"_index":903,"t":{"154":{"position":[[207,7]]},"236":{"position":[[157,7]]}}}],["nodekey=286cae9f2990bfc49dafdd3a9e737f56ddba3656e5e427108cef456fb67680e8",{"_index":1322,"t":{"236":{"position":[[1050,72]]}}}],["nodekey=[nod",{"_index":1303,"t":{"236":{"position":[[193,13]]}}}],["nodes=1000",{"_index":2428,"t":{"560":{"position":[[698,11]]}}}],["nois",{"_index":552,"t":{"85":{"position":[[192,5]]},"115":{"position":[[1049,5]]},"318":{"position":[[305,5]]},"400":{"position":[[5,5],[41,5]]},"416":{"position":[[204,5],[278,5]]}}}],["non",{"_index":1864,"t":{"456":{"position":[[333,3]]},"464":{"position":[[585,3]]},"488":{"position":[[333,3]]},"568":{"position":[[274,3]]},"574":{"position":[[419,3]]}}}],["none",{"_index":915,"t":{"154":{"position":[[527,5]]},"160":{"position":[[332,4]]},"234":{"position":[[600,4]]}}}],["nonetheless",{"_index":1794,"t":{"440":{"position":[[117,12]]}}}],["normal",{"_index":2228,"t":{"519":{"position":[[1176,6],[1513,6]]}}}],["north",{"_index":2027,"t":{"496":{"position":[[542,5]]},"498":{"position":[[2678,5]]}}}],["note",{"_index":402,"t":{"50":{"position":[[194,4]]},"117":{"position":[[216,4]]},"274":{"position":[[299,4],[638,4]]},"322":{"position":[[162,7]]},"410":{"position":[[156,4]]},"494":{"position":[[1156,4]]},"496":{"position":[[212,5]]},"498":{"position":[[1588,4],[2901,5]]},"548":{"position":[[317,4]]},"550":{"position":[[339,4],[408,4]]},"558":{"position":[[260,4]]},"560":{"position":[[274,4]]},"562":{"position":[[202,4],[356,5],[1693,4]]},"584":{"position":[[520,4]]}}}],["noth",{"_index":2355,"t":{"540":{"position":[[232,7]]},"550":{"position":[[831,7]]},"568":{"position":[[1628,7]]}}}],["notic",{"_index":890,"t":{"152":{"position":[[133,7]]},"444":{"position":[[81,7]]},"513":{"position":[[156,6]]},"523":{"position":[[658,6],[2125,6],[2464,6],[2740,6],[3480,7],[3741,6]]},"558":{"position":[[1182,6]]},"570":{"position":[[1392,6]]},"580":{"position":[[87,7]]},"584":{"position":[[870,6],[1108,6]]}}}],["notif",{"_index":1373,"t":{"250":{"position":[[601,13]]},"256":{"position":[[147,13],[652,12]]}}}],["notificationpayload",{"_index":1395,"t":{"256":{"position":[[462,19],[632,19]]}}}],["novemb",{"_index":2279,"t":{"523":{"position":[[3828,8]]}}}],["now",{"_index":1559,"t":{"302":{"position":[[339,3]]},"504":{"position":[[133,3]]},"538":{"position":[[35,3]]},"560":{"position":[[918,5]]}}}],["npm",{"_index":139,"t":{"14":{"position":[[68,3],[77,3]]},"16":{"position":[[570,3],[579,3]]},"64":{"position":[[88,3]]},"87":{"position":[[109,3],[118,3]]},"99":{"position":[[72,3]]},"115":{"position":[[107,4]]},"180":{"position":[[160,3],[169,3],[386,3],[395,3]]}}}],["npx",{"_index":647,"t":{"99":{"position":[[81,3],[334,3]]}}}],["ns1.google.com",{"_index":1182,"t":{"200":{"position":[[686,15]]}}}],["nullifi",{"_index":1573,"t":{"308":{"position":[[66,10]]},"318":{"position":[[1233,10],[1265,9]]},"378":{"position":[[11,10]]},"384":{"position":[[69,10]]},"404":{"position":[[96,10]]},"414":{"position":[[424,10]]},"420":{"position":[[290,11]]}}}],["number",{"_index":912,"t":{"154":{"position":[[436,7],[745,6],[806,6]]},"162":{"position":[[395,6],[492,6]]},"258":{"position":[[618,6]]},"296":{"position":[[318,6]]},"318":{"position":[[1691,6]]},"406":{"position":[[129,6]]},"494":{"position":[[1474,6]]},"496":{"position":[[228,7]]},"498":{"position":[[131,7],[310,7],[2232,7],[2912,6]]},"506":{"position":[[979,8]]},"519":{"position":[[452,6]]},"523":{"position":[[452,7]]},"532":{"position":[[466,6]]},"534":{"position":[[335,6]]},"538":{"position":[[319,8]]}}}],["numer",{"_index":1597,"t":{"318":{"position":[[103,8]]}}}],["nutshel",{"_index":1693,"t":{"406":{"position":[[305,9]]}}}],["nwaku",{"_index":41,"t":{"4":{"position":[[161,5],[251,5],[262,5],[338,5],[398,5]]},"6":{"position":[[377,5]]},"10":{"position":[[66,5]]},"18":{"position":[[1226,5]]},"42":{"position":[[179,6]]},"50":{"position":[[0,5]]},"52":{"position":[[189,5]]},"56":{"position":[[333,6]]},"62":{"position":[[844,5]]},"75":{"position":[[128,5]]},"81":{"position":[[137,5]]},"83":{"position":[[53,5]]},"103":{"position":[[46,5],[154,6],[289,6],[296,5]]},"105":{"position":[[9,6]]},"107":{"position":[[166,5]]},"109":{"position":[[10,5]]},"111":{"position":[[0,5],[207,6],[249,5],[264,5],[296,5]]},"113":{"position":[[83,5],[197,5]]},"115":{"position":[[1818,5],[2115,5]]},"125":{"position":[[85,5]]},"154":{"position":[[144,5]]},"192":{"position":[[45,5],[173,5],[343,5],[503,5],[547,5],[644,5],[750,6],[802,5],[833,5],[1046,5],[1343,5],[1423,5],[1600,5]]},"194":{"position":[[54,5],[166,5]]},"198":{"position":[[4,5],[321,5]]},"200":{"position":[[4,5],[261,5],[937,5],[1050,5]]},"202":{"position":[[50,5],[142,5]]},"204":{"position":[[34,5],[284,5]]},"206":{"position":[[29,5],[728,5],[822,5]]},"208":{"position":[[22,5],[459,5],[857,5]]},"210":{"position":[[29,5],[399,5],[549,5],[634,5],[842,5]]},"212":{"position":[[0,5],[130,5],[364,5],[494,5]]},"214":{"position":[[33,5],[47,5],[103,5],[181,5],[216,5],[265,5],[302,5],[553,5],[573,5],[617,5],[773,5],[797,5],[835,5]]},"216":{"position":[[25,5],[245,5]]},"218":{"position":[[97,5],[222,5],[314,5],[411,5],[566,5],[626,5]]},"220":{"position":[[32,5]]},"222":{"position":[[149,5]]},"224":{"position":[[67,5]]},"226":{"position":[[2,5],[252,5],[904,5],[1520,5],[1631,5]]},"228":{"position":[[50,5]]},"230":{"position":[[97,5]]},"232":{"position":[[327,5]]},"234":{"position":[[1157,5],[1421,5],[1644,5]]},"236":{"position":[[1023,6]]},"238":{"position":[[101,5],[835,5],[995,5],[1369,5]]},"240":{"position":[[0,5],[992,5],[1139,5]]},"242":{"position":[[10,5],[138,5],[408,5]]},"244":{"position":[[10,5],[152,5],[375,5]]},"246":{"position":[[117,5]]},"260":{"position":[[0,5],[78,5],[398,5],[414,5]]},"264":{"position":[[55,5]]},"268":{"position":[[108,5]]},"270":{"position":[[21,5],[124,5],[257,5]]},"274":{"position":[[5,5],[80,5],[157,5],[930,5],[1087,5]]},"426":{"position":[[23,5],[85,5]]},"511":{"position":[[19,6],[197,5],[282,5]]},"513":{"position":[[34,5],[197,5],[258,5]]},"521":{"position":[[524,5]]},"523":{"position":[[678,5],[795,5],[1801,5],[1821,5],[3228,5],[3377,5]]},"525":{"position":[[1390,5],[1497,5],[1767,5]]},"528":{"position":[[328,5]]},"536":{"position":[[366,5]]},"554":{"position":[[37,5]]},"556":{"position":[[941,5]]},"560":{"position":[[103,5],[677,5],[749,5]]}}}],["nwaku+postgr",{"_index":2208,"t":{"517":{"position":[[89,14]]}}}],["nwaku+sqlit",{"_index":2209,"t":{"517":{"position":[[108,13]]}}}],["nwakunode.com",{"_index":463,"t":{"56":{"position":[[197,13],[255,14]]},"232":{"position":[[292,14]]}}}],["o",{"_index":1180,"t":{"200":{"position":[[662,1]]}}}],["o.myaddr.l.google.com",{"_index":1181,"t":{"200":{"position":[[664,21]]}}}],["object",{"_index":313,"t":{"32":{"position":[[91,6],[161,6]]},"186":{"position":[[504,6]]},"300":{"position":[[12,9]]},"440":{"position":[[831,6]]}}}],["oblig",{"_index":1779,"t":{"438":{"position":[[7,7]]},"568":{"position":[[1222,10]]}}}],["observ",{"_index":2392,"t":{"554":{"position":[[301,7],[399,7]]}}}],["obtain",{"_index":1695,"t":{"406":{"position":[[354,6]]},"418":{"position":[[256,8]]},"424":{"position":[[352,6]]},"426":{"position":[[153,8]]},"523":{"position":[[833,8],[1908,8]]},"525":{"position":[[1036,8]]}}}],["occasion",{"_index":348,"t":{"38":{"position":[[0,13]]},"354":{"position":[[115,12]]}}}],["occur",{"_index":959,"t":{"158":{"position":[[965,5]]},"182":{"position":[[887,6]]},"438":{"position":[[669,5]]}}}],["oceania",{"_index":2051,"t":{"496":{"position":[[657,7]]},"498":{"position":[[2737,7]]}}}],["oct",{"_index":2024,"t":{"496":{"position":[[372,3]]}}}],["off",{"_index":1563,"t":{"304":{"position":[[108,4]]}}}],["offer",{"_index":1451,"t":{"276":{"position":[[194,6]]},"286":{"position":[[43,6]]},"408":{"position":[[23,5]]},"416":{"position":[[227,5]]},"504":{"position":[[104,6]]},"568":{"position":[[1685,5],[1725,5]]}}}],["offic",{"_index":1756,"t":{"430":{"position":[[190,6]]},"566":{"position":[[130,6]]}}}],["offlin",{"_index":1531,"t":{"292":{"position":[[123,7]]},"312":{"position":[[156,7]]},"354":{"position":[[7,7],[64,7]]},"388":{"position":[[90,7]]}}}],["offline/resourc",{"_index":1638,"t":{"326":{"position":[[242,16]]}}}],["older",{"_index":166,"t":{"16":{"position":[[340,5]]}}}],["oldest",{"_index":842,"t":{"139":{"position":[[771,6]]},"142":{"position":[[132,6],[305,6]]}}}],["omit",{"_index":859,"t":{"144":{"position":[[953,4]]},"206":{"position":[[685,4]]},"234":{"position":[[645,4],[926,4]]},"238":{"position":[[309,4]]},"240":{"position":[[278,4],[394,4],[528,4]]},"242":{"position":[[709,4]]},"562":{"position":[[409,8]]}}}],["on",{"_index":225,"t":{"18":{"position":[[1446,4]]},"58":{"position":[[345,4]]},"117":{"position":[[286,3]]},"154":{"position":[[514,3]]},"214":{"position":[[445,4]]},"314":{"position":[[202,3]]},"374":{"position":[[184,3]]},"462":{"position":[[451,3]]},"494":{"position":[[147,3]]},"498":{"position":[[1497,3]]},"502":{"position":[[297,3],[957,3],[1015,3]]},"504":{"position":[[748,4],[3188,3],[3302,4]]},"506":{"position":[[131,3]]},"521":{"position":[[91,3],[152,3],[254,3],[336,3]]},"525":{"position":[[61,3]]},"528":{"position":[[346,3]]},"536":{"position":[[400,3]]},"546":{"position":[[301,3]]},"558":{"position":[[123,3],[846,3]]},"576":{"position":[[532,4]]},"584":{"position":[[1652,3],[2085,3]]}}}],["onboard",{"_index":2390,"t":{"552":{"position":[[328,7]]}}}],["onc",{"_index":1231,"t":{"216":{"position":[[0,4]]},"284":{"position":[[246,4]]},"332":{"position":[[72,4]]},"538":{"position":[[477,5]]},"552":{"position":[[0,4]]},"562":{"position":[[2329,4]]}}}],["onchain",{"_index":945,"t":{"158":{"position":[[341,7]]},"536":{"position":[[264,7]]}}}],["onchange={handleinputchang",{"_index":1095,"t":{"184":{"position":[[1521,28]]}}}],["onclick={sendmessage}>send.example.com",{"_index":1494,"t":{"282":{"position":[[218,17]]}}}],["round",{"_index":2018,"t":{"496":{"position":[[241,7]]}}}],["rout",{"_index":1024,"t":{"172":{"position":[[452,7],[543,7]]},"208":{"position":[[181,7],[509,7],[905,7]]},"294":{"position":[[149,7]]},"320":{"position":[[172,8]]},"390":{"position":[[114,8]]},"420":{"position":[[699,7]]},"556":{"position":[[21,7],[79,6]]}}}],["row",{"_index":2223,"t":{"519":{"position":[[814,4]]},"521":{"position":[[241,5]]}}}],["rule",{"_index":419,"t":{"50":{"position":[[587,5]]},"318":{"position":[[922,5]]},"320":{"position":[[110,5]]},"372":{"position":[[23,5]]},"542":{"position":[[290,5]]},"584":{"position":[[1316,5],[1386,5],[1963,5]]}}}],["run",{"_index":30,"t":{"2":{"position":[[386,7]]},"4":{"position":[[76,3],[200,3],[245,3],[316,7],[394,3],[468,3]]},"8":{"position":[[78,3]]},"18":{"position":[[971,3],[1486,7]]},"24":{"position":[[293,7]]},"58":{"position":[[385,7]]},"62":{"position":[[957,7]]},"81":{"position":[[129,7]]},"109":{"position":[[117,3]]},"111":{"position":[[68,3],[199,7],[243,3],[260,3],[292,3]]},"113":{"position":[[0,3]]},"115":{"position":[[1810,7]]},"119":{"position":[[221,7],[329,3]]},"121":{"position":[[303,7],[385,3]]},"123":{"position":[[552,3]]},"125":{"position":[[522,3]]},"154":{"position":[[72,7]]},"158":{"position":[[897,4],[956,3]]},"192":{"position":[[10,3],[41,3],[118,3],[167,3],[304,7],[333,7],[413,7],[495,7],[539,7],[655,7],[1064,8]]},"194":{"position":[[48,3],[162,3]]},"200":{"position":[[0,3],[44,3],[257,3],[312,3]]},"212":{"position":[[49,7],[116,7],[484,7],[564,7]]},"214":{"position":[[3,3],[83,7],[99,3],[175,3],[212,3],[259,3],[298,3],[371,3],[441,3],[827,3]]},"216":{"position":[[39,3],[81,3]]},"220":{"position":[[24,7]]},"222":{"position":[[32,7]]},"260":{"position":[[58,4],[89,7],[364,4]]},"270":{"position":[[215,7]]},"296":{"position":[[164,3]]},"318":{"position":[[134,3]]},"324":{"position":[[42,3],[255,3]]},"326":{"position":[[150,3]]},"422":{"position":[[320,3]]},"426":{"position":[[19,3],[75,7]]},"448":{"position":[[112,7]]},"462":{"position":[[407,7],[490,7]]},"478":{"position":[[618,7]]},"492":{"position":[[138,3]]},"494":{"position":[[58,3],[327,7],[603,3],[828,3],[875,3]]},"498":{"position":[[386,3],[577,3],[652,3]]},"502":{"position":[[317,3],[367,3],[519,3],[1848,3]]},"508":{"position":[[62,3]]},"519":{"position":[[215,7]]},"521":{"position":[[536,7]]},"523":{"position":[[690,3],[845,7],[1920,7]]},"525":{"position":[[1113,7]]},"528":{"position":[[233,7]]},"554":{"position":[[49,7]]},"560":{"position":[[284,7]]}}}],["runstmt",{"_index":2286,"t":{"525":{"position":[[526,8]]}}}],["rust",{"_index":92,"t":{"6":{"position":[[612,4],[626,4],[690,4]]}}}],["rustup",{"_index":703,"t":{"105":{"position":[[100,7],[632,6]]}}}],["s",{"_index":729,"t":{"105":{"position":[[499,1],[744,1]]}}}],["sa",{"_index":1820,"t":{"446":{"position":[[150,3]]},"586":{"position":[[963,3]]}}}],["sacrific",{"_index":519,"t":{"73":{"position":[[146,10]]}}}],["safeti",{"_index":1778,"t":{"436":{"position":[[141,6]]}}}],["same",{"_index":477,"t":{"62":{"position":[[378,4]]},"172":{"position":[[434,4],[525,4]]},"204":{"position":[[336,4]]},"210":{"position":[[510,4]]},"376":{"position":[[130,4]]},"410":{"position":[[244,4]]},"438":{"position":[[512,4]]},"498":{"position":[[1276,5],[1417,5],[3008,4]]},"504":{"position":[[953,4],[1263,4],[1999,4]]},"523":{"position":[[703,4],[1721,4]]},"525":{"position":[[260,4],[326,4],[1745,4]]},"540":{"position":[[0,4]]}}}],["sampl",{"_index":1452,"t":{"276":{"position":[[255,8],[487,8]]},"300":{"position":[[501,8]]}}}],["sandbox",{"_index":2253,"t":{"523":{"position":[[928,7],[2003,7]]},"525":{"position":[[1058,7]]}}}],["save",{"_index":1426,"t":{"268":{"position":[[298,5]]}}}],["scaffold",{"_index":115,"t":{"10":{"position":[[248,8]]},"18":{"position":[[689,8]]}}}],["scalabl",{"_index":1489,"t":{"280":{"position":[[763,12]]},"296":{"position":[[301,12]]},"304":{"position":[[262,12]]},"346":{"position":[[42,8]]},"398":{"position":[[36,8]]},"420":{"position":[[126,8],[302,11],[931,12]]},"494":{"position":[[1289,12]]},"504":{"position":[[2986,12]]}}}],["scale",{"_index":1571,"t":{"306":{"position":[[311,6]]},"380":{"position":[[174,6]]},"464":{"position":[[827,5]]},"498":{"position":[[761,5]]},"506":{"position":[[405,6]]},"546":{"position":[[268,9]]},"562":{"position":[[1746,5]]}}}],["scenario",{"_index":1532,"t":{"292":{"position":[[131,9]]},"519":{"position":[[27,8]]},"521":{"position":[[75,8]]},"523":{"position":[[993,8],[1312,8],[1487,8],[1738,8],[2068,8],[2404,8],[2680,8]]}}}],["sceneri",{"_index":2280,"t":{"525":{"position":[[171,7]]}}}],["scheme",{"_index":1266,"t":{"232":{"position":[[195,7]]}}}],["scope",{"_index":1631,"t":{"324":{"position":[[84,6]]}}}],["score",{"_index":1721,"t":{"414":{"position":[[218,7],[268,6],[347,7]]},"452":{"position":[[622,6],[658,6],[719,7]]},"530":{"position":[[208,7]]},"536":{"position":[[313,8]]}}}],["screaming_snake_cas",{"_index":793,"t":{"121":{"position":[[137,20]]}}}],["script",{"_index":182,"t":{"16":{"position":[[837,6],[848,7]]},"519":{"position":[[328,6]]}}}],["sdk",{"_index":28,"t":{"2":{"position":[[363,4]]},"6":{"position":[[32,5],[189,3],[243,3],[387,3],[472,3]]},"12":{"position":[[39,3],[167,3]]},"115":{"position":[[81,3],[1225,3],[1464,3],[1733,3]]},"178":{"position":[[39,3]]},"192":{"position":[[610,4]]},"318":{"position":[[112,4]]},"386":{"position":[[0,4]]}}}],["se",{"_index":2138,"t":{"504":{"position":[[575,2]]}}}],["seamless",{"_index":80,"t":{"6":{"position":[[305,8]]}}}],["seamlessli",{"_index":99,"t":{"8":{"position":[[194,10],[293,10]]},"12":{"position":[[295,10]]},"18":{"position":[[633,10]]},"79":{"position":[[80,10]]}}}],["second",{"_index":796,"t":{"121":{"position":[[456,6]]},"162":{"position":[[204,7],[319,8]]},"234":{"position":[[400,8],[1257,7]]},"242":{"position":[[498,7],[766,7]]},"500":{"position":[[170,9],[348,8]]},"504":{"position":[[291,9],[517,7],[790,7],[1093,8],[2293,7],[2443,6],[2466,7],[2621,8],[2827,6],[3025,8],[3274,7]]},"506":{"position":[[135,7],[636,8]]},"508":{"position":[[225,8]]},"525":{"position":[[1484,7],[1591,7],[1862,7]]},"528":{"position":[[412,7]]},"530":{"position":[[39,6],[103,8],[189,8]]},"532":{"position":[[183,7],[489,7]]},"534":{"position":[[108,7],[595,7]]},"536":{"position":[[538,8]]},"540":{"position":[[193,7]]},"560":{"position":[[1025,7],[1065,7]]},"562":{"position":[[861,7],[1423,7]]}}}],["secp256k1",{"_index":1304,"t":{"236":{"position":[[240,9],[668,9]]},"358":{"position":[[16,9]]}}}],["secreci",{"_index":1679,"t":{"400":{"position":[[218,8]]}}}],["secret",{"_index":950,"t":{"158":{"position":[[500,6]]},"266":{"position":[[347,7]]}}}],["section",{"_index":1158,"t":{"192":{"position":[[1769,7]]},"506":{"position":[[357,8]]},"586":{"position":[[289,8]]}}}],["secur",{"_index":23,"t":{"2":{"position":[[302,7]]},"50":{"position":[[63,6],[260,6],[327,6]]},"91":{"position":[[284,6]]},"95":{"position":[[237,6]]},"176":{"position":[[139,6],[167,6],[206,6],[222,6],[278,6],[295,6]]},"210":{"position":[[1005,8]]},"232":{"position":[[453,6],[676,6]]},"238":{"position":[[362,6],[386,6],[454,6],[471,6],[508,6],[526,6],[666,6],[700,6],[758,6],[1019,6],[1156,6],[1190,6],[1232,6]]},"272":{"position":[[235,9]]},"306":{"position":[[225,6]]},"320":{"position":[[531,6],[574,6],[716,9]]},"356":{"position":[[101,6]]},"360":{"position":[[65,6],[135,9]]},"380":{"position":[[66,6]]},"386":{"position":[[70,7]]},"392":{"position":[[29,7]]},"396":{"position":[[69,6]]},"400":{"position":[[97,6]]},"408":{"position":[[52,8],[97,8],[131,8],[290,8],[346,8]]},"416":{"position":[[140,8],[310,6]]},"432":{"position":[[794,8]]},"436":{"position":[[36,8],[92,8]]},"568":{"position":[[1764,9]]}}}],["see",{"_index":759,"t":{"111":{"position":[[119,3]]},"125":{"position":[[469,3]]},"194":{"position":[[154,3]]},"216":{"position":[[132,3]]},"462":{"position":[[696,4]]},"468":{"position":[[618,4]]},"472":{"position":[[17,3],[87,3],[160,3],[231,3]]},"476":{"position":[[27,3],[133,3],[221,3],[317,3]]},"480":{"position":[[66,3],[137,3]]},"484":{"position":[[48,3],[141,3]]},"488":{"position":[[38,3],[194,3],[358,3],[500,3]]},"498":{"position":[[2826,3]]},"504":{"position":[[692,3]]},"523":{"position":[[1124,3]]},"525":{"position":[[384,3]]},"536":{"position":[[358,3],[554,3],[642,4]]},"554":{"position":[[581,3]]},"558":{"position":[[348,3],[483,3]]},"560":{"position":[[416,4],[528,3]]},"562":{"position":[[1270,3],[1541,3]]}}}],["seek",{"_index":230,"t":{"20":{"position":[[34,4]]},"56":{"position":[[349,7]]},"284":{"position":[[303,4],[741,5]]},"584":{"position":[[989,8]]}}}],["seem",{"_index":2319,"t":{"532":{"position":[[0,5],[333,5]]},"534":{"position":[[140,5],[202,5],[342,5]]}}}],["seen",{"_index":878,"t":{"146":{"position":[[715,4]]}}}],["select",{"_index":650,"t":{"99":{"position":[[170,6]]},"200":{"position":[[92,8]]},"212":{"position":[[182,6]]},"248":{"position":[[118,11]]},"278":{"position":[[577,7]]},"310":{"position":[[38,11]]},"334":{"position":[[88,9]]},"344":{"position":[[49,11]]},"420":{"position":[[372,9]]},"478":{"position":[[864,7]]},"525":{"position":[[917,6],[964,6],[1472,7],[1579,7],[1850,7]]}}}],["sell",{"_index":2491,"t":{"568":{"position":[[1701,5],[1741,4]]}}}],["semi",{"_index":1924,"t":{"474":{"position":[[556,4]]}}}],["send",{"_index":190,"t":{"18":{"position":[[135,4],[202,4]]},"22":{"position":[[102,4]]},"28":{"position":[[639,4]]},"32":{"position":[[3,4],[392,4]]},"36":{"position":[[137,4]]},"89":{"position":[[310,4],[374,4],[676,4]]},"91":{"position":[[448,4],[529,4],[827,4],[1522,7]]},"93":{"position":[[1705,4]]},"115":{"position":[[2460,4]]},"174":{"position":[[152,4]]},"184":{"position":[[33,7],[1057,4],[2420,5]]},"186":{"position":[[3,4],[364,4]]},"250":{"position":[[619,4]]},"260":{"position":[[203,4]]},"268":{"position":[[122,4],[408,7]]},"274":{"position":[[222,4]]},"284":{"position":[[82,8]]},"306":{"position":[[64,7]]},"314":{"position":[[159,7]]},"318":{"position":[[197,7],[1492,4]]},"352":{"position":[[49,4]]},"372":{"position":[[123,8]]},"374":{"position":[[82,4]]},"380":{"position":[[106,7]]},"462":{"position":[[743,5]]},"466":{"position":[[96,5],[143,5],[454,4]]},"468":{"position":[[839,5],[1030,5]]},"478":{"position":[[791,5]]},"488":{"position":[[325,7]]},"504":{"position":[[253,4],[493,5],[772,4],[1242,4]]},"532":{"position":[[260,4]]},"538":{"position":[[299,4]]},"562":{"position":[[656,7]]},"584":{"position":[[852,4]]}}}],["send/rec",{"_index":1991,"t":{"494":{"position":[[276,12]]}}}],["sender",{"_index":319,"t":{"32":{"position":[[233,7]]},"89":{"position":[[401,6]]},"91":{"position":[[394,6],[556,6]]},"93":{"position":[[547,8],[976,6]]},"316":{"position":[[426,7]]},"488":{"position":[[273,8]]},"536":{"position":[[223,6]]},"558":{"position":[[1552,6]]},"562":{"position":[[574,6]]}}}],["sendmessag",{"_index":1079,"t":{"184":{"position":[[1097,11]]},"186":{"position":[[59,13],[404,11]]}}}],["sens",{"_index":2204,"t":{"513":{"position":[[184,5]]}}}],["sent",{"_index":344,"t":{"34":{"position":[[852,4]]},"85":{"position":[[300,4]]},"93":{"position":[[3046,4]]},"274":{"position":[[607,4]]},"294":{"position":[[672,4]]},"316":{"position":[[232,5]]},"318":{"position":[[413,4]]},"502":{"position":[[1265,4]]},"562":{"position":[[381,4],[851,4]]}}}],["separ",{"_index":1661,"t":{"360":{"position":[[55,9]]},"442":{"position":[[97,8]]},"468":{"position":[[530,8]]},"474":{"position":[[45,8]]}}}],["sepolia",{"_index":1410,"t":{"262":{"position":[[57,7],[96,7],[129,7]]},"424":{"position":[[9,7],[107,7],[250,7],[282,7],[324,7],[359,7],[404,7],[441,7]]},"426":{"position":[[125,7]]},"528":{"position":[[473,7]]},"538":{"position":[[95,8]]}}}],["sequenti",{"_index":822,"t":{"135":{"position":[[234,13]]}}}],["serial",{"_index":1128,"t":{"186":{"position":[[85,9]]}}}],["serialis",{"_index":323,"t":{"32":{"position":[[283,9]]},"186":{"position":[[634,9]]},"250":{"position":[[440,13]]}}}],["serialisedmessag",{"_index":324,"t":{"32":{"position":[[326,17],[472,18]]}}}],["serious",{"_index":1776,"t":{"436":{"position":[[45,9]]}}}],["serv",{"_index":415,"t":{"50":{"position":[[492,6]]},"162":{"position":[[376,5],[414,5]]},"182":{"position":[[28,6]]},"220":{"position":[[790,7]]},"234":{"position":[[30,5],[163,5]]},"238":{"position":[[110,5]]},"242":{"position":[[19,5]]},"244":{"position":[[19,5]]},"286":{"position":[[130,5]]},"294":{"position":[[128,6],[294,6]]},"320":{"position":[[705,5]]},"362":{"position":[[67,7]]},"376":{"position":[[33,6]]},"506":{"position":[[1040,5]]}}}],["server",{"_index":489,"t":{"62":{"position":[[947,6]]},"156":{"position":[[115,6],[154,6]]},"166":{"position":[[64,7],[141,6],[195,6],[595,7]]},"168":{"position":[[39,6],[71,7],[98,6],[156,6],[171,6],[223,6]]},"170":{"position":[[178,6],[217,6]]},"200":{"position":[[868,9]]},"206":{"position":[[408,6],[436,6],[513,8],[662,6],[713,6],[769,7]]},"210":{"position":[[427,6],[541,7]]},"240":{"position":[[162,6],[263,7],[379,7],[786,6],[832,6],[1029,6]]},"246":{"position":[[27,6]]},"278":{"position":[[94,7]]},"288":{"position":[[348,8]]},"302":{"position":[[87,7]]},"448":{"position":[[394,6]]},"462":{"position":[[339,6],[390,6],[427,6],[545,6],[764,7],[778,6],[842,6],[922,6],[1005,6]]},"466":{"position":[[124,7],[136,6],[432,6]]},"468":{"position":[[867,6],[917,6],[1023,6]]},"470":{"position":[[102,6],[172,6]]},"474":{"position":[[127,6],[761,7],[1189,7]]},"478":{"position":[[36,6],[142,7],[192,6],[246,6],[475,6],[587,6],[699,7],[768,7],[874,6],[1063,6],[1135,7]]},"482":{"position":[[81,7],[149,7]]},"488":{"position":[[184,7]]},"494":{"position":[[726,6]]}}}],["server'",{"_index":1361,"t":{"246":{"position":[[94,8]]},"468":{"position":[[810,8]]},"474":{"position":[[260,8],[913,8]]},"478":{"position":[[117,8],[314,8],[946,8]]}}}],["server=8.8.4.4",{"_index":1205,"t":{"206":{"position":[[1148,14]]}}}],["server=8.8.8.8",{"_index":1204,"t":{"206":{"position":[[1110,14]]}}}],["server=[dn",{"_index":1200,"t":{"206":{"position":[[645,11]]}}}],["servic",{"_index":1226,"t":{"214":{"position":[[877,7],[942,9]]},"320":{"position":[[449,7],[600,7]]},"324":{"position":[[207,7]]},"350":{"position":[[67,7]]},"406":{"position":[[10,7],[87,7],[341,7],[411,7],[653,7],[705,8]]},"408":{"position":[[39,8]]},"418":{"position":[[93,8],[248,7]]},"420":{"position":[[406,8]]},"422":{"position":[[451,8]]},"476":{"position":[[111,7],[199,7]]},"498":{"position":[[1912,9],[2086,9]]},"502":{"position":[[882,8]]},"521":{"position":[[66,8]]},"576":{"position":[[176,9]]}}}],["set",{"_index":252,"t":{"22":{"position":[[75,7]]},"24":{"position":[[372,3]]},"46":{"position":[[55,3]]},"58":{"position":[[161,3]]},"62":{"position":[[3,3]]},"115":{"position":[[1618,7]]},"121":{"position":[[169,3]]},"152":{"position":[[63,4]]},"160":{"position":[[325,3]]},"180":{"position":[[7,3]]},"182":{"position":[[79,3],[289,3]]},"192":{"position":[[1561,7]]},"232":{"position":[[8,3]]},"234":{"position":[[581,3],[812,7]]},"248":{"position":[[36,3]]},"272":{"position":[[191,7]]},"276":{"position":[[366,4]]},"292":{"position":[[16,3]]},"318":{"position":[[1649,3]]},"320":{"position":[[632,3]]},"372":{"position":[[16,3]]},"462":{"position":[[893,3]]},"486":{"position":[[136,9]]},"492":{"position":[[25,3]]},"498":{"position":[[1147,4],[2565,3],[2926,3]]},"502":{"position":[[1025,3],[1143,3],[1591,4],[1744,3]]},"519":{"position":[[751,3]]},"542":{"position":[[313,3]]},"558":{"position":[[166,4]]},"584":{"position":[[888,7]]}}}],["setinputmessag",{"_index":1072,"t":{"184":{"position":[[378,16]]},"186":{"position":[[853,20]]}}}],["setinputmessage(e.target.valu",{"_index":1077,"t":{"184":{"position":[[551,32]]}}}],["setmessag",{"_index":1073,"t":{"184":{"position":[[428,12]]}}}],["setmessages(allmessages.map((wakumessag",{"_index":1143,"t":{"190":{"position":[[652,41]]}}}],["setmessages(filtermessages.map((wakumessag",{"_index":1137,"t":{"188":{"position":[[429,44]]}}}],["setup",{"_index":51,"t":{"4":{"position":[[306,5]]},"62":{"position":[[908,5]]},"194":{"position":[[119,5]]},"260":{"position":[[47,5]]},"556":{"position":[[983,5]]}}}],["sever",{"_index":1379,"t":{"252":{"position":[[94,7]]},"525":{"position":[[87,7]]},"554":{"position":[[447,8]]},"586":{"position":[[581,9]]}}}],["sh",{"_index":721,"t":{"105":{"position":[[303,2],[444,2],[592,2]]}}}],["shadow",{"_index":2415,"t":{"560":{"position":[[6,6],[871,6]]},"562":{"position":[[2212,6],[2334,6]]}}}],["shall",{"_index":2485,"t":{"568":{"position":[[1264,5]]},"578":{"position":[[4,5]]},"584":{"position":[[841,5]]}}}],["shape",{"_index":1705,"t":{"408":{"position":[[77,7]]}}}],["shard",{"_index":1652,"t":{"342":{"position":[[248,7]]},"420":{"position":[[317,8],[366,5]]},"492":{"position":[[76,5],[304,6]]},"494":{"position":[[151,6],[389,7],[462,5],[1428,6]]},"498":{"position":[[114,6],[2801,6]]},"500":{"position":[[76,5]]},"502":{"position":[[421,6]]},"506":{"position":[[1009,6]]}}}],["share",{"_index":289,"t":{"28":{"position":[[670,6]]},"89":{"position":[[36,6],[1388,6]]},"91":{"position":[[1421,5]]},"115":{"position":[[2654,7]]},"254":{"position":[[44,5]]},"256":{"position":[[209,5]]},"266":{"position":[[409,6]]},"322":{"position":[[43,5]]},"420":{"position":[[22,6],[692,6],[824,6]]},"422":{"position":[[127,6]]},"454":{"position":[[65,8]]},"456":{"position":[[15,7],[269,5]]},"460":{"position":[[145,7]]},"464":{"position":[[98,7]]},"525":{"position":[[1680,6]]}}}],["shift",{"_index":911,"t":{"154":{"position":[[404,5],[418,5]]}}}],["shift=1",{"_index":1212,"t":{"210":{"position":[[725,7]]}}}],["short",{"_index":1179,"t":{"200":{"position":[[655,6]]},"292":{"position":[[369,5]]},"314":{"position":[[79,5]]},"318":{"position":[[992,6]]}}}],["shorten",{"_index":1822,"t":{"448":{"position":[[162,10]]}}}],["shouldn't",{"_index":2085,"t":{"498":{"position":[[1928,9]]},"534":{"position":[[363,9]]}}}],["show",{"_index":380,"t":{"44":{"position":[[135,4]]},"496":{"position":[[21,5]]},"521":{"position":[[759,5]]},"523":{"position":[[325,5],[1216,5]]},"525":{"position":[[161,5],[1368,5]]},"562":{"position":[[21,5],[79,7],[429,4]]}}}],["shown",{"_index":2089,"t":{"498":{"position":[[2099,5]]},"560":{"position":[[599,5]]},"562":{"position":[[324,6]]}}}],["sia",{"_index":1882,"t":{"460":{"position":[[66,4]]}}}],["sibyl",{"_index":2135,"t":{"504":{"position":[[429,5]]}}}],["side",{"_index":525,"t":{"75":{"position":[[32,4]]},"174":{"position":[[97,6],[226,5]]},"462":{"position":[[434,4],[507,4]]}}}],["sign",{"_index":200,"t":{"18":{"position":[[439,4],[537,4]]},"85":{"position":[[104,4]]},"93":{"position":[[8,7],[181,7],[478,4],[863,7],[912,7],[1139,5],[1368,7],[1439,5],[1663,7],[2396,7],[2547,5],[3035,6],[3218,6],[3280,6]]},"95":{"position":[[59,7],[1002,6]]},"115":{"position":[[941,4],[1111,4]]},"206":{"position":[[355,6]]},"396":{"position":[[161,7]]}}}],["signatur",{"_index":588,"t":{"93":{"position":[[87,9],[2020,9],[2725,9],[2794,9],[2826,9],[2906,9]]},"416":{"position":[[122,11],[266,11]]}}}],["signaturepublickey",{"_index":609,"t":{"93":{"position":[[2049,20],[2859,18],[2947,18]]}}}],["signifi",{"_index":1595,"t":{"316":{"position":[[364,10]]},"406":{"position":[[18,9]]}}}],["signific",{"_index":178,"t":{"16":{"position":[[463,11]]},"560":{"position":[[319,11]]}}}],["significantli",{"_index":873,"t":{"146":{"position":[[569,13]]}}}],["sigprivkey",{"_index":595,"t":{"93":{"position":[[406,10],[1320,11],[1615,11],[2644,11]]}}}],["similar",{"_index":1768,"t":{"430":{"position":[[373,7]]},"474":{"position":[[648,8]]},"523":{"position":[[1632,7]]},"525":{"position":[[1883,7]]},"562":{"position":[[1873,7]]},"566":{"position":[[324,7]]}}}],["similarli",{"_index":1732,"t":{"418":{"position":[[468,10]]}}}],["simpl",{"_index":629,"t":{"95":{"position":[[339,6]]},"260":{"position":[[141,6]]},"474":{"position":[[753,7]]}}}],["simpler",{"_index":515,"t":{"73":{"position":[[70,7]]},"474":{"position":[[1006,7]]}}}],["simplest",{"_index":1148,"t":{"192":{"position":[[90,8]]},"214":{"position":[[399,8]]},"452":{"position":[[752,8]]},"468":{"position":[[248,8]]}}}],["simpli",{"_index":2202,"t":{"513":{"position":[[0,6]]}}}],["simplic",{"_index":533,"t":{"77":{"position":[[134,10]]}}}],["simplifi",{"_index":1647,"t":{"336":{"position":[[41,10]]},"468":{"position":[[355,10],[607,10]]},"470":{"position":[[150,10]]}}}],["simul",{"_index":1969,"t":{"486":{"position":[[126,9]]},"490":{"position":[[31,11]]},"519":{"position":[[346,8]]},"528":{"position":[[241,11],[264,10]]},"530":{"position":[[323,11]]},"532":{"position":[[100,10]]},"536":{"position":[[339,11]]},"540":{"position":[[5,10]]},"554":{"position":[[585,10]]},"556":{"position":[[947,10]]},"558":{"position":[[2204,12]]},"560":{"position":[[13,10],[64,8],[297,10],[402,10],[738,10],[927,8]]},"562":{"position":[[66,12],[393,11],[1709,11],[2270,9]]}}}],["simultan",{"_index":504,"t":{"66":{"position":[[70,15]]},"202":{"position":[[195,15]]},"218":{"position":[[679,15]]},"519":{"position":[[170,14],[788,15]]}}}],["singl",{"_index":561,"t":{"89":{"position":[[28,7]]},"256":{"position":[[394,6]]},"258":{"position":[[27,6],[703,6]]},"494":{"position":[[455,6]]},"502":{"position":[[414,6]]},"506":{"position":[[1002,6]]},"511":{"position":[[291,6]]},"523":{"position":[[3237,6]]},"525":{"position":[[65,6]]}}}],["site",{"_index":1811,"t":{"442":{"position":[[86,5]]},"568":{"position":[[607,5]]}}}],["site.thes",{"_index":2479,"t":{"568":{"position":[[628,10]]}}}],["sixti",{"_index":2556,"t":{"584":{"position":[[1062,5]]}}}],["size",{"_index":170,"t":{"16":{"position":[[378,5]]},"115":{"position":[[415,4]]},"160":{"position":[[286,4]]},"234":{"position":[[503,4]]},"470":{"position":[[356,4]]},"502":{"position":[[1288,5]]},"504":{"position":[[806,4],[981,5],[1281,4],[1592,5],[1638,5],[1708,5],[2025,4],[2502,5],[2610,4],[3012,4],[3363,5]]},"506":{"position":[[45,6],[492,4]]},"532":{"position":[[62,4]]},"534":{"position":[[180,5]]},"554":{"position":[[85,6],[270,4],[493,5]]},"558":{"position":[[1453,4],[1647,6]]},"562":{"position":[[175,6],[791,6],[1250,4]]}}}],["size:10gb",{"_index":1281,"t":{"234":{"position":[[570,10]]}}}],["size:512mb",{"_index":1280,"t":{"234":{"position":[[556,10]]}}}],["size:{new",{"_index":1087,"t":{"184":{"position":[[1303,10]]}}}],["spawn",{"_index":2248,"t":{"523":{"position":[[564,5]]}}}],["special",{"_index":765,"t":{"115":{"position":[[1213,11]]},"576":{"position":[[193,8]]}}}],["specialis",{"_index":1514,"t":{"286":{"position":[[136,11]]}}}],["specif",{"_index":274,"t":{"26":{"position":[[415,8]]},"89":{"position":[[1417,8]]},"103":{"position":[[124,8]]},"107":{"position":[[208,8]]},"198":{"position":[[166,8]]},"226":{"position":[[108,14]]},"248":{"position":[[230,8],[291,13]]},"250":{"position":[[351,8]]},"256":{"position":[[124,8]]},"276":{"position":[[426,13]]},"284":{"position":[[709,8],[762,8]]},"288":{"position":[[263,8]]},"300":{"position":[[264,13]]},"310":{"position":[[63,8]]},"316":{"position":[[323,8]]},"318":{"position":[[913,8]]},"334":{"position":[[140,8]]},"342":{"position":[[32,13]]},"344":{"position":[[74,8]]},"394":{"position":[[135,8]]},"432":{"position":[[159,8]]},"438":{"position":[[429,8]]},"494":{"position":[[1465,8]]},"544":{"position":[[364,8]]},"546":{"position":[[204,8]]},"558":{"position":[[2085,8],[2161,8]]},"570":{"position":[[1290,9]]},"586":{"position":[[828,8]]}}}],["specifi",{"_index":272,"t":{"26":{"position":[[258,7]]},"28":{"position":[[395,7]]},"119":{"position":[[95,7]]},"123":{"position":[[241,7],[349,7]]},"125":{"position":[[60,10]]},"137":{"position":[[242,7]]},"139":{"position":[[213,7]]},"142":{"position":[[25,9]]},"144":{"position":[[18,9]]},"146":{"position":[[22,9]]},"152":{"position":[[196,9]]},"154":{"position":[[452,7]]},"166":{"position":[[467,9],[523,7]]},"246":{"position":[[185,10]]},"316":{"position":[[13,9],[454,10]]},"362":{"position":[[210,9]]},"400":{"position":[[16,9]]},"466":{"position":[[232,9]]},"492":{"position":[[222,7]]}}}],["speed",{"_index":2094,"t":{"498":{"position":[[2264,5],[2330,5]]},"560":{"position":[[644,6]]}}}],["speedtest",{"_index":2022,"t":{"496":{"position":[[349,9]]}}}],["spend",{"_index":1658,"t":{"354":{"position":[[39,5]]},"532":{"position":[[292,5]]}}}],["split",{"_index":1852,"t":{"454":{"position":[[7,5]]},"466":{"position":[[202,5]]},"474":{"position":[[1019,9]]}}}],["spread",{"_index":2302,"t":{"525":{"position":[[1639,6]]}}}],["sqlalchemi",{"_index":1283,"t":{"234":{"position":[[780,10]]}}}],["sqlite",{"_index":990,"t":{"160":{"position":[[527,6]]},"511":{"position":[[219,6],[326,6]]},"519":{"position":[[491,6],[573,6],[866,6],[1425,6]]},"521":{"position":[[189,7],[215,6],[721,6]]},"523":{"position":[[762,6],[1137,6],[1230,6],[1463,6],[1691,6],[1768,6],[2999,6],[3419,6]]}}}],["sqlite://store.sqlite3",{"_index":987,"t":{"160":{"position":[[369,22]]},"234":{"position":[[963,23]]}}}],["src/app.css",{"_index":1101,"t":{"184":{"position":[[1945,11]]}}}],["src/app.jsx",{"_index":1060,"t":{"182":{"position":[[669,11]]},"184":{"position":[[132,11]]},"186":{"position":[[196,11]]},"188":{"position":[[182,11]]},"190":{"position":[[211,11]]}}}],["src/main.jsx",{"_index":1053,"t":{"182":{"position":[[224,12]]}}}],["src=\"https://cdn.jsdelivr.net/npm/protobufjs@latest/dist/protobuf.min.js\">{message.message} ","s":"Message structure","u":"/guides/js-waku/","h":"#message-structure","p":1},{"i":8,"t":"Have a look at the quick start guide and comprehensive tutorials to learn how to build applications using @waku/sdk: Guide Description Send and Receive Messages Using Light Push and Filter Learn how to send and receive messages on light nodes using the Light Push and Filter protocols Retrieve Messages Using Store Protocol Learn how to retrieve and filter historical messages on light nodes using the Store protocol Encrypt, Decrypt, and Sign Your Messages Learn how to use the @waku/message-encryption package to encrypt, decrypt, and sign your messages Build React DApps Using @waku/react Learn how to use the @waku/react package seamlessly integrate @waku/sdk into a React application Scaffold DApps Using @waku/create-app Learn how to use the @waku/create-app package to bootstrap your next @waku/sdk project from various example templates Bootstrap Nodes and Discover Peers Learn how to bootstrap your node using Static Peers and discover peers using DNS Discovery Run @waku/sdk in a NodeJS Application Learn our suggested approach for using the @waku/sdk package within a NodeJS application Debug Your Waku DApp and WebSocket Learn how to troubleshoot your Waku DApp using debug logs and check WebSocket connections in nwaku Manage Your Filter Subscriptions Learn how to manage filter subscriptions and handle node disconnections in your application tip Until node incentivisation is in place, you should operate extra nodes alongside the ones provided by the Waku Network. When running a node, we recommend using the DNS Discovery and Static Peers configuration to connect to both the Waku Network and your node.","s":"Getting started","u":"/guides/js-waku/","h":"#getting-started","p":1},{"i":10,"t":"To engage in general discussions, seek assistance, or stay updated with the latest news, visit the #support and #js-waku-contribute channels on the Waku Discord. If you discover bugs or want to suggest new features, do not hesitate to open an issue in the js-waku repository. Your feedback and contributions are highly valued and will help improve the @waku/sdk package.","s":"Get help and report issues","u":"/guides/js-waku/","h":"#get-help-and-report-issues","p":1},{"i":12,"t":"Waku is a family of robust, censorship-resistant, peer-to-peer communication protocols that enable privacy-focused messaging for Web3 applications, allowing you to integrate decentralised communication features into your dApp without compromising security or privacy. tip Check out our Learn section, YouTube channel, and Blog to dive into how Waku works behind the scenes!","s":"Introduction to Waku","u":"/","h":"","p":11},{"i":14,"t":"Waku is not a blockchain but a network composed of protocols designed for Web3 communication, operating without the need for gas fees. Waku is not just for messaging applications; it supports the development of complex applications that require secure and private data transmission. Waku is not a long-term data storage network; it focuses on short, ephemeral, real-time messaging.","s":"What isn’t Waku?","u":"/","h":"#what-isnt-waku","p":11},{"i":16,"t":"Chat Messengers: Waku can be used to build private, decentralised chat apps resistant to censorship. Voting and Proposals: Exchange votes on proposals off-chain via Waku to save gas fees, then submit aggregated results to the blockchain. NFT Marketplaces: Use Waku to handle off-chain NFT bids and offers for gas savings, and to integrate social interactions like likes and comments. State Channels: Establish and maintain state channels with Waku, facilitating seamless message exchanges and updates without blockchain interaction. Signature Exchange for Multi-Signature Wallets: Allow multi-signature wallet owners to exchange signatures privately and securely through Waku. Game Mechanics Communication: Implement Waku as a communication layer for decentralised, peer-to-peer gaming, avoiding centralised infrastructure. Layer 2 Coordination (Open Market, Spam Protected Mempool): Broadcast and aggregate Layer 2 transactions via Waku to enhance privacy and scalability, reducing network load. Social Media Platforms: Beyond chat messengers, use Waku for decentralised, censorship-resistant social media platforms like news feeds and multimedia sharing. tip Looking for what to build with Waku? Discover a collection of sample ideas and use cases for inspiration, curated by our community at: https://ideas.waku.org/ and Awesome Waku.","s":"What can Waku be used for?","u":"/","h":"#what-can-waku-be-used-for","p":11},{"i":20,"t":"Waku is a decentralised, permissionless system where anyone can run a node, use the network, and contribute to its support. We recommend following the Run Nwaku with Docker Compose guide and Waku Node Operator Cheatsheet to easily run a node. tip If you encounter issues running your node or require assistance with anything, please visit the #node-help channel on our Discord.","s":"Run a Waku node","u":"/","h":"#run-a-waku-node","p":11},{"i":22,"t":"Waku is implemented in multiple SDKs, allowing it to integrate with different languages and address various use cases efficiently. Description Documentation @waku/sdk JavaScript/TypeScript SDK designed for browser environments JavaScript Waku SDK @waku/react React components and UI adapters designed for seamless integration with @waku/sdk Build React DApps Using @waku/react","s":"Integrate using SDKs","u":"/","h":"#integrate-using-sdks","p":11},{"i":24,"t":"Description Documentation REST API REST API interface provided by nwaku and go-waku to interact with the Waku Network Waku Node REST API Reference @waku/create-app Starter kit to bootstrap your next @waku/sdk project from various example templates Scaffold DApps Using @waku/create-app tip Explore some example apps built using Waku at https://examples.waku.org/ and view a list of projects and workshops from previous hackathons at Awesome Waku.","s":"Other integrations","u":"/","h":"#other-integrations","p":11},{"i":26,"t":"How do I install the @waku/sdk package in my project? You can add the JavaScript SDK to your project using NPM, Yarn, or a CDN. Check out the installation guide to get started. Why should I use Protocol Buffers for my application's message structure when using Waku? Protocol Buffers ensure consistent formatting, interoperability, and backward compatibility for your application's messages, with a smaller payload size than JSON. Check out the installation guide and Protobuf documentation to learn more. What are the steps to retrieve historical messages on Waku? Check out the Retrieve Messages Using Store Protocol guide to learn how to retrieve and filter historical messages using the Store protocol. How can I prevent Store peers from storing my messages? When creating your message encoder, you can configure the ephemeral option to prevent Store peers from keeping your messages on the Waku Network. How can I encrypt, decrypt, and sign messages in my Waku application? You can encrypt and decrypt your messages using symmetric, ECIES, and noise encryption methods. Check out the Encrypt, Decrypt, and Sign Your Messages guide to get started. How do I integrate Waku into a React application? Waku has a specialized SDK designed for building React applications. Check out the Build React DApps Using @waku/react guide for instructions on installation and usage. How can I bootstrap and discover peers in the Waku Network for browser nodes? The JavaScript SDK has a default bootstrap method that can be configured with Static Peers and DNS Discovery. Check out the Bootstrap Nodes and Discover Peers guide for setting up peer discovery for your node. How can I integrate Waku into a NodeJS application? Though the JavaScript SDK isn't directly usable in NodeJS due to certain limitations, we recommend running nwaku in a Docker container and consuming its REST API in a NodeJS application. How can I debug my Waku DApp and check WebSocket connections? Check out the Debug Your Waku DApp and WebSocket guide to discover how to use debug logs to troubleshoot your Waku DApp and resolve connection issues with nwaku WebSockets. How can I manage unexpected disconnections of my Filter subscription from Waku? We recommend regularly pinging peers to check for an active connection and reinitiating the subscription when it disconnects. Check out the Manage Your Filter Subscriptions guide for a detailed explanation and step-by-step instructions. How can I send images and videos on the Waku Network? While it's possible to transmit media such as images as bytes on Waku, we recommend uploading your media to a CDN or a file system like IPFS and then sharing the corresponding URL via Waku.","s":"JavaScript SDK FAQ","u":"/guides/js-waku/faq","h":"","p":25},{"i":28,"t":"This guide provides detailed steps to manage Filter subscriptions and handle node disconnections in your application. Have a look at the Send and Receive Messages Using Light Push and Filter guide for using the Light Push and Filter protocols.","s":"Manage Your Filter Subscriptions","u":"/guides/js-waku/manage-filter","h":"","p":27},{"i":30,"t":"Occasionally, your Filter subscriptions might disconnect from the Waku Network, resulting in messages not being received by your application. To manage your subscriptions, periodically ping peers to check for an active connection. The error message \"peer has no subscriptions\" indicates a failed ping due to disconnection. You can stop the pings if the disconnection/unsubscription is deliberate.","s":"Overview","u":"/guides/js-waku/manage-filter","h":"#overview","p":27},{"i":32,"t":"The @waku/sdk package provides a Filter.ping() function to ping subscriptions and check for an active connection. To begin, create a Filter subscription: // Create a Filter subscription const subscription = await node.filter.createSubscription(); // Subscribe to content topics and process new messages await subscription.subscribe([decoder], callback); Next, create a function to ping and reinitiate the subscription: const pingAndReinitiateSubscription = async () => { try { // Ping the subscription await subscription.ping(); } catch (error) { if ( // Check if the error message includes \"peer has no subscriptions\" error instanceof Error && error.message.includes(\"peer has no subscriptions\") ) { // Reinitiate the subscription if the ping fails await subscription.subscribe([decoder], callback); } else { throw error; } } }; // Periodically ping the subscription await pingAndReinitiateSubscription(); info Pings will fail when there are temporary network degradations or reachability issues. This does not mean that the underlying connection has been closed. Congratulations! You have successfully managed your Filter subscriptions to handle node disconnections in your application.","s":"Pinging filter subscriptions","u":"/guides/js-waku/manage-filter","h":"#pinging-filter-subscriptions","p":27},{"i":34,"t":"This guide provides detailed steps to start using the @waku/sdk package by setting up a Light Node to send messages using the Light Push protocol, and receive messages using the Filter protocol. Have a look at the installation guide for steps on adding @waku/sdk to your project.","s":"Send and Receive Messages Using Light Push and Filter","u":"/guides/js-waku/light-send-receive","h":"","p":33},{"i":36,"t":"Use the createLightNode() function to create a Light Node and interact with the Waku Network: import { createLightNode } from \"@waku/sdk\"; // Create and start a Light Node const node = await createLightNode({ defaultBootstrap: true }); await node.start(); // Use the stop() function to stop a running node // await node.stop(); info When the defaultBootstrap parameter is set to true, your node will be bootstrapped using the default bootstrap method. Have a look at the Bootstrap Nodes and Discover Peers guide to learn more methods to bootstrap nodes.","s":"Create a light node","u":"/guides/js-waku/light-send-receive","h":"#create-a-light-node","p":33},{"i":38,"t":"Use the waitForRemotePeer() function to wait for the node to connect with peers on the Waku Network: import { waitForRemotePeer } from \"@waku/sdk\"; // Wait for a successful peer connection await waitForRemotePeer(node); The protocols parameter allows you to specify the protocols that the remote peers should have enabled: import { waitForRemotePeer, Protocols } from \"@waku/sdk\"; // Wait for peer connections with specific protocols await waitForRemotePeer(node, [ Protocols.LightPush, Protocols.Filter, ]);","s":"Connect to remote peers","u":"/guides/js-waku/light-send-receive","h":"#connect-to-remote-peers","p":33},{"i":40,"t":"Choose a content topic for your application and create a message encoder and decoder: import { createEncoder, createDecoder } from \"@waku/sdk\"; // Choose a content topic const contentTopic = \"/light-guide/1/message/proto\"; // Create a message encoder and decoder const encoder = createEncoder({ contentTopic }); const decoder = createDecoder(contentTopic); The ephemeral parameter allows you to specify whether messages should NOT be stored by Store peers: const encoder = createEncoder({ contentTopic: contentTopic, // message content topic ephemeral: true, // allows messages NOT be stored on the network }); info In this example, users send and receive messages on a shared content topic. However, real applications may have users broadcasting messages while others listen or only have 1:1 exchanges. Waku supports all these use cases.","s":"Choose a content topic","u":"/guides/js-waku/light-send-receive","h":"#choose-a-content-topic","p":33},{"i":42,"t":"Create your application's message structure using Protobuf's valid message fields: import protobuf from \"protobufjs\"; // Create a message structure using Protobuf const ChatMessage = new protobuf.Type(\"ChatMessage\") .add(new protobuf.Field(\"timestamp\", 1, \"uint64\")) .add(new protobuf.Field(\"sender\", 2, \"string\")) .add(new protobuf.Field(\"message\", 3, \"string\")); info Have a look at the Protobuf installation guide for adding the protobufjs package to your project.","s":"Create a message structure","u":"/guides/js-waku/light-send-receive","h":"#create-a-message-structure","p":33},{"i":44,"t":"To send messages over the Waku Network using the Light Push protocol, create a new message object and use the lightPush.send() function: // Create a new message object const protoMessage = ChatMessage.create({ timestamp: Date.now(), sender: \"Alice\", message: \"Hello, World!\", }); // Serialise the message using Protobuf const serialisedMessage = ChatMessage.encode(protoMessage).finish(); // Send the message using Light Push await node.lightPush.send(encoder, { payload: serialisedMessage, });","s":"Send messages using light push","u":"/guides/js-waku/light-send-receive","h":"#send-messages-using-light-push","p":33},{"i":46,"t":"To receive messages using the Filter protocol, create a callback function for message processing, then use the filter.subscribe() function to subscribe to a content topic: // Create the callback function const callback = (wakuMessage) => { // Check if there is a payload on the message if (!wakuMessage.payload) return; // Render the messageObj as desired in your application const messageObj = ChatMessage.decode(wakuMessage.payload); console.log(messageObj); }; // Create a Filter subscription const subscription = await node.filter.createSubscription(); // Subscribe to content topics and process new messages await subscription.subscribe([decoder], callback); You can use the subscription.unsubscribe() function to stop receiving messages from a content topic: await subscription.unsubscribe([contentTopic]); Congratulations! You have successfully sent and received messages over the Waku Network using the Light Push and Filter protocols. Have a look at the light-js and light-chat examples for working demos.","s":"Receive messages using filter","u":"/guides/js-waku/light-send-receive","h":"#receive-messages-using-filter","p":33},{"i":48,"t":"This guide provides detailed steps to enable and use debug logs to troubleshoot your Waku DApp, whether in a NodeJS or browser environment and check your WebSocket connections in nwaku.","s":"Debug Your Waku DApp and WebSocket","u":"/guides/js-waku/debug-waku-dapp","h":"","p":47},{"i":50,"t":"When resolving issues in your Waku DApp, debug logs can be helpful. The @waku/sdk and libp2p packages use the debug tool to handle and show logs that help you debug effectively.","s":"Enabling debug logs","u":"/guides/js-waku/debug-waku-dapp","h":"#enabling-debug-logs","p":47},{"i":52,"t":"To enable debug logs for @waku/sdk on NodeJS, you must set the DEBUG environment variable. To only enable debug logs for @waku/sdk: export DEBUG=waku* To enable debug logs for both @waku/sdk and libp2p: export DEBUG=waku*,libp2p* To enable debug logs for all components: export DEBUG=*","s":"NodeJS environments","u":"/guides/js-waku/debug-waku-dapp","h":"#nodejs-environments","p":47},{"i":54,"t":"To view debug logs in your browser's console, modify the local storage and add the debug key. Here are guides for various modern browsers: Google Chrome Firefox JavaScript KEY VALUE DESCRIPTION debug waku* Enables @waku/sdk debug logs debug waku*,libp2p* Enables @waku/sdk and libp2p debug logs debug * Enables all debug logs","s":"Browser environments","u":"/guides/js-waku/debug-waku-dapp","h":"#browser-environments","p":47},{"i":56,"t":"Nwaku provides native support for WebSocket (ws) and WebSocket Secure (wss) protocols. These are the only transports supported for connecting to the Waku Network via browsers. It's important to note that browsers impose certain limitations on WebSocket usage: Secure Context Requirement: Insecure subroutines are prohibited in secure contexts. On an https:// webpage, only wss connections are permitted, while ws connections are not allowed. This restriction does not apply if the webpage is served locally, like on localhost or 127.0.0.1. Certificate Validation: Certificate validation rules are consistent for https and wss connections. Certificates must not be expired, issued by a recognized Certificate Authority (CA), and match the domain name, among other criteria. User Feedback on Errors: Web browsers do not display errors related to subroutines to the user. If a WebSocket connection encounters an issue, users won't be alerted directly; you'll need to check the browser's console for error details. If you encounter difficulties when connecting to a remote node using wss, follow these steps:","s":"Checking WebSocket setup","u":"/guides/js-waku/debug-waku-dapp","h":"#checking-websocket-setup","p":47},{"i":58,"t":"Attempt to connect using websocat, a tool for WebSocket interactions. Test the WebSocket port using the command: websocat -v wss://[WEBSOCKET HOST]:[WEBSOCKET PORT] For example, consider a nwaku node with the multiaddr as /dns4/nwakunode.com/tcp/1234/wss/p2p/16...: $ websocat -v wss://nwakunode.com:1234 # ... [INFO websocat::ws_client_peer] Connected to ws The connection works if the [INFO websocat::ws_client_peer] Connected to ws log entry appears. If not, check that the certificate is valid","s":"Try Websocat for connection","u":"/guides/js-waku/debug-waku-dapp","h":"#try-websocat-for-connection","p":47},{"i":60,"t":"Verify the certificate's validity by passing the -k or --insecure flag to handle invalid certificates in websocat: websocat -v -k wss://nwakunode.com:1234 If this works, the certificate's invalidity is the problem, and you should investigate the cause of the error if not, check if the WebSocket port is accessible.","s":"Check certificate validity","u":"/guides/js-waku/debug-waku-dapp","h":"#check-certificate-validity","p":47},{"i":62,"t":"Use telnet or another networking tool to verify if the WebSocket port is open and accessible. For example, if the multiaddr is /dns4/nwakunode.com/tcp/1234/wss/p2p/16..., use the command: $ telnet nwakunode.com 1234 Trying 123.123.123.123... Connected to nwakunode.com. # ... If the connection succeeds, there might be an issue with nwaku. Consider seeking support on the Waku Discord or raise an issue. If the connection fails, ensure that the WebSocket port is open.","s":"Check WebSocket port accessibility","u":"/guides/js-waku/debug-waku-dapp","h":"#check-websocket-port-accessibility","p":47},{"i":64,"t":"While the @waku/sdk package is primarily designed for browser environments, you can use it in a NodeJS application. However, there are certain limitations and considerations to keep in mind. This guide provides a comprehensive overview of using @waku/sdk in NodeJS.","s":"Run @waku/sdk in a NodeJS Application","u":"/guides/js-waku/run-waku-nodejs","h":"","p":63},{"i":67,"t":"@waku/sdk prioritises browser compatibility, avoiding NodeJS APIs for simpler bundling. This design choice enhances browser API compatibility but sacrifices NodeJS optimisation. While many browser APIs work in NodeJS, they might need better optimisation.","s":"API compatibility","u":"/guides/js-waku/run-waku-nodejs","h":"#api-compatibility","p":63},{"i":69,"t":"@waku/sdk focuses on the client side of the Request/Response protocol. We'll have to replicate all the functionalities added to nwaku to implement extra features.","s":"Protocol implementation","u":"/guides/js-waku/run-waku-nodejs","h":"#protocol-implementation","p":63},{"i":71,"t":"@waku/sdk aims to provide optimal default for the browser, striking a balance between browser and NodeJS compatibility while ensuring simplicity will add complexity.","s":"Codebase complexity","u":"/guides/js-waku/run-waku-nodejs","h":"#codebase-complexity","p":63},{"i":73,"t":"Certain features in @waku/sdk are tailored for browsers and might not translate seamlessly to NodeJS. For example, only WebSocket is supported in the browser, whereas a NodeJS application can benefit from using transport methods like TCP. @waku/sdk default peer management caters to the browser's ephemeral nature, which is different for NodeJS. This is why DNS Discovery and Peer Exchange are the default discovery mechanisms for the browser but not for NodeJS and desktop applications.","s":"Browser-specific protocols","u":"/guides/js-waku/run-waku-nodejs","h":"#browser-specific-protocols","p":63},{"i":75,"t":"Before using @waku/sdk in a NodeJS environment, take into account these limitations. For a more optimised solution, we recommend running nwaku in a Docker container and consuming its REST API.","s":"Recommendations","u":"/guides/js-waku/run-waku-nodejs","h":"#recommendations","p":63},{"i":77,"t":"There are plans to release a NodeJS package based on nwaku to streamline the process of using Waku Network features in NodeJS applications. You can track the progress and updates here: https://github.com/waku-org/nwaku/issues/1332.","s":"Future developments","u":"/guides/js-waku/run-waku-nodejs","h":"#future-developments","p":63},{"i":79,"t":"This guide provides detailed steps to use the @waku/message-encryption package to encrypt, decrypt, and sign your messages using Waku message payload encryption methods. info Waku uses libp2p noise encryption for node-to-node connections. However, no default encryption method is applied to the data sent over the network. This design choice enhances Waku's encryption flexibility, encouraging developers to freely use custom protocols or Waku message payload encryption methods.","s":"Encrypt, Decrypt, and Sign Your Messages","u":"/guides/js-waku/message-encryption","h":"","p":78},{"i":81,"t":"Install the required packages for integrating @waku/message-encryption using your preferred package manager: NPM Yarn npm install @waku/message-encryption @waku/utils yarn add @waku/message-encryption @waku/utils","s":"Installation","u":"/guides/js-waku/message-encryption","h":"#installation","p":78},{"i":83,"t":"Symmetric encryption uses a single, shared key for message encryption and decryption. Use the generateSymmetricKey() function to generate a random symmetric key: import { generateSymmetricKey } from \"@waku/message-encryption\"; // Generate a random symmetric key const symmetricKey = generateSymmetricKey(); To send encrypted messages, create a Symmetric message encoder and send the message as usual: Sender client import { createEncoder } from \"@waku/message-encryption/symmetric\"; // Create a symmetric message encoder const encoder = createEncoder({ contentTopic: contentTopic, // message content topic symKey: symmetricKey, // symmetric key for encrypting messages }); // Send the message using Light Push await node.lightPush.send(encoder, { payload }); To decrypt the messages you receive, create a symmetric message decoder and process the messages as usual: Receiver client import { createDecoder } from \"@waku/message-encryption/symmetric\"; // Create a symmetric message decoder const decoder = createDecoder(contentTopic, symmetricKey); // Receive messages from a Filter subscription await subscription.subscribe([decoder], callback); // Retrieve messages from Store peers await node.store.queryWithOrderedCallback([decoder], callback); tip The symmetric key exchange between users can happen through an out-of-band method. For example, where the key is embedded within the URL shared by a user to access a specific resource.","s":"Symmetric encryption","u":"/guides/js-waku/message-encryption","h":"#symmetric-encryption","p":78},{"i":85,"t":"ECIES encryption uses a public key for encryption and a private key for decryption. Use the generatePrivateKey() function to generate a random ECDSA private key: import { generatePrivateKey, getPublicKey } from \"@waku/message-encryption\"; // Generate a random ECDSA private key, keep secure const privateKey = generatePrivateKey(); // Generate a public key from the private key, provide to the sender const publicKey = getPublicKey(privateKey); To send encrypted messages, create an ECIES message encoder with the public key and send the message as usual: Sender client import { createEncoder } from \"@waku/message-encryption/ecies\"; // Create an ECIES message encoder const encoder = createEncoder({ contentTopic: contentTopic, // message content topic publicKey: publicKey, // ECIES public key for encrypting messages }); // Send the message using Light Push await node.lightPush.send(encoder, { payload }); To decrypt the messages you receive, create an ECIES message decoder with the private key and process the messages as usual: Receiver client import { createDecoder } from \"@waku/message-encryption/ecies\"; // Create an ECIES message decoder const decoder = createDecoder(contentTopic, privateKey); // Receive messages from a Filter subscription await subscription.subscribe([decoder], callback); // Retrieve messages from Store peers await node.store.queryWithOrderedCallback([decoder], callback); tip Users can share their public key through broadcasting or out-of-band methods, such as embedding it in a URL or sending an unencrypted message on another content topic for others to retrieve.","s":"ECIES encryption","u":"/guides/js-waku/message-encryption","h":"#ecies-encryption","p":78},{"i":87,"t":"Message signing helps in proving the authenticity of received messages. By attaching a signature to a message, you can verify its origin and integrity with absolute certainty. info Signing messages is only possible when encrypted, but if your application does not require encryption, you can generate a symmetric key through hardcoded or deterministic methods using information available to all users. The sigPrivKey parameter allows the Symmetric and ECIES message encoders to sign the message before encryption using an ECDSA private key: Alice (sender) client import { generatePrivateKey, getPublicKey } from \"@waku/message-encryption\"; import { createEncoder as createSymmetricEncoder } from \"@waku/message-encryption/symmetric\"; import { createEncoder as createECIESEncoder } from \"@waku/message-encryption/ecies\"; // Generate a random ECDSA private key for signing messages // ECIES encryption and message signing both use ECDSA keys // For this example, we'll call the sender of the message Alice const alicePrivateKey = generatePrivateKey(); const alicePublicKey = getPublicKey(alicePrivateKey); // Create a symmetric encoder that signs messages const symmetricEncoder = createSymmetricEncoder({ contentTopic: contentTopic, // message content topic symKey: symmetricKey, // symmetric key for encrypting messages sigPrivKey: alicePrivateKey, // private key for signing messages before encryption }); // Create an ECIES encoder that signs messages const ECIESEncoder = createECIESEncoder({ contentTopic: contentTopic, // message content topic publicKey: publicKey, // ECIES public key for encrypting messages sigPrivKey: alicePrivateKey, // private key for signing messages before encryption }); // Send and receive your messages as usual with Light Push and Filter await subscription.subscribe([symmetricEncoder], callback); await node.lightPush.send(symmetricEncoder, { payload }); await subscription.subscribe([ECIESEncoder], callback); await node.lightPush.send(ECIESEncoder, { payload }); You can extract the signature and its public key (signaturePublicKey) from the DecodedMessage and compare it with the expected public key or use the verifySignature() function to verify the message origin: Bob (receiver) client import { generatePrivateKey } from \"@waku/message-encryption\"; import { createEncoder } from \"@waku/message-encryption/symmetric\"; // Generate a random private key for signing messages // For this example, we'll call the receiver of the message Bob const bobPrivateKey = generatePrivateKey(); // Create an encoder that signs messages const encoder = createEncoder({ contentTopic: contentTopic, symKey: symmetricKey, sigPrivKey: bobPrivateKey, }); // Modify the callback function to verify message signature const callback = (wakuMessage) => { // Extract the message signature and public key of the signature // You can compare the signaturePublicKey with Alice public key const signature = wakuMessage.signature; const signaturePublicKey = wakuMessage.signaturePublicKey; // Verify the message was actually signed and sent by Alice // Alice's public key can be gotten from broadcasting or out-of-band methods if (wakuMessage.verifySignature(alicePublicKey)) { console.log(\"This message was signed by Alice\"); } else { console.log(\"This message was NOT signed by Alice\"); } }; await subscription.subscribe([encoder], callback);","s":"Signing encrypted messages","u":"/guides/js-waku/message-encryption","h":"#signing-encrypted-messages","p":78},{"i":89,"t":"We used randomly generated keys for encryption and message signing in the provided examples, but real-world applications require consistent keys among client restarts. Have a look at the Key Pair Handling example, which demonstrates the secure storage and retrieval of key information from local storage using Subtle Crypto. If you need a simple way to store your keys in hexadecimal format across your application, you can use the @waku/utils package: import { bytesToHex, hexToBytes } from \"@waku/utils/bytes\"; // Generate random symmetric and private keys const symmetricKey = generateSymmetricKey(); const privateKey = generatePrivateKey(); // Store the keys in hexadecimal format const symmetricKeyHex = bytesToHex(symmetricKey); const privateKeyHex = bytesToHex(privateKey); // Restore the keys from hexadecimal format const restoredSymmetricKey = hexToBytes(symmetricKeyHex); const restoredPrivateKey = hexToBytes(privateKeyHex); Congratulations! You have successfully encrypted, decrypted, and signed your messages using Symmetric and ECIES encryption methods. Have a look at the eth-pm example for a working demo.","s":"Storing encryption keys","u":"/guides/js-waku/message-encryption","h":"#storing-encryption-keys","p":78},{"i":91,"t":"This guide provides detailed steps to build a nwaku node from the source code to access the latest development version or a specific commit or release of nwaku. For your convenience, you may want to download a pre-compiled binary instead. info A minimum of 2GB of RAM is required to build nwaku. Nwaku is available for Linux and macOS, with experimental Windows support.","s":"Build Nwaku from Source","u":"/guides/nwaku/build-source","h":"","p":90},{"i":93,"t":"To build nwaku, you need the standard developer tools, including a C compiler, GNU Make, Bash, Git, Rustup, and PostgreSQL client library. Debian and Ubuntu Fedora Arch Linux MacOS (Homebrew) sudo apt-get install build-essential git libpq5 jq curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source \"$HOME/.cargo/env\" sudo dnf install @development-tools git libpq-devel curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh # Using your favoured AUR helper sudo [AUR HELPER] -S base-devel git postgresql-libs curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh brew install cmake git postgresql@15 rustup-init # Create a symbolic link to libpq.5.dylib in /usr/local/lib/ sudo mkdir -p /usr/local/lib/ sudo ln -s /opt/homebrew/opt/postgresql@15/lib/libpq.5.dylib /usr/local/lib/libpq.dylib","s":"Prerequisites","u":"/guides/nwaku/build-source","h":"#prerequisites","p":90},{"i":95,"t":"Get the source code from the GitHub repository. The default branch is master, the release candidate for major updates. git clone https://github.com/waku-org/nwaku cd nwaku tip You can use git tag -l to check specific version tags.","s":"Clone the repository","u":"/guides/nwaku/build-source","h":"#clone-the-repository","p":90},{"i":97,"t":"Build the nwaku binary: make wakunode2 The first make invocation updates to all Git submodules. After each git pull, run make update to keep the submodules updated in the future. make update","s":"Build the binary","u":"/guides/nwaku/build-source","h":"#build-the-binary","p":90},{"i":99,"t":"Nwaku will create the wakunode2 binary in the ./build/ directory. # Run with default configuration ./build/wakunode2 # See available command line options ./build/wakunode2 --help To learn more about running nwaku, have a look at these guides: Run a Nwaku Node Run Nwaku in a Docker Container Run Nwaku with Docker Compose Node Configuration Methods","s":"Run the binary","u":"/guides/nwaku/build-source","h":"#run-the-binary","p":90},{"i":101,"t":"Run the tests for Waku: make test Congratulations! You have successfully built the nwaku binary from the source code. Have a look at the Node Configuration Examples guide to learn how to configure nwaku for different use cases.","s":"Run test suite","u":"/guides/nwaku/build-source","h":"#run-test-suite","p":90},{"i":103,"t":"Here are the available node configuration options, along with their default values and descriptions:","s":"Node Configuration Options","u":"/guides/nwaku/config-options","h":"","p":102},{"i":105,"t":"Name Default Value Description config-file Loads configuration from a TOML file (cmd-line parameters take precedence) protected-topic newSeq[ProtectedTopic](0) Topics and its public key to be used for message validation, topic:pubkey. Argument may be repeated","s":"Application-level config","u":"/guides/nwaku/config-options","h":"#application-level-config","p":102},{"i":107,"t":"Name Default Value Description log-level logging.LogLevel.INFO Sets the log level for process. Supported levels: TRACE, DEBUG, INFO, NOTICE, WARN, ERROR or FATAL log-format logging.LogFormat.TEXT Specifies what kind of logs should be written to stdout. Supported formats: TEXT, JSON","s":"Log config","u":"/guides/nwaku/config-options","h":"#log-config","p":102},{"i":109,"t":"Name Default Value Description cluster-id 0 Cluster id that the node is running in. Node in a different cluster id is disconnected agent-string nwaku Node agent string which is used as identifier in network nodekey P2P node private key as 64-char hex string listen-address defaultListenAddress() Listening address for LibP2P (and Discovery v5, if enabled) traffic tcp-port 60000 TCP listening port ports-shift 0 Add a shift to all port numbers nat any Specify method to use for determining public address. Must be one of: any, none, upnp, pmp, extip: ext-multiaddr External multiaddresses to advertise to the network. Argument may be repeated ext-multiaddr-only false Only announce external multiaddresses max-connections 50 Maximum allowed number of libp2p connections max-relay-peers Maximum allowed number of relay peers peer-store-capacity Maximum stored peers in the peerstore peer-persistence false Enable peer persistence","s":"General node config","u":"/guides/nwaku/config-options","h":"#general-node-config","p":102},{"i":111,"t":"Name Default Value Description dns-addrs true Enable resolution of dnsaddr, dns4 or dns6 multiaddrs dns-addrs-name-server [\"1.1.1.1\", \"1.0.0.1\"] DNS name server IPs to query for DNS multiaddrs resolution. Argument may be repeated dns4-domain-name The domain name resolving to the node's public IPv4 address","s":"DNS addrs config","u":"/guides/nwaku/config-options","h":"#dns-addrs-config","p":102},{"i":113,"t":"Name Default Value Description relay true Enable relay protocol: true|false relay-peer-exchange false Enable gossipsub peer exchange in relay protocol: true|false rln-relay false Enable spam protection through rln-relay: true|false rln-relay-cred-path The path for persisting rln-relay credential rln-relay-membership-index The index of the onchain commitment to use rln-relay-dynamic false Enable waku-rln-relay with on-chain dynamic group management: true|false rln-relay-id-key Rln relay identity secret key as a Hex string rln-relay-id-commitment-key Rln relay identity commitment key as a Hex string rln-relay-eth-client-address ws://localhost:8540/ WebSocket address of an Ethereum testnet client e.g., ws://localhost:8540/ rln-relay-eth-contract-address Address of membership contract on an Ethereum testnet rln-relay-eth-private-key Private key for broadcasting transactions execute false Runs the registration function on-chain. By default, a dry-run will occur rln-relay-cred-password Password for encrypting RLN credentials rln-relay-tree-path Path to the RLN merkle tree sled db (https://github.com/spacejam/sled) rln-relay-bandwidth-threshold 0 # to maintain backwards compatibility Message rate in bytes/sec after which verification of proofs should happen staticnode Peer multiaddr to directly connect with. Argument may be repeated keep-alive false Enable keep-alive for idle connections: true|false topic [\"/waku/2/default-waku/proto\"] Default topic to subscribe to. Argument may be repeated. Deprecated! Please use pubsub-topic and/or content-topic instead pubsub-topic Default pubsub topic to subscribe to. Argument may be repeated content-topic Default content topic to subscribe to. Argument may be repeated","s":"Relay config","u":"/guides/nwaku/config-options","h":"#relay-config","p":102},{"i":115,"t":"Name Default Value Description store false Enable/disable waku store protocol storenode Peer multiaddress to query for storage store-message-retention-policy time:172800 Message store retention policy. Time retention policy: time:. Capacity retention policy: capacity:. Size retention policy: size:. Set to none to disable store-message-db-url sqlite://store.sqlite3 The database connection URL for persistent storage store-message-db-vacuum false Enable database vacuuming at start. Only supported by SQLite database engine store-message-db-migration true Enable database migration at start","s":"Store and message store config","u":"/guides/nwaku/config-options","h":"#store-and-message-store-config","p":102},{"i":117,"t":"Name Default Value Description filter false Enable filter protocol: true|false filternode Peer multiaddr to request content filtering of messages filter-timeout 14400 # 4 hours Timeout for filter node in seconds filter-subscription-timeout 300 # 5 minutes Timeout for filter subscription without ping or refresh it, in seconds. Only for v2 filter protocol filter-max-peers-to-serve 1000 Maximum number of peers to serve at a time. Only for v2 filter protocol filter-max-criteria 1000 Maximum number of pubsub and content topic combinations per peer at a time. Only for v2 filter protocol","s":"Filter config","u":"/guides/nwaku/config-options","h":"#filter-config","p":102},{"i":119,"t":"Name Default Value Description lightpush false Enable lightpush protocol: true|false lightpushnode Peer multiaddr to request lightpush of published messages","s":"Light push config","u":"/guides/nwaku/config-options","h":"#light-push-config","p":102},{"i":121,"t":"Name Default Value Description rest false Enable Waku REST HTTP server: true|false rest-address 127.0.0.1 Listening address of the REST HTTP server rest-port 8645 Listening port of the REST HTTP server rest-relay-cache-capacity 30 Capacity of the Relay REST API message cache rest-admin false Enable access to REST HTTP Admin API: true|false rest-private false Enable access to REST HTTP Private API: true|false rest-allow-origin Allow cross-origin requests from the specified origin. When using the REST API in a browser, specify the origin host to get a valid response from the node REST HTTP server. This option may be repeated and can contain wildcards (?,*) for defining URLs and ports such as localhost:*, 127.0.0.1:8080, or allow any website with *","s":"REST HTTP config","u":"/guides/nwaku/config-options","h":"#rest-http-config","p":102},{"i":123,"t":"Name Default Value Description metrics-server false Enable the metrics server: true|false metrics-server-address 127.0.0.1 Listening address of the metrics server metrics-server-port 8008 Listening HTTP port of the metrics server metrics-logging true Enable metrics logging: true|false","s":"Metrics config","u":"/guides/nwaku/config-options","h":"#metrics-config","p":102},{"i":125,"t":"Name Default Value Description dns-discovery false Enable discovering nodes via DNS dns-discovery-url URL for DNS node list in format 'enrtree://@' dns-discovery-name-server [\"1.1.1.1\", \"1.0.0.1\"] DNS name server IPs to query. Argument may be repeated","s":"DNS discovery config","u":"/guides/nwaku/config-options","h":"#dns-discovery-config","p":102},{"i":127,"t":"Name Default Value Description discv5-discovery false Enable discovering nodes via Node Discovery v5 discv5-udp-port 9000 Listening UDP port for Node Discovery v5 discv5-bootstrap-node Text-encoded ENR for bootstrap node. Used when connecting to the network. Argument may be repeated discv5-enr-auto-update false Discovery can automatically update its ENR with the IP address discv5-table-ip-limit 10 Maximum amount of nodes with the same IP in discv5 routing tables discv5-bucket-ip-limit 2 Maximum amount of nodes with the same IP in discv5 routing table buckets discv5-bits-per-hop 1 Kademlia's b variable, increase for less hops per lookup","s":"Discv5 config","u":"/guides/nwaku/config-options","h":"#discv5-config","p":102},{"i":129,"t":"Name Default Value Description peer-exchange false Enable waku peer exchange protocol (responder side): true|false peer-exchange-node Peer multiaddr to send peer exchange requests to. (enables peer exchange protocol requester side)","s":"Waku peer exchange config","u":"/guides/nwaku/config-options","h":"#waku-peer-exchange-config","p":102},{"i":131,"t":"Name Default Value Description websocket-support false Enable websocket: true|false websocket-port 8000 WebSocket listening port websocket-secure-support false Enable secure websocket: true|false websocket-secure-key-path Secure websocket key path: '/path/to/key.txt' websocket-secure-cert-path Secure websocket Certificate path: '/path/to/cert.txt' tip To configure your node using the provided configuration options, have a look at the Node Configuration Methods guide.","s":"WebSocket config","u":"/guides/nwaku/config-options","h":"#websocket-config","p":102},{"i":133,"t":"This guide provides detailed steps to configure a nwaku node to discover and connect with peers in the Waku Network. info You can configure a nwaku node to use multiple peer discovery mechanisms simultaneously.","s":"Configure Peer Discovery","u":"/guides/nwaku/configure-discovery","h":"","p":132},{"i":135,"t":"You can provide static peers to a nwaku node during startup using the staticnode configuration option. To connect to multiple peers on startup, repeat the staticnode option: ./build/wakunode2 \\ --staticnode=[PEER MULTIADDR 1] \\ --staticnode=[PEER MULTIADDR 2] For example, consider a nwaku node that connects to two static peers on the same local host (IP: 0.0.0.0) using TCP ports 60002 and 60003: ./build/wakunode2 \\ --staticnode=/ip4/0.0.0.0/tcp/60002/p2p/16Uiu2HAkzjwwgEAXfeGNMKFPSpc6vGBRqCdTLG5q3Gmk2v4pQw7H \\ --staticnode=/ip4/0.0.0.0/tcp/60003/p2p/16Uiu2HAmFBA7LGtwY5WVVikdmXVo3cKLqkmvVtuDu63fe8safeQJ","s":"Configure static peers","u":"/guides/nwaku/configure-discovery","h":"#configure-static-peers","p":132},{"i":137,"t":"To enable DNS Discovery in a nwaku node, use the following configuration options: dns-discovery: Enables DNS Discovery on the node (disabled by default). dns-discovery-url: URL for DNS node list in the format enrtree://@ where is the fully qualified domain name and is the base32 encoding of the compressed 32-byte public key that signed the list at that location. dns-discovery-name-server (optional): DNS name server IPs to query. You can repeat this option to provide multiple DNS name servers. ./build/wakunode2 \\ --dns-discovery=true \\ --dns-discovery-url=enrtree://[PUBLIC KEY]@[DOMAIN NAME] \\ --dns-discovery-name-server=[DNS NAME SERVER IP] info If you omit the dns-discovery-name-server option, nwaku will attempt to use the CloudFlare servers 1.1.1.1 and 1.0.0.1. For example, consider a nwaku node that enables DNS Discovery, connects to a DNS node list, and queries the IPs 8.8.8.8 and 8.8.4.4: ./build/wakunode2 \\ --dns-discovery=true \\ --dns-discovery-url=enrtree://AIRVQ5DDA4FFWLRBCHJWUWOO6X6S4ZTZ5B667LQ6AJU6PEYDLRD5O@sandbox.waku.nodes.status.im \\ --dns-discovery-name-server=8.8.8.8 \\ --dns-discovery-name-server=8.8.4.4","s":"Configure DNS discovery","u":"/guides/nwaku/configure-discovery","h":"#configure-dns-discovery","p":132},{"i":139,"t":"To enable Discv5 in a nwaku node, use the following configuration options: discv5-discovery: Enables Discv5 on the node (disabled by default). discv5-bootstrap-node: ENR for Discv5 routing table bootstrap node. You can repeat this option to provide multiple bootstrap entries. ./build/wakunode2 \\ --discv5-discovery=true \\ --discv5-bootstrap-node=[DISCV5 ENR BOOTSTRAP ENTRY 1] \\ --discv5-bootstrap-node=[DISCV5 ENR BOOTSTRAP ENTRY 2] For example, consider a nwaku node that enables Discv5 and bootstraps its routing table using a static ENR: ./build/wakunode2 \\ --discv5-discovery=true \\ --discv5-bootstrap-node=enr:-IO4QDxToTg86pPCK2KvMeVCXC2ADVZWrxXSvNZeaoa0JhShbM5qed69RQz1s1mWEEqJ3aoklo_7EU9iIBcPMVeKlCQBgmlkgnY0iXNlY3AyNTZrMaEDdBHK1Gx6y_zv5DVw5Qb3DtSOMmVHTZO1WSORrF2loL2DdWRwgiMohXdha3UyAw info When Discv5 is enabled and used with DNS Discovery, the nwaku node will attempt to bootstrap the Discv5 routing table by extracting ENRs from peers discovered through DNS.","s":"Configure Discv5","u":"/guides/nwaku/configure-discovery","h":"#configure-discv5","p":132},{"i":141,"t":"To enable Peer Exchange in a nwaku node, use the following configuration options: peer-exchange: Enables Peer Exchange on the node as a responder (disabled by default). peer-exchange-node (optional): Multiaddr for bootstrap node with the peer exchange protocol enabled. ./build/wakunode2 \\ --peer-exchange=true \\ --peer-exchange-node=[PEER MULTIADDR WITH EXCHANGE ENABLED] For example, consider two nwaku nodes configured as a server (peer exchange responder node) and client (node using peer exchange) on the same local host (IP: 0.0.0.0): Server: Nwaku Node with Peer Exchange Enabled ./build/wakunode2 --peer-exchange=true Client: Nwaku Node Bootstrapping with Peer Exchange ./build/wakunode2 \\ --tcp-port=30305 \\ --ports-shift=1 \\ --peer-exchange-node=/ip4/0.0.0.0/tcp/60000/p2p/16Uiu2HAmLCe6zVqCS6KMqqRbbhyoJjfYZGr1Q3thTSbyKzibQkFR info nwaku provides a relay-peer-exchange option via libp2p for peer exchange, allowing network growth through neighbouring nodes. However, this feature can compromise security and network robustness, so we recommend only using it in high-trust environments.","s":"Configure peer exchange","u":"/guides/nwaku/configure-discovery","h":"#configure-peer-exchange","p":132},{"i":143,"t":"This guide provides detailed steps to bootstrap your next @waku/sdk project from various example templates using the @waku/create-app package.","s":"Scaffold DApps Using @waku/create-app","u":"/guides/js-waku/use-waku-create-app","h":"","p":142},{"i":145,"t":"Initialise a new @waku/sdk template using any of the following methods: NPM Yarn npx @waku/create-app [PROJECT DIRECTORY] yarn create @waku/app [PROJECT DIRECTORY] Next, select a template to initialise your app from: tip If you have previously installed @waku/create-app globally, we recommend uninstalling the package to ensure that npx always uses the latest version.","s":"Usage","u":"/guides/js-waku/use-waku-create-app","h":"#usage","p":142},{"i":147,"t":"We welcome and appreciate the contributions of templates for the @waku/create-app package. To contribute a template, please follow these steps: Create the template, ensuring it is user-friendly and thoroughly tested. Place the template in the examples folder in the js-waku-examples repository's root. Commit your changes with a detailed message and push them to your forked repository. Finally, submit a pull request to the js-waku-examples repository. Our team will carefully review and merge your submission upon approval. Waku also provides bounties to encourage community members to contribute to the network and earn rewards. To participate in the bounty program, head to https://github.com/waku-org/bounties.","s":"Contributing new templates","u":"/guides/js-waku/use-waku-create-app","h":"#contributing-new-templates","p":142},{"i":149,"t":"This guide provides detailed steps to bootstrap your your node using Static Peers and discover peers in the Waku Network using DNS Discovery. info If you do not set up a bootstrap node or discovery mechanism, your node will not connect to any remote peer. tip Until node incentivisation is in place, you should operate extra nodes alongside the ones provided by the Waku Network. When running a node, we recommend using the DNS Discovery and Static Peers configuration to connect to both the Waku Network and your node.","s":"Bootstrap Nodes and Discover Peers","u":"/guides/js-waku/configure-discovery","h":"","p":148},{"i":151,"t":"The @waku/sdk package provides a built-in bootstrapping method that uses DNS Discovery to locate peers from the waku v2.prod ENR tree. import { createLightNode } from \"@waku/sdk\"; // Bootstrap node using the default bootstrap method const node = await createLightNode({ defaultBootstrap: true });","s":"Default bootstrap method","u":"/guides/js-waku/configure-discovery","h":"#default-bootstrap-method","p":148},{"i":153,"t":"To set static peers, a list of multiaddr to bootstrap the node should be passed to the bootstrapPeers parameter of the createLightNode() function: import { createLightNode } from \"@waku/sdk\"; // Bootstrap node using static peers const node = await createLightNode({ bootstrapPeers: [\"[PEER MULTIADDR]\"], }); For example, consider a node that connects to two static peers on the same local host (IP: 0.0.0.0) using TCP ports 60002 and 60003 with WebSocket enabled: // Define the list of static peers to bootstrap const peers = [ \"/ip4/0.0.0.0/tcp/60002/ws/p2p/16Uiu2HAkzjwwgEAXfeGNMKFPSpc6vGBRqCdTLG5q3Gmk2v4pQw7H\", \"/ip4/0.0.0.0/tcp/60003/ws/p2p/16Uiu2HAmFBA7LGtwY5WVVikdmXVo3cKLqkmvVtuDu63fe8safeQJ\", ]; // Bootstrap node using the static peers const node = await createLightNode({ bootstrapPeers: peers, }); tip For local development using a nwaku node, use a ws address instead of wss. Remember that this setup is functional only when your web server is running locally.","s":"Configure static peers","u":"/guides/js-waku/configure-discovery","h":"#configure-static-peers","p":148},{"i":155,"t":"To bootstrap a node using DNS Discovery, first install the @waku/dns-discovery package: npm install @waku/dns-discovery yarn add @waku/dns-discovery Then, use the wakuDnsDiscovery() function to provide a list of URLs for DNS node list in the format enrtree://@: import { createLightNode } from \"@waku/sdk\"; import { wakuDnsDiscovery } from \"@waku/dns-discovery\"; // Define DNS node list const enrTree = \"enrtree://[PUBLIC KEY]@[DOMAIN NAME]\"; // Define node requirements const NODE_REQUIREMENTS = { store: 3, lightPush: 3, filter: 3, }; // Bootstrap node using DNS Discovery const node = await createLightNode({ libp2p: { peerDiscovery: [ wakuDnsDiscovery( [enrTree], NODE_REQUIREMENTS, ), ], }, }); For example, consider a node that uses the waku v2.prod and waku v2.test ENR trees for DNS Discovery: import { enrTree } from \"@waku/dns-discovery\"; // Bootstrap node using DNS Discovery const node = await createLightNode({ libp2p: { peerDiscovery: [ wakuDnsDiscovery( [enrTree[\"PROD\"], enrTree[\"TEST\"]], NODE_REQUIREMENTS, ), ], }, });","s":"Configure DNS discovery","u":"/guides/js-waku/configure-discovery","h":"#configure-dns-discovery","p":148},{"i":157,"t":"You can also bootstrap your node using DNS Discovery and Static Peers simultaneously: import { createLightNode } from \"@waku/sdk\"; import { bootstrap } from \"@libp2p/bootstrap\"; import { enrTree, wakuDnsDiscovery } from \"@waku/dns-discovery\"; // Define the list of static peers to bootstrap const peers = [ \"/ip4/0.0.0.0/tcp/60002/ws/p2p/16Uiu2HAkzjwwgEAXfeGNMKFPSpc6vGBRqCdTLG5q3Gmk2v4pQw7H\", \"/ip4/0.0.0.0/tcp/60003/ws/p2p/16Uiu2HAmFBA7LGtwY5WVVikdmXVo3cKLqkmvVtuDu63fe8safeQJ\", ]; // Define node requirements const NODE_REQUIREMENTS = { store: 3, lightPush: 3, filter: 3, }; // Bootstrap node using DNS Discovery and static peers const node = await createLightNode({ libp2p: { bootstrapPeers: peers, peerDiscovery: [ wakuDnsDiscovery( [enrTree[\"PROD\"]], NODE_REQUIREMENTS, ), ], }, });","s":"Configure DNS discovery and static peers","u":"/guides/js-waku/configure-discovery","h":"#configure-dns-discovery-and-static-peers","p":148},{"i":159,"t":"You can retrieve the array of peers connected to a node using the libp2p.getPeers() function within the @waku/sdk package: import { createLightNode, waitForRemotePeer } from \"@waku/sdk\"; const node = await createLightNode({ defaultBootstrap: true }); await waitForRemotePeer(node); // Retrieve array of peers connected to the node console.log(node.libp2p.getPeers());","s":"Retrieving connected peers","u":"/guides/js-waku/configure-discovery","h":"#retrieving-connected-peers","p":148},{"i":161,"t":"Waku nodes can be configured using a combination of the following methods: Command line options and flags Environment variables TOML configuration files (currently the only supported format) Default values info Take note of the precedence order: Each configuration method overrides the one below it (e.g., command line options override environment variables and configuration files).","s":"Node Configuration Methods","u":"/guides/nwaku/config-methods","h":"","p":160},{"i":163,"t":"Node configuration is primarily done using command line options, which override other methods. Specify configuration options by providing them in this format after the binary name: ./build/wakunode2 --tcp-port=65000 When running your node with Docker, provide the command line options after the image name in this format: docker run statusteam/nim-waku --tcp-port=65000","s":"Command line options","u":"/guides/nwaku/config-methods","h":"#command-line-options","p":160},{"i":165,"t":"Nodes can be configured using environment variables by prefixing the variable name with WAKUNODE2_ and using the configuration option in SCREAMING_SNAKE_CASE format. To set the tcp-port configuration, the wakunode2 binary should be called in this format: WAKUNODE2_TCP_PORT=65000 ./build/wakunode2 When running your node with Docker, start the node using the -e command option: docker run -e \"WAKUNODE2_TCP_PORT=65000\" statusteam/nim-waku info This is the second configuration method in order of precedence. Command Line Options override environment variables.","s":"Environment variables","u":"/guides/nwaku/config-methods","h":"#environment-variables","p":160},{"i":167,"t":"Nodes can be configured using a configuration file following the TOML format: TOML Config File log-level = \"DEBUG\" tcp-port = 65000 topic = [\"/waku/2/default-waku/proto\"] metrics-logging = false The config-file configuration option lets you specify the configuration file path: ./build/wakunode2 --config-file=[TOML CONFIGURATION FILE] You can also specify the configuration file via environment variables: # Using environment variables WAKUNODE2_CONFIG_FILE=[TOML CONFIGURATION FILE] ./build/wakunode2 # Using environment variables with Docker docker run -e \"WAKUNODE2_CONFIG_FILE=[TOML CONFIGURATION FILE]\" statusteam/nim-waku info This is the third configuration method in order of precedence. Command Line Options and Environment Variables override configuration files.","s":"Configuration files","u":"/guides/nwaku/config-methods","h":"#configuration-files","p":160},{"i":169,"t":"The default configuration is used when no other options are specified. By default, a nwaku node does the following: Generate a new Node Key and PeerID. Listen for incoming libp2p connections on the default TCP port (60000). Subscribe to the default Pub/Sub topic (/waku/2/default-waku/proto). Enable the Relay protocol for relaying messages. Enable the Store protocol as a client, allowing it to query peers for historical messages but not store any message itself. To see the default values of all configuration options, run wakunode2 --help: ./build/wakunode2 --help tip To explore the available node configuration options, have a look at the Node Configuration Options guide.","s":"Default configuration values","u":"/guides/nwaku/config-methods","h":"#default-configuration-values","p":160},{"i":171,"t":"This guide provides detailed steps to create a Light Node for retrieving and filtering historical messages using the Store protocol.","s":"Retrieve Messages Using Store Protocol","u":"/guides/js-waku/store-retrieve-messages","h":"","p":170},{"i":173,"t":"Use the createLightNode() function to create a Light Node and interact with the Waku Network: import { createLightNode } from \"@waku/sdk\"; // Create and start a Light Node const node = await createLightNode({ defaultBootstrap: true }); await node.start();","s":"Create a light node","u":"/guides/js-waku/store-retrieve-messages","h":"#create-a-light-node","p":170},{"i":175,"t":"Use the waitForRemotePeer() function to wait for the node to connect with Store peers: import { waitForRemotePeer, Protocols } from \"@waku/sdk\"; // Wait for a successful peer connection await waitForRemotePeer(node, [Protocols.Store]);","s":"Connect to store peers","u":"/guides/js-waku/store-retrieve-messages","h":"#connect-to-store-peers","p":170},{"i":177,"t":"Choose a content topic for filtering the messages to retrieve and create a message decoder: import { createDecoder } from \"@waku/sdk\"; // Choose a content topic const contentTopic = \"/store-guide/1/message/proto\"; // Create a message decoder const decoder = createDecoder(contentTopic);","s":"Choose a content topic","u":"/guides/js-waku/store-retrieve-messages","h":"#choose-a-content-topic","p":170},{"i":179,"t":"@waku/sdk provides the queryWithOrderedCallback() and queryGenerator() functions for querying Store nodes and retrieving historical or missed messages. The responses from Store nodes are paginated and require you to process each page sequentially.","s":"Retrieve messages","u":"/guides/js-waku/store-retrieve-messages","h":"#retrieve-messages","p":170},{"i":181,"t":"The store.queryWithOrderedCallback() function provides a straightforward method for querying Store nodes and processing messages in chronological order through a callback function. It accepts these parameters: decoders: List of decoders that specify the content topic to query for and their message decryption methods. callback: The callback function for processing the retrieved messages. options (optional): Query options to filter the retrieved messages. // Create the callback function const callback = (wakuMessage) => { // Render the message/payload in your application console.log(wakuMessage); }; // Query the Store peer await node.store.queryWithOrderedCallback([decoder], callback); info The queryWithOrderedCallback() function always returns the most recent messages in a page first.","s":"queryWithOrderedCallback","u":"/guides/js-waku/store-retrieve-messages","h":"#querywithorderedcallback","p":170},{"i":183,"t":"The store.queryGenerator() function provides more control and flexibility over processing messages retrieved from Store nodes through Async Generators. It accepts these parameters: decoders: List of decoders that specify the content topic to query for and their message decryption methods. options (optional): Query options to filter the retrieved messages. // Create the store query const storeQuery = node.store.queryGenerator([decoder]); // Process the messages for await (const messagesPromises of storeQuery) { // Fulfil the messages promises const messages = await Promise.all( messagesPromises.map(async (p) => { const msg = await p; // Render the message/payload in your application console.log(msg); }) ); } info The queryGenerator() function always returns the oldest messages in a page first.","s":"queryGenerator","u":"/guides/js-waku/store-retrieve-messages","h":"#querygenerator","p":170},{"i":186,"t":"The pageDirection option specifies the direction in which pages are retrieved: BACKWARD (default): Most recent page first. FORWARD: Oldest page first. import { PageDirection } from \"@waku/sdk\"; // Retrieve recent messages first const queryOptions = { pageDirection: PageDirection.BACKWARD, }; // Retrieve oldest messages first const queryOptions = { pageDirection: PageDirection.FORWARD, }; // Query the Store peer with options await node.store.queryWithOrderedCallback([decoder], callback, options); const storeQuery = node.store.queryGenerator([decoder, options]);","s":"pageDirection","u":"/guides/js-waku/store-retrieve-messages","h":"#pagedirection","p":170},{"i":188,"t":"The cursor option specifies the starting index for retrieving messages. For example, consider a query that retrieves the first page messages and then continues with the next page: import { waku } from \"@waku/sdk\"; // Create the callback function const messages = []; const callback = (wakuMessage) => { messages.push(wakuMessage); // Return \"true\" to stop retrieving pages // Here, it retrieves only the first page return true; }; // Retrieve the first page of messages // This retrieves all the messages if \"return true\" is not present await node.store.queryWithOrderedCallback([decoder], callback); // Create the cursor const lastMessage = messages[messages.length - 1]; const cursor = await waku.createCursor(lastMessage); // Retrieve the next page of messages // The message at the cursor index is excluded from the result await node.store.queryWithOrderedCallback([decoder], callback, { cursor: cursor, }); console.log(messages); info If you omit the cursor option, the query will start from the beginning or end of the history, depending on the page direction.","s":"cursor","u":"/guides/js-waku/store-retrieve-messages","h":"#cursor","p":170},{"i":190,"t":"The timeFilter option specifies a time frame to retrieve messages from. For example, consider a query that retrieves messages from the previous week: // Get the time frame const endTime = new Date(); const startTime = new Date(); startTime.setDate(endTime.getDate() - 7); // Retrieve a week of messages const queryOptions = { timeFilter: { startTime, endTime, }, }; // Query the Store peer with options await node.store.queryWithOrderedCallback([decoder], callback, options); const storeQuery = node.store.queryGenerator([decoder, options]); info The timeFilter option significantly reduces message retrieval performance. To optimise it, consider resuming message retrieval using a cursor that starts from the last seen message. Congratulations! You have successfully retrieved and filtered historical messages on a Light Node using the Store protocol. Have a look at the store-js and store-reactjs-chat examples for working demos.","s":"timeFilter","u":"/guides/js-waku/store-retrieve-messages","h":"#timefilter","p":170},{"i":192,"t":"How can I run a Waku node? Check out the Run Nwaku with Docker Compose guide to learn the simplest and fastest way to run a node. You can also check the comprehensive Run a Nwaku Node guide to explore other options like downloading binaries and building from source. What are the system requirements for running a node? We recommend running a nwaku node with at least 2GB of RAM, especially if WSS is enabled. If running just a Relay node, 0.5GB of RAM is sufficient. How can I interact with my running nwaku node? You can interact with a running nwaku node using the REST API interface or the JavaScript Waku SDK. How can I view the logs of a nwaku node running in Docker? To check your node logs in Docker, use the command: \"docker-compose logs -f nwaku\" What configuration methods are available for nwaku nodes? You can configure Nwaku nodes using command line options and flags, environment variables, and TOML configuration files. Check out the Node Configuration Methods guide to understand their usage and priority. How can I configure my nwaku node before running? Check out the Node Configuration Options guide for available node configuration options, their default values and descriptions. For examples of common configuration use cases, visit the Node Configuration Examples guide. What peer discovery mechanisms are available for nwaku nodes, and how can I configure them? You can configure peer discovery for nwaku nodes through options like Static Peers, DNS Discovery, DiscV5, and Peer Exchange. Check out the Configure Peer Discovery guide for setting up your node. How do I find my nwaku node's addresses for peer discovery? The node listening and ENR addresses can be found through the node's logs and REST API. Check out the Find the node addresses section to understand how to locate your node addresses.","s":"Nwaku FAQ","u":"/guides/nwaku/faq","h":"","p":191},{"i":194,"t":"caution Currently, the JavaScript Waku SDK (@waku/sdk) is NOT compatible with React Native. We plan to add support for React Native in the future. The @waku/react package provides components and UI adapters to integrate @waku/sdk into React applications effortlessly. This guide provides detailed steps for using @waku/react in your project.","s":"Build React DApps Using @waku/react","u":"/guides/js-waku/use-waku-react","h":"","p":193},{"i":196,"t":"First, set up a project using any production-grade React framework or an existing React application. For this guide, we will create a boilerplate using ViteJS: NPM Yarn npm create vite@latest [PROJECT DIRECTORY] -- --template react yarn create vite [PROJECT DIRECTORY] --template react Next, install the required packages for integrating @waku/sdk using your preferred package manager: NPM Yarn npm install @waku/react @waku/sdk protobufjs yarn add @waku/react @waku/sdk protobufjs","s":"Install the dependencies","u":"/guides/js-waku/use-waku-react","h":"#install-the-dependencies","p":193},{"i":198,"t":"In the main.jsx file, which serves as the entry point for a React app, we will set up the LightNodeProvider context provider to wrap the entire application within the Waku provider. Import the following on top of your file: src/main.jsx import { LightNodeProvider } from \"@waku/react\"; // Set the Light Node options const NODE_OPTIONS = { defaultBootstrap: true }; ReactDOM.createRoot(document.getElementById('root')).render( // Use the Light Node context provider , ) Next, create and start a Light Node using the useWaku() function within the App.jsx file: src/App.jsx import { useWaku } from \"@waku/react\"; function App() { // Create and start a Light Node const { node, error, isLoading } = useWaku(); // \"node\" is the created Light Node // \"error\" captures any error that occurs during node creation // \"isLoading\" indicates whether the node is still being created }","s":"Initialise the Waku provider","u":"/guides/js-waku/use-waku-react","h":"#initialise-the-waku-provider","p":193},{"i":200,"t":"Let's build a user interface for sending messages and viewing past messages, modify the App.jsx file with the following code block: src/App.jsx import { useState, useEffect } from 'react'; import { useWaku } from \"@waku/react\"; import { createEncoder, createDecoder } from \"@waku/sdk\"; import protobuf from 'protobufjs'; import './App.css' function App() { const [inputMessage, setInputMessage] = useState(\"\"); const [messages, setMessages] = useState([]); // Update the inputMessage state as the user input changes const handleInputChange = (e) => { setInputMessage(e.target.value); }; // Create and start a Light Node const { node, error, isLoading } = useWaku(); // Create a message encoder and decoder const contentTopic = \"/waku-react-guide/1/chat/proto\"; const encoder = createEncoder({ contentTopic }); const decoder = createDecoder(contentTopic); // Create a message structure using Protobuf const ChatMessage = new protobuf.Type(\"ChatMessage\") .add(new protobuf.Field(\"timestamp\", 1, \"uint64\")) .add(new protobuf.Field(\"message\", 2, \"string\")); // Send the message using Light Push const sendMessage = async () => {} return ( <>

Waku React Demo

{messages.map((message, index) => (
{new Date(message.timestamp).toUTCString()}
{message.message}
))}
) } export default App info In the code above, we also created a message encoder and decoder using the createEncoder() and createDecoder() functions, along with the application message structure with Protobuf. Next, modify the App.css file with the following code block: src/App.css #root { margin: 0 auto; } .chat-interface { display: flex; flex-direction: column; height: 100vh; border: 1px solid #ccc; } .chat-body { flex-grow: 1; overflow-y: auto; padding: 10px; } .message-text { background-color: #f1f1f1; color: #000; padding: 10px; margin-bottom: 10px; } .chat-footer { display: flex; padding: 10px; background-color: #f1f1f1; align-items: center; } #message-input { flex-grow: 1; border-radius: 4px; padding: 10px; margin-right: 10px; } .send-button { background-color: #007bff; border-radius: 4px; }","s":"Build the application interface","u":"/guides/js-waku/use-waku-react","h":"#build-the-application-interface","p":193},{"i":202,"t":"To send messages in our application, we need to modify the sendMessage() function to serialize user input into our Protobuf structure and push it to the network using the useLightPush() function: src/App.jsx import { useLightPush } from \"@waku/react\"; function App() { // Bind push method to a node and encoder const { push } = useLightPush({ node, encoder }); // Send the message using Light Push const sendMessage = async () => { if (!push || inputMessage.length === 0) return; // Create a new message object const timestamp = Date.now(); const protoMessage = ChatMessage.create({ timestamp: timestamp, message: inputMessage }); // Serialise the message and push to the network const payload = ChatMessage.encode(protoMessage).finish(); const { recipients, errors } = await push({ payload, timestamp }); // Check for errors if (errors.length === 0) { setInputMessage(\"\"); console.log(\"MESSAGE PUSHED\"); } else { console.log(errors); } }; }","s":"Send messages using light push","u":"/guides/js-waku/use-waku-react","h":"#send-messages-using-light-push","p":193},{"i":204,"t":"To display messages in our application, we need to use the useFilterMessages() function to create a Filter subscription, receive incoming messages, and render them in our interface: src/App.jsx import { useFilterMessages } from \"@waku/react\"; function App() { // Receive messages from Filter subscription const { messages: filterMessages } = useFilterMessages({ node, decoder }); // Render the list of messages useEffect(() => { setMessages(filterMessages.map((wakuMessage) => { if (!wakuMessage.payload) return; return ChatMessage.decode(wakuMessage.payload); })); }, [filterMessages]); }","s":"Receive messages using filter","u":"/guides/js-waku/use-waku-react","h":"#receive-messages-using-filter","p":193},{"i":206,"t":"To display messages from the past, we need to retrieve them from the Store protocol using the useStoreMessages() function when our application initialises and then render them alongside newly received messages: src/App.jsx import { useFilterMessages, useStoreMessages } from \"@waku/react\"; function App() { // Query Store peers for past messages const { messages: storeMessages } = useStoreMessages({ node, decoder }); // Receive messages from Filter subscription const { messages: filterMessages } = useFilterMessages({ node, decoder }); // Render both past and new messages useEffect(() => { const allMessages = storeMessages.concat(filterMessages); setMessages(allMessages.map((wakuMessage) => { if (!wakuMessage.payload) return; return ChatMessage.decode(wakuMessage.payload); })); }, [filterMessages, storeMessages]); } info To explore the available Store query options, have a look at the Retrieve Messages Using Store Protocol guide. tip You have successfully integrated @waku/sdk into a React application using the @waku/react package. Have a look at the web-chat example for a working demo and the Building a Tic-Tac-Toe Game with Waku tutorial to learn more.","s":"Retrieve messages using store","u":"/guides/js-waku/use-waku-react","h":"#retrieve-messages-using-store","p":193},{"i":208,"t":"Discv5 is a decentralised and efficient peer discovery mechanism for the Waku Network. It uses a Distributed Hash Table (DHT) for storing ENR records, providing resistance to censorship. Discv5 offers a global view of participating nodes, enabling random sampling for load distribution. It uses bootstrap nodes as an entry point to the network, providing randomised sets of nodes for mesh expansion. Have a look at the Discv5 specification to learn more. Pros​ Decentralised with random sampling from a global view. Continuously researched and improved. Cons​ Requires lots of connections and involves frequent churn. Relies on User Datagram Protocol (UDP), which is not supported in web browsers.","s":"Discv5","u":"/learn/concepts/discv5","h":"","p":207},{"i":210,"t":"DNS Discovery protocol is executed. Alice retrieves Bob's ENR (Ethereum Node Record) from DNS Server. Alice executes the Discv5 protocol with Bob using UDP connection details from ENR. Bob returns Carol's, David's and Erin's ENRs to Alice. Alice decodes ENRs and extracts the details of Carol, David, and Erin's TCP and UDP connections. Alice executes the Discv5 protocol with Carol using UDP connection details from ENR. Carol returns Frank's, Gwen's and Harry's ENRs to Alice. Alice decodes ENRs and extracts Frank's, Gwen's and Harry's TCP and UDP connection details. Alice selects to dial David, Frank and Gwen. Alice dials David, Frank and Gwen over libp2p using TCP connection details from ENRs.","s":"Overview","u":"/learn/concepts/discv5","h":"#overview","p":207},{"i":212,"t":"This guide provides detailed steps to build and run a nwaku node in a Docker container. If you prefer a pre-configured setup with a monitoring dashboard, see the Run Nwaku with Docker Compose guide.","s":"Run Nwaku in a Docker Container","u":"/guides/nwaku/run-docker","h":"","p":211},{"i":214,"t":"Ensure Docker is installed on your system using the appropriate instructions provided in the Docker documentation. info We recommend running a nwaku node with at least 2GB of RAM, especially if WSS is enabled. If running just a Relay node, 0.5GB of RAM is sufficient.","s":"Prerequisites","u":"/guides/nwaku/run-docker","h":"#prerequisites","p":211},{"i":216,"t":"The Nwaku Docker images are available on the Docker Hub public registry under the statusteam/nim-waku repository. Please visit statusteam/nim-waku/tags for images of specific releases. You can also build the Docker image locally: # Clone the repository git clone --recurse-submodules https://github.com/waku-org/nwaku cd nwaku # Build docker image make docker-image","s":"Get Docker image","u":"/guides/nwaku/run-docker","h":"#get-docker-image","p":211},{"i":218,"t":"Run nwaku in a new Docker container: docker run [OPTIONS] [IMAGE] [ARG...] OPTIONS are your selected Docker options IMAGE is the image and tag you pulled from the registry or built locally ARG... is the list of arguments for your node configuration options Run nwaku using the most typical configuration: docker run -i -t -p 60000:60000 -p 9000:9000/udp statusteam/nim-waku:v0.20.0 \\ --dns-discovery=true \\ --dns-discovery-url=enrtree://AIRVQ5DDA4FFWLRBCHJWUWOO6X6S4ZTZ5B667LQ6AJU6PEYDLRD5O@sandbox.waku.nodes.status.im \\ --discv5-discovery=true \\ --nat=extip:[YOUR PUBLIC IP] # or, if you are behind a nat: --nat=any To find your public IP, use: dig TXT +short o-o.myaddr.l.google.com @ns1.google.com | awk -F'\"' '{ print $2}' info We recommend using explicit port mappings (-p) when exposing ports accessible from outside the host (listening and discovery ports, API servers). tip If you encounter issues running your node or require assistance with anything, please visit the #node-help channel on our Discord. Congratulations! You have successfully built and started a nwaku node in a Docker container. Have a look at the Node Configuration Examples guide to learn how to configure nwaku for different use cases.","s":"Run Docker container","u":"/guides/nwaku/run-docker","h":"#run-docker-container","p":211},{"i":220,"t":"Built upon the foundation of EIP-1459: Node Discovery via DNS, DNS Discovery allows the retrieval of an ENR tree from the TXT field of a domain name. This innovative approach enables the storage of essential node connection details, including IP, port, and multiaddr. This bootstrapping method allows anyone to register and publish a domain name for the network, promoting increased decentralisation. Pros​ Low latency, low resource requirements. Easy bootstrap list updates by modifying the domain name, eliminating the need for code changes. Ability to reference a larger list of nodes by including other domain names in the code or ENR tree. Cons​ Vulnerable to censorship: Domain names can be blocked or restricted. Limited scalability: The listed nodes are at risk of being overwhelmed by receiving all queries. Also, operators must provide their ENR to the domain owner for listing.","s":"DNS Discovery","u":"/learn/concepts/dns-discovery","h":"","p":219},{"i":222,"t":"DNS lookup query to retrieve TXT data stored on example.com domain. enrtree-root is returned, and the value of e is the enr-root, the root hash of the node subtree. DNS lookup query to retrieve TXT data stored on .example.com domain. enrtree-branch is returned; this tree contains hashes of node subtrees. DNS lookup query to retrieve TXT data stored on DU...VQ.example.com domain, the first leaf of enrtree-branch. enr record is returned. Returned value is decoded, and peer connection details such as IP address and port are learned.","s":"Overview","u":"/learn/concepts/dns-discovery","h":"#overview","p":219},{"i":224,"t":"Content Topics are metadata strings set by developers on outgoing messages to facilitate protocol-level features like selectively processing incoming messages (Relay or Filter) and retrieving historical messages (Store) that meet specific filtering criteria. Have a look at the WAKU2-TOPICS specification to learn more.","s":"Content Topics","u":"/learn/concepts/content-topics","h":"","p":223},{"i":226,"t":"Here is the recommended format for content topics: /{application-name}/{version}/{content-topic-name}/{encoding} application-name: This is the unique name of your decentralised application (DApp) to prevent conflicts with other DApps. version: Typically starting at 1, this field helps track breaking changes in your messages. content-topic-name: The specific name of the content topic used for filtering. encoding: The message encoding or serialisation format, with Protocol Buffers (proto) being the recommended choice. For example, if your DApp is called SuperCrypto and it allows users to receive notifications and send private messages, you can consider using the following content topics: /supercrypto/1/notification/proto /supercrypto/1/private-message/proto tip While you can choose any encoding format for your Content Topic, we highly recommend using Protocol Buffers (proto) because of its efficiency. Choosing a lightweight format ensures optimal performance of your DApp.","s":"Naming format","u":"/learn/concepts/content-topics","h":"#naming-format","p":223},{"i":228,"t":"When choosing a content topic, it is essential to consider the privacy implications. Here are several factors to keep in mind:","s":"Naming considerations","u":"/learn/concepts/content-topics","h":"#naming-considerations","p":223},{"i":230,"t":"The Filter, Store, and Light Push protocols share content topics with peers, allowing them to link IP and content topic interests. The Relay protocol, using GossipSub, provides recipient anonymity, which can be compromised if the content topic exposes user information. For example, instead of using Personally Identifiable Information (PII) in the content topic (e.g., a public key), you can create buckets (e.g., based on the first 4 bytes of the public key hash). info Waku is developing privacy-preserving features like Anonymous Filter Subscription for the Filter protocol and Anonymous Query for the Store protocol to hide content topics from potential adversaries.","s":"Protocols disclose content topics to peers","u":"/learn/concepts/content-topics","h":"#protocols-disclose-content-topics-to-peers","p":223},{"i":232,"t":"You can increase k-anonymity within the network by using a unified content topic across the entire application or targeting specific features like notifications or private messages, allowing multiple users to share it. We recommend switching functionality using the Protocol Buffer (proto) message format. By doing so, applications can retain a high granularity and functionality while using a single content topic, preserving user privacy. For example: message NotificationPayload { ... } message FeatureAbcPayload { ... } // By default, all fields in protobuf are optional so only field may be encoded at a time message Payload { NotificationPayload notification = 1; FeatureAbcPayload feature_abc = 2; }","s":"Increasing k-anonymity preserves user anonymity","u":"/learn/concepts/content-topics","h":"#increasing-k-anonymity-preserves-user-anonymity","p":223},{"i":234,"t":"When an application uses a single content topic, all users using request/response protocols (Filter, Store) receive all its messages. For heavy traffic, developers can create buckets by hashing a unique identifier (e.g., recipient's ID, public key, or app domain topic) and adding its first byte to the content topic, like /my-app/0/a/proto. This approach divides traffic into multiple topics, reducing the messages users have to download. Developers can add more first bytes to the content topic over time to improve efficiency and privacy based on messages and user needs. info The k value of k-anonymity equals the number of IDs for which the first character of the hash is \"a\". For example, using a single content topic in an application with 10,000 users results in k = 10,000. However, using the hash ID's first character, k reduces to 10,000 / 16 = 625.","s":"Creating buckets help in distributing traffic","u":"/learn/concepts/content-topics","h":"#creating-buckets-help-in-distributing-traffic","p":223},{"i":236,"t":"nwaku-compose is a ready-to-use Docker Compose setup that configures the following automatically: nwaku node running Relay and Store protocols with RLN enabled. Simple frontend to interact with the node and Waku network to send and receive messages. Grafana metrics dashboard for advanced users and node operators to monitor the node.","s":"Run Nwaku with Docker Compose","u":"/guides/nwaku/run-docker-compose","h":"","p":235},{"i":238,"t":"tip Check out the Waku Node Operator Cheatsheet to learn how to easily run, monitor, and interact with a node.","s":"Video tutorial","u":"/guides/nwaku/run-docker-compose","h":"#video-tutorial","p":235},{"i":240,"t":"Git or GitHub Desktop Docker and Docker Compose Ethereum Sepolia WebSocket Endpoint Wallet with Sepolia Ethereum (less than 0.01 Sepolia ETH) A password to protect your RLN membership info We recommend running a nwaku node with at least 2GB of RAM, especially if WSS is enabled. If running just a Relay node, 0.5GB of RAM is sufficient.","s":"Prerequisites","u":"/guides/nwaku/run-docker-compose","h":"#prerequisites","p":235},{"i":242,"t":"git clone https://github.com/waku-org/nwaku-compose cd nwaku-compose","s":"Clone the repository","u":"/guides/nwaku/run-docker-compose","h":"#clone-the-repository","p":235},{"i":244,"t":"Docker Compose reads the ./.env file from the filesystem. You can use .env.example as a template to provide the above values. The recommended process for working with .env files is to duplicate .env.example, rename it as .env, and then make the necessary value edits. cp .env.example .env ${EDITOR} .env caution Ensure that you do NOT include any secrets in the .env.example file, as it could accidentally be shared in the Git repository.","s":"Configure the setup","u":"/guides/nwaku/run-docker-compose","h":"#configure-the-setup","p":235},{"i":246,"t":"The RLN membership is your access key to The Waku Network. Its registration is done on-chain, allowing your nwaku node to send messages decentralised and privately, respecting some rate limits. Other peers won't relay messages that exceed the rate limit. This command registers your membership and saves it in the keystore/keystore.json file: ./register_rln.sh info If you only want to relay traffic without sending messages to the network, you don't need to register for RLN membership.","s":"Register for RLN membership","u":"/guides/nwaku/run-docker-compose","h":"#register-for-rln-membership","p":235},{"i":248,"t":"Launch all the processes: nwaku node, database for storing messages, and Grafana for metrics with the following command. Your RLN membership is loaded into nwaku under the hood: docker-compose up -d View the logs of the node to confirm that it is running correctly: docker-compose logs -f nwaku","s":"Run the node","u":"/guides/nwaku/run-docker-compose","h":"#run-the-node","p":235},{"i":250,"t":"Visit http://localhost:3000/d/yns_4vFVk/nwaku-monitoring to view your node metrics in real time. tip To access Grafana from outside your machine, remove 127.0.0.1 and open the port. Consider setting up a password for Grafana to ensure security.","s":"Monitor the node","u":"/guides/nwaku/run-docker-compose","h":"#monitor-the-node","p":235},{"i":252,"t":"Your nwaku node provides a REST API on port 8645 for interacting with it: # Get nwaku version curl --location 'http://127.0.0.1:8645/debug/v1/version' # Get nwaku info curl --location 'http://127.0.0.1:8645/debug/v1/info' Send a message to a contentTopic, which all subscribers will receive. Please note that the payload is encoded in base64. curl --location 'http://127.0.0.1:8645/relay/v1/auto/messages' \\ --header 'Content-Type: application/json' \\ --data '{ \"payload\": \"'$(echo -n \"Hello Waku Network - from Anonymous User\" | base64)'\", \"contentTopic\": \"/my-app/2/chatroom-1/proto\" }' Retrieve messages sent to a contentTopic. Please note that this query can be made to any Store node within the network: curl --location 'http://127.0.0.1:8645/store/v1/messages?contentTopics=%2Fmy-app%2F2%2Fchatroom-1%2Fproto&pageSize=50&ascending=true' \\ --header 'Accept: application/json' tip If you encounter issues running your node or require assistance with anything, please visit the #node-help channel on our Discord. Congratulations! You have successfully started a nwaku node with RLN enabled using Docker Compose. Have a look at the Node Configuration Examples and Advanced Configuration guides to learn how to configure nwaku for different use cases.","s":"Interact with the node","u":"/guides/nwaku/run-docker-compose","h":"#interact-with-the-node","p":235},{"i":254,"t":"Nwaku is a lightweight and robust Nim client for running a Waku node, equipped with tools to monitor and maintain a running node. Nwaku is highly configurable, enabling operators to select the protocols they want to support based on their needs, motivations, and available resources. This guide provides detailed steps to download, build, configure, and connect a nwaku node to the Waku Network. It also includes interacting with the node and finding its addresses. info We recommend running a nwaku node with at least 2GB of RAM, especially if WSS is enabled. If running just a Relay node, 0.5GB of RAM is sufficient.","s":"Run a Nwaku Node","u":"/guides/nwaku/run-node","h":"","p":253},{"i":256,"t":"To run a node, you must have the nwaku binary. Nwaku provides multiple options for running a node: Run nwaku in Docker (recommended)​ We recommend using Docker Compose to run a node because it's the simplest and fastest way to configure and run one: Description Documentation Docker Compose Run a nwaku node with Docker Compose Run Nwaku with Docker Compose Docker Container Run a nwaku node in a Docker Container Run Nwaku in a Docker Container Download the binary​ Description Documentation Precompiled Binary Download a precompiled binary of the nwaku node Download Nwaku Binary Nightly Release Try the latest nwaku updates without compiling the binaries Download Nightly Release Build the binary​ Description Documentation Build from Source Build the node from the nwaku source code Build Nwaku from Source tip You can run the nwaku binaries and Docker images on cloud service providers like Google Cloud, Microsoft Azure, Amazon Web Services, and DigitalOcean.","s":"Get the node binary","u":"/guides/nwaku/run-node","h":"#get-the-node-binary","p":253},{"i":258,"t":"Once you have gotten the nwaku binary, run it using the default configuration: # Run the Docker Compose docker-compose up -d # Run the standalone binary ./build/wakunode2 tip To learn how to customise the configuration of a nwaku node, have a look at the Node Configuration Methods and Node Configuration Examples guides.","s":"Run the node","u":"/guides/nwaku/run-node","h":"#run-the-node","p":253},{"i":260,"t":"To join the Waku Network, nodes must bootstrap for an entry point before discovering more peers. Nwaku provides multiple peer discovery mechanisms: Description Documentation Static Peers Configure the bootstrap nodes that nwaku should establish connections upon startup Configure Static Peers DNS Discovery Enable nwaku to bootstrap nodes using the DNS Discovery mechanism Configure DNS Discovery Discv5 Enable nwaku to discover peers using the Discv5 mechanism Configure Discv5 Peer Exchange Enable Peer Exchange protocol for light nodes to request peers from your nwaku node Configure Peer Exchange tip We suggest configuring WebSocket transport for your node to enable support and serving of browser peers using @waku/sdk.","s":"Bootstrap the node","u":"/guides/nwaku/run-node","h":"#bootstrap-the-node","p":253},{"i":262,"t":"You can interact with a running nwaku node through the REST API, such as querying the node information using the Get node info endpoint: Request Response curl --location 'http://127.0.0.1:8645/debug/v1/info' \\ --header 'Accept: application/json' { \"listenAddresses\": [ \"/ip4/0.0.0.0/tcp/60000/p2p/16Uiu2HAmUbPquFQqje3jiqoB5YoiUbBya59NB4qqEzeiTNGHeA6w\" ], \"enrUri\": \"enr:-Iu4QCQZXZDb_JsYmLoYor0F5E_95HbIywgO_wgx2rIdDbmCJZkTzmlCr0wmMzV47lgik_tVwww5mIng90Ris83TisMBgmlkgnY0gmlwhAAAAACJc2VjcDI1NmsxoQPszztG-Ev52ZB7tk0jF8s6Md4KvyY_rhzNZokaaB_ABIN0Y3CC6mCFd2FrdTIB\" } info The listenAddresses field stores the node's listening addresses, while the enrUri field stores the discoverable ENR URI for peer discovery.","s":"Interact with the node","u":"/guides/nwaku/run-node","h":"#interact-with-the-node","p":253},{"i":264,"t":"You can check the health status of the node by calling the Get node health status endpoint of the REST API: Request Response curl --location 'http://127.0.0.1:8645/health' \\ --header 'Accept: text/plain' Node is healthy tip If you encounter issues running your node or require assistance with anything, please visit the #node-help channel on our Discord. Congratulations! You have successfully started, configured, and connected a nwaku node to the Waku Network. Have a look at the Node Configuration Examples guide to learn how to configure nwaku for different use cases.","s":"Check the node health status","u":"/guides/nwaku/run-node","h":"#check-the-node-health-status","p":253},{"i":266,"t":"When initialising a Waku node, it must connect with other peers to enable message sending, receiving, and retrieval. To achieve this, a discovery mechanism is employed to locate other peers in the network. This process is known as bootstrapping. Once a connection is established, the node must actively seek out additional peers to have: Sufficient peers in the Relay mesh: The goal is to have at least 6 peers in the mesh. This ensures a robust network where messages can be efficiently relayed. Reserve peers for backup: It is essential to have a surplus of peers available as reserves. These reserves are backups when the current peers become overloaded or experience unexpected disconnections. Peers with specific capabilities: The node seeks out peers with specific capabilities, such as Store, Light Push, or Filter. This allows for targeted interactions and enhanced functionality based on the desired capabilities. Waku supports multiple peer discovery mechanisms, such as: Configuring Static Peers Peer Discovery via DNS Discv5 Ambient Peer Discovery Peer Exchange","s":"Peer Discovery","u":"/learn/concepts/peer-discovery","h":"","p":265},{"i":268,"t":"Waku is a unified and cohesive entity that offers a rich ecosystem with three distinct network interaction domains. These domains serve specialised purposes and contribute to the robust functionality of Waku, forming its foundation.","s":"Network Domains","u":"/learn/concepts/network-domains","h":"","p":267},{"i":270,"t":"Peer discovery in Waku facilitates locating other nodes within the network. As a modular protocol, Waku incorporates various discovery mechanisms, such as Discv5 and Peer Exchange. These mechanisms allow developers to choose the most suitable option(s) for their specific use cases and user environments, including mobile phones, desktop browsers, servers, and more.","s":"Discovery domain","u":"/learn/concepts/network-domains","h":"#discovery-domain","p":267},{"i":272,"t":"GossipSub derives its name from the practice within Pub/Sub networks where peers gossip about the messages they have encountered, thus establishing a message delivery network. Waku employs gossiping through Relay to distribute messages across the network. Additionally, Waku introduces RLN Relay, an experimental mechanism that combines privacy preservation and economic spam protection.","s":"Gossip domain","u":"/learn/concepts/network-domains","h":"#gossip-domain","p":267},{"i":274,"t":"Waku provides a set of protocols to optimise its performance in resource-limited environments like low bandwidth or mostly offline scenarios for multiple purposes. Store enables the retrieval of historical messages. Filter efficiently retrieves a subset of messages to conserve bandwidth. Light Push facilitates message publication for nodes with limited bandwidth and short connection windows.","s":"Request/response domain","u":"/learn/concepts/network-domains","h":"#requestresponse-domain","p":267},{"i":276,"t":"Here is a diagram illustrating the interaction between different protocols within the Waku Network. The Pub/Sub topic pubtopic1 serves as a means of routing messages (the network employs a default Pub/Sub topic) and indicates that it is subscribed to messages on that topic for a relay. Node D serves as a Store and is responsible for storing messages. Node A creates a WakuMessage msg1 with Content Topic contentTopic1. Node F requests to get messages filtered by Pub/Sub topic pubtopic1 and Content Topic contentTopic1. Node D subscribes F to this filter and will forward messages that match that filter in the future. Node A publishes msg1 on pubtopic1. The message is sent from Node A to Node B and then forwarded to Node D. Node D, upon receiving msg1, stores the message for future retrieval by other nodes and forwards it to Node C. Node D also pushes msg1 to Node F, informing it about the arrival of a new message. At a later time, Node E comes online and requests messages matching pubtopic1 and contentTopic1 from Node D. Node D responds with msg1 and potentially other messages that match the query.","s":"Overview of protocol interaction","u":"/learn/concepts/network-domains","h":"#overview-of-protocol-interaction","p":267},{"i":278,"t":"The primary objective of this protocol is to facilitate peer connectivity for resource-limited devices without relying on Discv5. The peer exchange protocol enables light nodes to request peers from other nodes within the network. info Peer Exchange enables requesting random peers from other network nodes without revealing information about their connectivity or neighbourhood. Pros​ Low resource requirements. Decentralised with random sampling of nodes from a global view using Discv5. Cons​ Decreased anonymity. Imposes additional load on responder nodes.","s":"Peer Exchange","u":"/learn/concepts/peer-exchange","h":"","p":277},{"i":280,"t":"DNS Discovery protocol is executed. Alice retrieves Bob's websocket multiaddr from DNS Server. Alice dials Bob using libp2p protocols. Alice executes a Peer Exchange query to Bob. Bob returns Carol's and David's ENR to Alice. Alice decodes ENRs and extracts Carol's and David's websocket multiaddrs. Alice dials Carol and David. Alice can now drop the connection with Bob (bootstrap node); Alice has 2 connections to the Waku Network.","s":"Overview","u":"/learn/concepts/peer-exchange","h":"#overview","p":277},{"i":282,"t":"Waku applications have the flexibility to embed bootstrap node addresses directly into their codebase. Developers can either use static peers operated by Status or run a node. Pros​ Low latency. Low resource requirements. Cons​ Vulnerable to censorship: Node IPs can be blocked or restricted. Limited scalability: The number of nodes is fixed and cannot easily be expanded. Maintenance challenges: Updating the node list requires modifying the code, which can be cumbersome and involves releasing and deploying.","s":"Static Peers","u":"/learn/concepts/static-peers","h":"","p":281},{"i":284,"t":"Alice establishes connections with Bob and Carol using their node details, which are predefined (hard-coded) into Alice's node.","s":"Overview","u":"/learn/concepts/static-peers","h":"#overview","p":281},{"i":286,"t":"info When starting the node, nwaku will display all the public listening and discovery addresses at the INFO log level. You can find the addresses of a running node through its logs or by calling the Get node info endpoint of the REST API.","s":"Find Your Node Address","u":"/guides/nwaku/find-node-address","h":"","p":285},{"i":288,"t":"Look for the log entry that begins with Listening on, for example: Nwaku Log Output INF 2023-06-15 16:09:54.448+01:00 Listening on topics=\"waku node\" tid=1623445 file=waku_node.nim:922 full=[/ip4/0.0.0.0/tcp/60000/p2p/16Uiu2HAmQCsH9V81xoqTwGuT3qwkZWbwY1TtTQwpr3DjHU2TSwMn][/ip4/0.0.0.0/tcp/8000/ws/p2p/16Uiu2HAmQCsH9V81xoqTwGuT3qwkZWbwY1TtTQwpr3DjHU2TSwMn] # Listening TCP transport address /ip4/0.0.0.0/tcp/60000/p2p/16Uiu2HAmQCsH9V81xoqTwGuT3qwkZWbwY1TtTQwpr3DjHU2TSwMn # Listening WebSocket address /ip4/0.0.0.0/tcp/8000/ws/p2p/16Uiu2HAmQCsH9V81xoqTwGuT3qwkZWbwY1TtTQwpr3DjHU2TSwMn","s":"Listening addresses","u":"/guides/nwaku/find-node-address","h":"#listening-addresses","p":285},{"i":290,"t":"A nwaku node can encode its addressing information in an Ethereum Node Record (ENR).","s":"Discoverable ENR addresses","u":"/guides/nwaku/find-node-address","h":"#discoverable-enr-addresses","p":285},{"i":292,"t":"Look for the log entry that begins with DNS: discoverable ENR, for example: Nwaku Log Output INF 2023-06-15 16:09:54.448+01:00 DNS: discoverable ENR topics=\"waku node\" tid=1623445 file=waku_node.nim:923 enr=enr:-Iu4QBKYj8Ovxwz4fIalxZ_1a8dOCU2WC-1LQrcBCCb4Np93f9-UuSZXn3vagJL1S3k3hwRYfOp3JSbW7_VqwtqMIeMBgmlkgnY0gmlwhAAAAACJc2VjcDI1NmsxoQOrmyV59dAzY4ZKrvrj32VOoZbLby8dCKFnXnqhIdQ0NYN0Y3CC6mCFd2FrdTIB # ENR the node addresses are encoded in enr:-Iu4QBKYj8Ovxwz4fIalxZ_1a8dOCU2WC-1LQrcBCCb4Np93f9-UuSZXn3vagJL1S3k3hwRYfOp3JSbW7_VqwtqMIeMBgmlkgnY0gmlwhAAAAACJc2VjcDI1NmsxoQOrmyV59dAzY4ZKrvrj32VOoZbLby8dCKFnXnqhIdQ0NYN0Y3CC6mCFd2FrdTIB","s":"ENR for DNS discovery","u":"/guides/nwaku/find-node-address","h":"#enr-for-dns-discovery","p":285},{"i":294,"t":"Look for the log entry that begins with Discv5: discoverable ENR, for example: Nwaku Log Output INF 2023-06-15 16:09:54.448+01:00 Discv5: discoverable ENR topics=\"waku node\" tid=1623445 file=waku_node.nim:924 enr=enr:-IO4QDxToTg86pPCK2KvMeVCXC2ADVZWrxXSvNZeaoa0JhShbM5qed69RQz1s1mWEEqJ3aoklo_7EU9iIBcPMVeKlCQBgmlkgnY0iXNlY3AyNTZrMaEDdBHK1Gx6y_zv5DVw5Qb3DtSOMmVHTZO1WSORrF2loL2DdWRwgiMohXdha3UyAw # ENR the node addresses are encoded in enr:-IO4QDxToTg86pPCK2KvMeVCXC2ADVZWrxXSvNZeaoa0JhShbM5qed69RQz1s1mWEEqJ3aoklo_7EU9iIBcPMVeKlCQBgmlkgnY0iXNlY3AyNTZrMaEDdBHK1Gx6y_zv5DVw5Qb3DtSOMmVHTZO1WSORrF2loL2DdWRwgiMohXdha3UyAw Congratulations! You have successfully found the listening and discoverable addresses for your nwaku node. Have a look at the Configure Peer Discovery](/guides/nwaku/configure-discovery) guide to learn how to discover and connect with peers in the network.","s":"ENR for Discv5","u":"/guides/nwaku/find-node-address","h":"#enr-for-discv5","p":285},{"i":296,"t":"How can I start building my application using Waku? Check out the Getting Started guide to explore our numerous SDKs and learn how to run a Waku node. Does messaging on Waku require a gas fee? No, sending and receiving messages on Waku involves no gas fee. What encryption does Waku use? Waku uses libp2p noise encryption for node-to-node connections. However, no default encryption method is applied to the data sent over the network. This design choice enhances Waku's encryption flexibility, encouraging developers to use custom protocols or Waku message payload encryption methods freely. Where does Waku store the messages? Waku's Store protocol is designed to temporarily store messages within the network. However, Waku does not guarantee the message's availability and recommends using Codex for long-term storage. Can Waku only be used for wallet-to-wallet messaging? No, Waku is flexible and imposes no specific rules on identifiers. How does Waku differ from IPFS? Waku focuses on short, ephemeral, real-time time messages, while IPFS focuses on large, long-term data storage. Although there's an overlap between the two technologies, Waku does not currently support large data for privacy reasons. What are Rate Limiting Nullifiers (RLN)? Rate Limiting Nullifier is a zero-knowledge (ZK) protocol enabling spam protection in a decentralized network while preserving privacy. Each message must be accompanied by a ZK proof, which Relay nodes verify to ensure the publishers do not send more messages than they are allowed. The ZK proof does not leak any private information about message publishers - it only proves they are members of a set of users allowed to publish a certain number of messages per given time frame.","s":"Waku FAQ","u":"/learn/faq","h":"","p":295},{"i":298,"t":"This guide provides detailed steps to configure a nwaku node for different use cases.","s":"Node Configuration Examples","u":"/guides/nwaku/configure-nwaku","h":"","p":297},{"i":300,"t":"To join the Waku Network, nodes must bootstrap for an entry point before discovering more peers. Nwaku provides multiple peer discovery mechanisms: Configure Static Peers Configure DNS Discovery Configure Discv5 Configure Peer Exchange","s":"Connect to other peers","u":"/guides/nwaku/configure-nwaku","h":"#connect-to-other-peers","p":297},{"i":302,"t":"You can set up an IPv4 DNS domain name that resolves to the public IPv4 address of a node using the dns4-domain-name option. This allows the node's publicly announced multiaddrs to use the /dns4 scheme. ./build/wakunode2 --dns4-domain-name=[DOMAIN NAME] For example, consider the domain name nwakunode.com, which resolves to a nwaku node: ./build/wakunode2 --dns4-domain-name=nwakunode.com Browser nodes can only connect to nodes with a domain name and secure WebSocket (wss) configured. These nodes will generate a discoverable ENR with /wss as the multiaddr and /dns4 as the domain name. This configuration is essential for verifying domain certificates when establishing a secure connection. info This example describes configuring a domain name that resolves to your node's IP address and is unrelated to DNS Discovery. tip You can use the domain name provided by your cloud provider to configure the domain name for your node.","s":"Configure a domain name","u":"/guides/nwaku/configure-nwaku","h":"#configure-a-domain-name","p":297},{"i":304,"t":"To enable message caching and serve them to network peers, enable the Store protocol using the following configuration options: store: Enables storing messages to serve them to peers (disabled by default). store-message-retention-policy: Retention policy of the store node (how long messages will be stored). Three different retention policies are supported: Time retention policy: time: (e.g., time:14400) Capacity retention policy: capacity: (e.g, capacity:25000) Size retention policy: size: (e.g, size:512MB or size:10GB) Set this option to none to disable the retention policy. If you omit this option, it will default to time:172800 (48 hours). store-message-db-url: Database connection URL for storing messages in the SQLAlchemy database URL format. Setting this option to an empty string will instruct the node to use the fallback in-memory message store. If you omit this option, it will default to sqlite://store.sqlite3. ./build/wakunode2 \\ --store=true \\ --store-message-retention-policy=[MESSAGE RETENTION POLICY] \\ --store-message-db-url=[DATABASE CONNECTION URL] For example, consider a nwaku node that is configured to be a Store protocol and retain messages received in the last 21600 seconds (6 hours): ./build/wakunode2 \\ --store=true \\ --store-message-retention-policy=time:21600 \\ --store-message-db-url=sqlite://store.sqlite3 You can configure nwaku as a Store client using the storenode option. This allows the node to query peers for historical messages but not store any message itself. ./build/wakunode2 --storenode=[STORE PEER MULTIADDR] For example, consider a nwaku node that does not store messages but can query peers for historical messages: ./build/wakunode2 --storenode=/dns4/node-01.ac-cn-hongkong-c.waku.sandbox.status.im/tcp/30303/p2p/16Uiu2HAmSJvSJphxRdbnigUV5bjRRZFBhTtWFTSyiKaQByCjwmpV","s":"Configure store protocol and message store","u":"/guides/nwaku/configure-nwaku","h":"#configure-store-protocol-and-message-store","p":297},{"i":306,"t":"Nodes generate new random key pairs at each boot, leading to different multiaddrs. To maintain consistency, you can use a pre-generated private key with the nodekey option: ./build/wakunode2 --nodekey=[NODE PRIVATE KEY] This option takes a Secp256k1 private key (64-char hex string). On Linux, you can use the OpenSSL rand command for a pseudo-random 32-byte hex string: openssl rand -hex 32 # 286cae9f2990bfc49dafdd3a9e737f56ddba3656e5e427108cef456fb67680e8 On Linux, you can create a reusable key file using OpenSSL. To get the 32-byte private key in hex format, use the ecparam command and some standard utilities: # Generate key file openssl ecparam -genkey -name secp256k1 -out my_private_key.pem # Extract 32-byte private key openssl ec -in my_private_key.pem -outform DER | tail -c +8 | head -c 32| xxd -p -c 32 # read EC key # writing EC key # 286cae9f2990bfc49dafdd3a9e737f56ddba3656e5e427108cef456fb67680e8 You can use the output 286cae9f2990bfc49dafdd3a9e737f56ddba3656e5e427108cef456fb67680e8 as a Node Key for nwaku: ./build/wakunode2 --nodekey=286cae9f2990bfc49dafdd3a9e737f56ddba3656e5e427108cef456fb67680e8","s":"Generate and configure a node key","u":"/guides/nwaku/configure-nwaku","h":"#generate-and-configure-a-node-key","p":297},{"i":308,"t":"WebSocket is the only transport method browser nodes support using @waku/sdk. To enable WebSocket in nwaku to serve browser peers, use the following configuration options: websocket-support: Enables WebSocket (ws) on the node (disabled by default). websocket-port (optional): WebSocket listening port. If you omit this option, it will default to 8000. websocket-secure-support: Enables Secure WebSocket (wss) on the node (disabled by default). websocket-secure-key-path: Secure WebSocket key path. websocket-secure-cert-path: Secure WebSocket Certificate path. ./build/wakunode2 \\ --websocket-support=true \\ --websocket-port=[WEBSOCKET LISTENING PORT] \\ --websocket-secure-support=true \\ --websocket-secure-key-path=[SECURE WEBSOCKET KEY PATH] \\ --websocket-secure-cert-path=[SECURE WEBSOCKET CERTIFICATE PATH] For example, consider a nwaku node that enabled WebSocket (unencrypted) for local testing on port 8001: ./build/wakunode2 \\ --websocket-support=true \\ --websocket-port=8001 Consider a nwaku node that enabled Secure WebSocket (encrypted) using its key and certificate (privkey.pem and fullchain.pem) on port 8002: ./build/wakunode2 \\ --websocket-secure-support=true \\ --websocket-secure-key-path=privkey.pem \\ --websocket-secure-cert-path=fullchain.pem \\ --websocket-port=8002 tip You can use Let's Encrypt or Certbot to generate a valid certificate for your nwaku node: sudo certbot certonly -d ","s":"Configure WebSocket transport","u":"/guides/nwaku/configure-nwaku","h":"#configure-websocket-transport","p":297},{"i":310,"t":"Nwaku provides a REST API to interact with the node and Waku Network. To enable the REST API, use the following configuration options: rest: Enables the REST API server on the node (disabled by default). rest-address (optional): Listening address of the REST API server. If you omit this option, it will default to 127.0.0.1. rest-port (optional): Listening port of the REST API server. If you omit this option, it will default to 8645. rest-relay-cache-capacity (optional): Capacity of the Relay REST API message cache. If you omit this option, it will default to 30. rest-admin (optional): Enables access to REST admin API (disabled by default). rest-private (optional): Enables access to REST private API (disabled by default). ./build/wakunode2 \\ --rest=true \\ --rest-address=[REST SERVER LISTENING ADDRESS] \\ --rest-port=[REST SERVER LISTENING PORT] \\ --rest-relay-cache-capacity=[MESSAGE CACHE CAPACITY] \\ --rest-admin=[true|false] \\ --rest-private=[true|false] For example, consider a nwaku node that enabled the REST API server on port 9000: ./build/wakunode2 \\ --rest=true \\ --rest-port=9000 \\ --rest-address=127.0.0.1 Consider a nwaku node that enabled the REST admin and private API with a message cache capacity of 100: ./build/wakunode2 \\ --rest=true \\ --rest-admin=true \\ --rest-private=true \\ --rest-relay-cache-capacity=100","s":"Configure REST API server","u":"/guides/nwaku/configure-nwaku","h":"#configure-rest-api-server","p":297},{"i":312,"t":"To enable nwaku to serve light clients, enable the Filter protocol using filter option: ./build/wakunode2 --filter=true You can configure nwaku as a Filter client using the filternode and filter-timeout options. This allows the node to request content filtering of messages from peers. ./build/wakunode2 \\ --filternode=[FILTER PEER MULTIADDR] \\ --filter-timeout=[FILTER PEER TIMEOUT] For example, consider a nwaku node that requests content filtering of messages from peers with a timeout of 21600 seconds (6 hours): ./build/wakunode2 \\ --filternode=/dns4/node-01.ac-cn-hongkong-c.waku.sandbox.status.im/tcp/30303/p2p/16Uiu2HAmSJvSJphxRdbnigUV5bjRRZFBhTtWFTSyiKaQByCjwmpV \\ --filter-timeout=21600 info If you omit the filter-timeout option, it will default to 14400 seconds (4 hours).","s":"Configure filter protocol","u":"/guides/nwaku/configure-nwaku","h":"#configure-filter-protocol","p":297},{"i":314,"t":"To enable nwaku to serve light clients, enable the Light Push protocol using the lightpush option: ./build/wakunode2 --lightpush=true You can configure nwaku as a Light Push client using the lightpushnode option. This allows the node to request lightpush of published messages from peers. ./build/wakunode2 --lightpushnode=[LIGHT PUSH PEER MULTIADDR] For example, consider a nwaku node that requests lightpush of published messages from peers: ./build/wakunode2 --lightpushnode=/dns4/node-01.ac-cn-hongkong-c.waku.sandbox.status.im/tcp/30303/p2p/16Uiu2HAmSJvSJphxRdbnigUV5bjRRZFBhTtWFTSyiKaQByCjwmpV","s":"Configure light push protocol","u":"/guides/nwaku/configure-nwaku","h":"#configure-light-push-protocol","p":297},{"i":316,"t":"When using a reverse proxy server for SSL/TLS encryption, you only want to announce the proxy server's IP or domain. Nwaku provides the ext-multiaddr-only and ext-multiaddr options for specifying published multiaddr: ./build/wakunode2 \\ --ext-multiaddr-only=true \\ --ext-multiaddr=[MULTIADDR TO PUBLISH] info The ext-multiaddr-only option takes precedence over the nat and dns4-domain-name options, using the values provided by the ext-multiaddr option instead.","s":"Run nwaku behind a reverse proxy","u":"/guides/nwaku/configure-nwaku","h":"#run-nwaku-behind-a-reverse-proxy","p":297},{"i":318,"t":"Waku takes a modular approach, providing a range of protocols that enable applications to control the trade-offs involved in the Anonymity Trilemma. This flexibility empowers applications to make informed choices regarding the desired balance between anonymity, scalability, and latency. Here are the main protocols provided by Waku:","s":"Protocols","u":"/learn/concepts/protocols","h":"","p":317},{"i":320,"t":"Relay protocol employs a Pub/Sub architecture to facilitate the sending and receiving of messages among peers. It extends the libp2p GossipSub protocol to create a privacy-focused peer-to-peer messaging protocol that enables secure communication channels, encryption, and protection against censorship. It also scales the Waku Network to accommodate many nodes efficiently.","s":"Relay","u":"/learn/concepts/protocols","h":"#relay","p":317},{"i":322,"t":"RLN Relay protocol extends the Relay protocol by using Rate Limit Nullifiers (RLN) to provide efficient and economic spam-prevention. It enforces a rate limit on messages over time for all peers in the network, economically preventing spam, and imposes financial penalties and network removal for spammers. You can find more details in the RLN Relay blog post.","s":"RLN relay","u":"/learn/concepts/protocols","h":"#rln-relay","p":317},{"i":324,"t":"Filter protocol allows light nodes to selectively subscribe to specific messages relayed by other peers using content topics. It is designed to be a lightweight alternative for accessing the Relay network, particularly tailored for devices with limited bandwidth. info Filter protocol helps optimise bandwidth usage, but it has fewer privacy guarantees as it must disclose the content topic to its peers to retrieve messages.","s":"Filter","u":"/learn/concepts/protocols","h":"#filter","p":317},{"i":326,"t":"Store protocol is responsible for storing messages relayed in the network, making it possible to query and retrieve them later. This functionality benefits offline peers by enabling them to retrieve missed messages upon reconnection. info Using Relay and Filter protocols is recommended when a node is online, as Store does not guarantee data availability. The Store protocol is suitable for retrieving messages when connecting to the network, like when a DApp starts.","s":"Store","u":"/learn/concepts/protocols","h":"#store","p":317},{"i":328,"t":"Light Push is a Request/Response protocol for nodes with limited bandwidth and short connection windows. It allows a client to receive an acknowledgement when sending messages, indicating that at least one peer has received them. Subsequently, the remote peer forwards these messages to the Relay network. info While the Light Push protocol acknowledges the receipt by the remote peer, it does not guarantee network-wide propagation.","s":"Light push","u":"/learn/concepts/protocols","h":"#light-push","p":317},{"i":330,"t":"Waku Message specifies the structure and format of messages in the Waku Network. It includes the following attributes: content_topic attribute for content-based filtering. payload attribute containing the message data payload to be sent. meta attribute for conveying additional details to various protocols for application-specific processing. timestamp attribute signifying the time at which the message was generated by its sender. ephemeral attribute specifying whether the network should not store the message.","s":"Waku message","u":"/learn/concepts/protocols","h":"#waku-message","p":317},{"i":332,"t":"Definitions and usage of the terminology used in the Waku ecosystem.","s":"Waku Docs Glossary","u":"/learn/glossary","h":"","p":331},{"i":334,"t":"Bootstrapping is the initial entry point of a node to the Waku Network. Once connected, other peer discovery methods can be employed to locate other peers in the network.","s":"Bootstrapping","u":"/learn/glossary","h":"#bootstrapping","p":331},{"i":336,"t":"A content topic is a string attached to messages to enable protocol-level features like selective message processing and retrieval based on specific criteria.","s":"Content topic","u":"/learn/glossary","h":"#content-topic","p":331},{"i":338,"t":"Dappnode is an open-source platform that simplifies the hosting and management of decentralised applications and blockchain nodes, including Waku.","s":"Dappnode","u":"/learn/glossary","h":"#dappnode","p":331},{"i":340,"t":"Discv5 is a peer discovery mechanism using a Distributed Hash Table (DHT) to store ENR records, providing censorship resistance, load distribution, and enhanced network resilience.","s":"Discv5","u":"/learn/glossary","h":"#discv5","p":331},{"i":342,"t":"DNS discovery is a peer discovery mechanism that allows the retrieval of an ENR tree from the TXT field of a domain name, enabling the storage of node connection details and promoting decentralisation.","s":"DNS discovery","u":"/learn/glossary","h":"#dns-discovery","p":331},{"i":344,"t":"Ethereum Node Record (ENR) is a specification used to represent and identify nodes, facilitating discovery and communication within the network. Besides connection details, ENR also includes node configuration information like enabled protocol and shards.","s":"ENR","u":"/learn/glossary","h":"#enr","p":331},{"i":346,"t":"Filter is a protocol that enables light nodes to selectively subscribe to specific messages transmitted by peers using content topics. It is designed to be a lightweight alternative for accessing the Relay network.","s":"Filter","u":"/learn/glossary","h":"#filter","p":331},{"i":348,"t":"GossipSub is a protocol for efficient and scalable information dissemination in decentralised networks commonly used in blockchain systems.","s":"GossipSub","u":"/learn/glossary","h":"#gossipsub","p":331},{"i":350,"t":"Libp2p is a modular network stack and protocol suite that allows developers to build decentralised, peer-to-peer applications across various network protocols.","s":"Libp2p","u":"/learn/glossary","h":"#libp2p","p":331},{"i":352,"t":"A light node is a resource-limited device or client that leverages service nodes to access the Relay network.","s":"Light node","u":"/learn/glossary","h":"#light-node","p":331},{"i":354,"t":"Light push is a protocol enabling light nodes to send messages to the Relay network and receive acknowledgements confirming that a peer has received them.","s":"Light push","u":"/learn/glossary","h":"#light-push","p":331},{"i":356,"t":"Mostly offline devices are clients who spend most of their time offline or disconnected from the internet and only occasionally to the internet and Waku Network. Examples include browsers and mobile phones.","s":"Mostly offline","u":"/learn/glossary","h":"#mostly-offline","p":331},{"i":358,"t":"A node is a device or client that implements Waku protocols and leverages the Waku Network to enable secure and private peer-to-peer web3 communication.","s":"Node","u":"/learn/glossary","h":"#node","p":331},{"i":360,"t":"A node key is a Secp256k1 (64-char hex string) private key for generating the PeerID, listening addresses, and discovery addresses of a Waku node.","s":"Node key","u":"/learn/glossary","h":"#node-key","p":331},{"i":362,"t":"Out-of-band refers to exchanging information through a separate, secure channel distinct from the main communication method to enhance security.","s":"Out-of-band","u":"/learn/glossary","h":"#out-of-band","p":331},{"i":364,"t":"The payload field in a Waku Message contains the application data, serving as the business logic message transmitted between clients over Waku. Applications can encrypt the payload or employ encryption methods specified in Waku Message Payload Encryption.","s":"Payload","u":"/learn/glossary","h":"#payload","p":331},{"i":366,"t":"A peer refers to other nodes and participants of the Waku Network with whom communication and interaction are possible.","s":"Peer","u":"/learn/glossary","h":"#peer","p":331},{"i":368,"t":"Peer discovery is when a node locates and gets information about other peers in the Waku Network.","s":"Peer discovery","u":"/learn/glossary","h":"#peer-discovery","p":331},{"i":370,"t":"Peer exchange is a peer discovery mechanism that enables light nodes to request and receive peers from other nodes in the network, allowing them to bootstrap and expand their connections without depending on Discv5.","s":"Peer exchange","u":"/learn/glossary","h":"#peer-exchange","p":331},{"i":372,"t":"PeerID is the unique identifier of a node in the Waku Network generated from the cryptographic hash of the node's public key.","s":"Peer ID","u":"/learn/glossary","h":"#peer-id","p":331},{"i":374,"t":"A protocol is a set of rules that enables nodes within the Waku Network to perform various functionalities such as message sending, relaying, filtering, storing, retrieving, and more.","s":"Protocol","u":"/learn/glossary","h":"#protocol","p":331},{"i":376,"t":"Publish/Subscribe (Pub/Sub) is an asynchronous messaging pattern where publishers send messages to topics, and subscribers receive messages from topics of interest, allowing efficient one-to-many communication.","s":"Pub/Sub","u":"/learn/glossary","h":"#pubsub","p":331},{"i":378,"t":"A Pub/Sub topic is a string that serves as an identifier for the topic of interest among GossipSub peers. Peers interested in the same topic are likely to maintain a connection and forward messages received on that topic.","s":"Pub/Sub topic","u":"/learn/glossary","h":"#pubsub-topic","p":331},{"i":380,"t":"Rate Limit Nullifiers (RLN) are a construct based on zero-knowledge proofs that enables rate limiting functionality while preserving the users's anonymity.","s":"Rate limit nullifiers","u":"/learn/glossary","h":"#rate-limit-nullifiers","p":331},{"i":382,"t":"Relay is a protocol that extends the GossipSub protocol to enable secure and censorship resistant message sending and receiving among peers while preserving privacy. It also scales the Waku Network to accommodate many nodes efficiently.","s":"Relay","u":"/learn/glossary","h":"#relay","p":331},{"i":384,"t":"Resource-limited refers to environments or devices restricting available resources, including bandwidth, CPU, memory, disk, and battery power.","s":"Resource-limited","u":"/learn/glossary","h":"#resource-limited","p":331},{"i":386,"t":"RLN Relay is an extension of the Relay protocol that uses Rate Limit Nullifiers (RLN) to prevent spam economically by enforcing a rate limit on messages over time, imposing penalties, and facilitating network removal for spammers.","s":"RLN relay","u":"/learn/glossary","h":"#rln-relay","p":331},{"i":388,"t":"SDKs are tools, libraries, and resources to integrate Waku's private, secure, and censorship-free communication features into various applications.","s":"SDK","u":"/learn/glossary","h":"#sdk","p":331},{"i":390,"t":"Store is a protocol that enables the storage of relayed messages in the network, allowing offline peers to retrieve missed messages upon reconnecting to the network.","s":"Store","u":"/learn/glossary","h":"#store","p":331},{"i":392,"t":"A transport is a network mechanism that establishes connections between peers and enables efficient transmission, routing, and delivery of data packets.","s":"Transport","u":"/learn/glossary","h":"#transport","p":331},{"i":394,"t":"Waku is a family of private, secure, decentralised, and peer-to-peer web3 communication protocols designed to operate in resource-limited environments and suitable for node or desktop application use. Additionally, these protocols collectively form the Waku Network.","s":"Waku","u":"/learn/glossary","h":"#waku","p":331},{"i":396,"t":"Waku Message defines the structure of messages in the Waku Network, including the content topic, payload, and metadata for application-specific processing.","s":"Waku message","u":"/learn/glossary","h":"#waku-message","p":331},{"i":398,"t":"Waku Message Payload Encryption provides guidelines for implementing secure and private communication in the Waku Network. It covers encryption, decryption, and signing methods for message payloads, focusing on confidentiality, authenticity, integrity, and unlinkability.","s":"Waku message payload encryption","u":"/learn/glossary","h":"#waku-message-payload-encryption","p":331},{"i":400,"t":"The Waku Network is an open-access, scalable peer-to-peer messaging network emphasizing privacy protection and accessibility to resource limited devices.","s":"Waku network","u":"/learn/glossary","h":"#waku-network","p":331},{"i":402,"t":"Waku Noise is a specified way to use the Noise Protocol Framework to build protocols that enable secure key-exchange mechanisms for encrypted communication with confidentiality, authenticity, integrity, strong forward secrecy, and identity-hiding properties.","s":"Waku noise","u":"/learn/glossary","h":"#waku-noise","p":331},{"i":404,"t":"The Waku Network is a shared p2p messaging network that is open-access, useful for generalized messaging, privacy-preserving, scalable and accessible even to resource-restricted devices. Some of the most prominent features include: DoS/spam protection with privacy-preserving Rate-Limiting Nullifiers. Scalability by sharding traffic into 8 pubsub topics. Automatic shard selection based on content topic. Services for resource-restricted nodes, including historical message storage and retrieval, filtering, etc. tip If you want to learn more about the Waku Network, the The Waku Network: Technical Overview article provides an in-depth look under the hood.","s":"The Waku Network","u":"/learn/waku-network","h":"","p":403},{"i":406,"t":"Applications or projects can build decentralized communication components on this network, gaining from the fault-tolerance of shared infrastructure, the out-of-the-box censorship resistance of a p2p network and the privacy-preservation of Waku protocols. Supporters of public goods and decentralized infrastructure can run their nodes to support the network. We are also working on incentivisation vectors to encourage more node operators to provide services to the network.","s":"Why join the Waku network?","u":"/learn/waku-network","h":"#why-join-the-waku-network","p":403},{"i":408,"t":"Ethereum Sepolia WebSocket endpoint, which can be yours or from a third party. Have a look at the Access a Sepolia Node Using Infura guide for a free Infura option. This node is used to interact with the on-chain RLN membership contract. Wallet with Sepolia Ethereum (less than 0.1 Sepolia ETH). Have a look at the Create a Sepolia Ethereum Wallet and Obtain Sepolia Ethereum from Faucet guides to get a Sepolia wallet and fund it with some Sepolia Ethereum. This wallet is required to register RLN membership, which is essential for publishing on the network.","s":"Prerequisites","u":"/learn/waku-network","h":"#prerequisites","p":403},{"i":410,"t":"Have a look at the Run Nwaku with Docker Compose guide for instructions on running a nwaku node in the Waku Network. Use the Sepolia node and wallet you obtained above. info The public Waku Network replaces the previous experimental shared routing layer based on a default pubsub topic (/waku/2/default-waku/proto). If your project currently uses this or any other shared pubsub topics, we encourage you to migrate to the public Waku Network with built-in DoS protection, scalability, and reasonable bandwidth usage.","s":"Running a Waku network node","u":"/learn/waku-network","h":"#running-a-waku-network-node","p":403},{"i":412,"t":"Waku's protocol layers offer different services and security considerations, shaping the overall security of Waku. We document the security models in the RFCs of the protocols, aiming to provide transparent and open-source references. This empowers Waku users to understand each protocol's security guarantees and limitations. Some of the Waku's security features include the following:","s":"Security Features","u":"/learn/security-features","h":"","p":411},{"i":414,"t":"Waku ensures pseudonymity across its protocol layers, using libp2p PeerID as identifiers instead of disclosing true identities. However, it is important to note that pseudonymity does not provide complete anonymity. Actions performed under the same pseudonym (PeerID) can be linked, leading to the potential re-identification of the actual actor.","s":"Pseudonymity","u":"/learn/security-features","h":"#pseudonymity","p":411},{"i":416,"t":"Anonymity means an adversary cannot connect an actor to their actions or data. To achieve anonymity, avoiding linking activities with actors or their Personally Identifiable Information (PII) is crucial. In Waku, the following anonymity features are provided: Publisher-message unlinkability: Ensures that the publisher of messages in the Relay protocol cannot be linked to their published messages. Subscriber-topic unlinkability: Ensures that the subscriber of topics in the Relay protocol cannot be linked to the topics they have subscribed to.","s":"Anonymity/unlinkability","u":"/learn/security-features","h":"#anonymityunlinkability","p":411},{"i":418,"t":"The spam protection feature in Relay ensures that no adversary can flood the system with many messages, intentionally or not, regardless of the content's validity or usefulness. This protection is achieved through the scoring mechanism of GossipSub v1.1. Peers assign scores to their connections based on their behaviour and remove peers with low scores. Ongoing research is being conducted, including developing Rate Limit Nullifiers (RLN), which can be explored further at: https://github.com/vacp2p/research/issues/148.","s":"Spam protection","u":"/learn/security-features","h":"#spam-protection","p":411},{"i":420,"t":"Confidentiality in Waku is ensured through data encryption, while integrity and authenticity are achieved through digital signatures. These security measures are available in Waku Message (version 1) and Noise protocols, which offer payload encryption and encrypted signatures. Noise protocols also facilitate secure channel negotiation within the Waku Network.","s":"Data confidentiality, integrity, and authenticity","u":"/learn/security-features","h":"#data-confidentiality-integrity-and-authenticity","p":411},{"i":422,"t":"In protocols like Store and Filter, where direct connections are required for the designated service, anonymity or unlinkability is not guaranteed. This is because nodes use their PeerID to identify each other during direct connections, making the service obtained in these protocols linkable to the beneficiary's PeerID, considered Personally Identifiable Information (PII). In Store, the queried node can link the querying node's PeerID to the topics being queried. Similarly, in Filter, a node can link the PeerID of a light node to its content filter.","s":"Security considerations","u":"/learn/security-features","h":"#security-considerations","p":411},{"i":424,"t":"On this page Last updated: 9 February 2024 This Privacy Policy is intended to inform users of our approach to privacy in respect of this website (\"Website\"). In this regard, if you are visiting our Website, this Privacy Policy applies to you.","s":"Privacy Policy","u":"/privacy-policy","h":"","p":423},{"i":426,"t":"For the purposes of this Privacy Policy and the collection and processing of personal data as a controller, the relevant entity is the Logos Collective Association, which has its registered office in Zug and its legal domicile address at Logos Collective Association c/o PST Consulting GmbH Baarerstrasse 10 6300 Zug Switzerland Whenever we refer to “Logos”, “we” or other similar references, we are referring to the Logos Collective Association.","s":"1) Who we are","u":"/privacy-policy","h":"#1-who-we-are","p":423},{"i":428,"t":"We aim to limit the collection and collection and processing of personal data from users of the Website. We only collect and process certain personal data for specific purposes and where we have the legal basis to do so under applicable privacy legislation. We will not collect or process any personal data that we don’t need and where we do store any personal data, we will only store it for the least amount of time needed for the indicated purpose. In this regard, we collect and process the following personal data from your use of the Website: IP address: As part of such use of the Website we briefly process your IP address but we have no way of identifying you. We however have a legitimate interest in processing such IP addresses to ensure the technical functionality and enhance the security measures of the Website. This IP address is not stored by us over time.","s":"2) We limit the collection and processing of personal data from your use of the Website","u":"/privacy-policy","h":"#2-we-limit-the-collection-and-processing-of-personal-data-from-your-use-of-the-website","p":423},{"i":430,"t":"In addition to our limited and collection of personal data, third parties may collect or process personal data as a result of the Website making use of certain features or to provide certain content. To the extent you interact with such third party content or features, their respective privacy policies will apply.","s":"3) Third party processing of personal data","u":"/privacy-policy","h":"#3-third-party-processing-of-personal-data","p":423},{"i":432,"t":"As a general approach, we take data security seriously and we have implemented a variety of security measures on the Website to maintain the safety of your personal data when you submit such information to us.","s":"4) Security measures we take in respect of the Website","u":"/privacy-policy","h":"#4-security-measures-we-take-in-respect-of-the-website","p":423},{"i":434,"t":"We are obliged to protect the privacy of personal data that you may have submitted in the unlikely event that we export your personal data to places outside the European Union or Switzerland. This means that personal data will only be processed in countries or by parties that provide an adequate level of protection as deemed by Switzerland or the European Commission. Otherwise, we will use other forms of protections, such as specific forms of contractual clauses to ensure such personal data is provided the same protection as required in Switzerland or Europe. In any event, the transmission of personal data outside the European Union and Switzerland will always occur in conformity with applicable privacy legislation.","s":"5) Exporting data outside the European Union and Switzerland","u":"/privacy-policy","h":"#5-exporting-data-outside-the-european-union-and-switzerland","p":423},{"i":436,"t":"As explained in this Privacy Policy, we limit our collection and processing of your personal data wherever possible. Nonetheless, you still have certain choices and rights in respect of the personal data which we do collect and process. As laid out in relevant privacy legislation, you have the right to: Ask us to correct or update your personal data (where reasonably possible); Ask us to remove your personal data from our systems; Ask us for a copy of your personal data, which may also be transferred to another data controller at your request; Withdraw your consent to process your personal data (only if consent was asked for a processing activity), which only affects processing activities that are based on your consent and doesn’t affect the validity of such processing activities before you have withdrawn your consent; Object to the processing of your personal data; and File a complaint with the Federal Data Protection and Information Commissioner (FDPIC), if you believe that your personal data has been processed unlawfully.","s":"6) Your choices and rights","u":"/privacy-policy","h":"#6-your-choices-and-rights","p":423},{"i":438,"t":"On this Website, you may come across links to third party websites. These third party sites have separate and independent privacy policies. We therefore have no responsibility or liability for the content and activities of these third party websites.","s":"7) Third party links","u":"/privacy-policy","h":"#7-third-party-links","p":423},{"i":440,"t":"We may modify or replace any part of this Privacy Policy at any time and without notice. Please check the Website periodically for any changes. The new Privacy Policy will be effective immediately upon its posting on our Website.","s":"8) This Privacy Policy might change","u":"/privacy-policy","h":"#8-this-privacy-policy-might-change","p":423},{"i":442,"t":"To the extent that you have any questions about the Privacy Policy, please contact us at legal@free.technology. This document is licensed under CC-BY-SA.","s":"9) Contact information","u":"/privacy-policy","h":"#9-contact-information","p":423},{"i":444,"t":"Research and Studies: Protocol simulations and theoretical analysis to support the design of Waku protocols. The protocol definitions are on the Waku RFCs website. Benchmarks: Results of implementations and engineering-related benchmarks for Waku clients.","s":"Research","u":"/research/","h":"","p":443},{"i":446,"t":"Since Waku is built on top of libp2p, they share a lot of concepts and terminologies between them. However, there are key differences between them that are worth noting.","s":"Comparing Waku and libp2p","u":"/learn/waku-vs-libp2p","h":"","p":445},{"i":448,"t":"Waku intends to incentivise mechanisms to run nodes, but it is not part of libp2p's scope. Additionally, users or developers do not have to deploy their infrastructure as a prerequisite to use Waku. It is a service network. However, you are encouraged to run a node to support and decentralise the network.","s":"Waku as a service network","u":"/learn/waku-vs-libp2p","h":"#waku-as-a-service-network","p":445},{"i":450,"t":"Waku includes various protocols covering the following domains: privacy preservation, censorship resistance, and platform agnosticism, allowing it to run on any platform or environment. Waku provides out-of-the-box protocols to enable mostly offline/resource-limited devices, Store/Light Push/Filter caters to those use cases.","s":"Waku as a turnkey solution","u":"/learn/waku-vs-libp2p","h":"#waku-as-a-turnkey-solution","p":445},{"i":452,"t":"libp2p does not have strong spam protection guarantees, RLN Relay is a protocol being developed by the Waku team towards this goal.","s":"Economic spam protection","u":"/learn/waku-vs-libp2p","h":"#economic-spam-protection","p":445},{"i":454,"t":"This issue explains i) why The Waku Network requires a capped bandwidth per shard and ii) how to solve it by rate limiting with RLN by daily requests (instead of every x seconds), which would require RLN v2, or some modifications in the current circuits to work. It also explains why the current rate limiting RLN approach (limit 1 message every x seconds) is not practical to solve this problem.","s":"Capped Bandwidth in Waku","u":"/research/research-and-studies/capped-bandwidth","h":"","p":453},{"i":456,"t":"First of all, lets begin with the terminology. We have talked in the past about \"predictable\" bandwidth, but a better name would be \"capped\" bandwidth. This is because it is totally fine that the waku traffic is not predictable, as long as its capped. And it has to be capped because otherwise no one will be able to run a node. Since we aim that everyone is able to run a full waku node (at least subscribed to a single shard) its of paramount importance that the bandwidth requirements (up/down) are i) reasonable to run with a residential internet connection in every country and ii) limited to an upper value, aka capped. If the required bandwidth to stay up to date with a topic is higher than what the node has available, then it will start losing messages and won't be able to stay up to date with the topic messages. And not to mention the problems this will cause to other services and applications being used by the user. The main problem is that one can't just chose the bandwidth it allocates to relay. One could set the maximum bandwidth willing to allocate to store but this is not how relay works. The required bandwidth is not set by the node, but by the network. If a pubsub topic a has a traffic of 50 Mbps (which is the sum of all messages being sent multiplied by its size, times the D_out degree), then if a node wants to stay up to date in that topic, and relay traffic in it, then it will require 50 Mbps. There is no thing such as \"partially contribute\" to the topic (with eg 25Mbps) because then you will be losing messages, becoming an unreliable peer. The network sets the pace. So waku needs an upper boundary on the in/out bandwidth (mbps) it consumes. Just like apps have requirements on cpu and memory, we should set a requirement on bandwidth, and then guarantee that if you have that bandwidth, you will be able to run a node without any problem. And this is the tricky part.","s":"Problem","u":"/research/research-and-studies/capped-bandwidth","h":"#problem","p":453},{"i":458,"t":"With the recent productisation effort of RLN, we have part of the problem solved, but not entirely. RLN offers an improvement, since now have a pseudo-identity (RLN membership) that can be used to rate limit users, enforcing a limit on how often it can send a message (eg 1 message every 10 seconds). We assume of course, that getting said RLN membership requires to pay something, or put something at stake, so that it can't be sibyl attacked. Rate limiting with RLN so that each entity just sends 1 message every x seconds indeed solves the spam problem but it doesn't per se cap the traffic. In order to cap the traffic, we would first need to cap the amount of memberships we allow. Lets see an example: We limit to 10.000 RLN memberships Each ones is rate limited to send 1 message/10 seconds Message size of 50 kBytes Having this, the worst case bandwidth that we can theoretically have, would be if all of the memberships publish messages at the same time, with the maximum size, continuously. That is 10.000 messages/sec * 50 kBytes = 500 MBytes/second. This would be a burst every 10 seconds, but enough to leave out the majority of the nodes. Of course this assumption is not realistic as most likely not everyone will continuously send messages at the same time and the size will vary. But in theory this could happen. A naive (and not practical) way of fixing this, would be to design the network for this worst case. So if we want to cap the maximum bandwidth to 5 MBytes/s then we would have different options on the maximum i) amount of RLN memberships and ii) maximum message size: 1.000 RLN memberships, 5 kBytes message size: 1000 * 5 = 5 MBytes/s 10.000 RLN memberships, 500 Bytes message size: 10000 * 0.5 = 5 MBytes/s In both cases we cap the traffic, however, if we design The Waku Network like this, it will be massively underutilized. As an alternative, the approach we should follow is to rely on statistics, and assume that i) not everyone will be using the network at the same time and ii) message size will vary. So while its impossible to guarantee any capped bandwidth, we should be able to guarantee that with 95 or 99% confidence the bandwidth will stay around a given value, with a maximum variance. The current RLN approach of rate limiting 1 message every x seconds is not very practical. The current RLN limitations are enforced on 1 message every x time (called epoch). So we currently can allow 1 msg per second or 1 msg per 10 seconds by just modifying the epoch size. But this has some drawbacks. Unfortunately, neither of the options are viable for waku: A small epoch size (eg 1 seconds) would allow a membership to publish 24*3600/1=86400 messages a day, which would be too much. In exchange, this allows a user to publish messages right after the other, since it just have to wait 1 second between messages. Problem is that having an rln membership being able to publish this amount of messages, is a bit of a liability for waku, and hinders scalability. A high epoch size (eg 240 seconds) would allow a membership to publish 24*3600/240=360 messages a day, which is a more reasonable limit, but this won't allow a user to publish two messages one right after the other, meaning that if you publish a message, you have to way 240 seconds to publish the next one. Not practical, a no go. But what if we widen the window size, and allow multiple messages within that window?","s":"Current approach","u":"/research/research-and-studies/capped-bandwidth","h":"#current-approach","p":453},{"i":460,"t":"In order to fix this, we need bigger windows sizes, to smooth out particular bursts. Its fine that a user publishes 20 messages in one second, as long as in a wider window it doesn't publish more than, lets say 500. This wider window could be a day. So we could say that a membership can publish 250 msg/day. With this we solve i) and ii) from the previous section. Some quick napkin math on how this can scale: 10.000 RLN memberships Each RLN membership allow to publish 250 msg/day Message size of 5 kBytes Assuming a completely random distribution: 10.000 * 250 = 2 500 000 messages will be published a day (at max) A day has 86 400 seconds. So with a random distribution we can say that 30 msg/sec (at max) 30 msg/sec * 5 kBytes/msg = 150 kBytes/sec (at max) Assuming D_out=8: 150 kBytes/sec * 8 = 1.2 MBytes/sec (9.6 Mbits/sec) So while its still not possible to guarantee 100% the maximum bandwidth, if we rate limit per day we can have better guarantees. Looking at these numbers, considering a single shard, it would be feasible to serve 10.000 users considering a usage of 250 msg/day. TODO: Analysis on 95%/99% interval confidence on bandwidth given a random distribution.","s":"Solution","u":"/research/research-and-studies/capped-bandwidth","h":"#solution","p":453},{"i":462,"t":"Waku should guarantee a capped bandwidth so that everyone can run a node. The guarantee is a \"statistical guarantee\", since there is no way of enforcing a strict limit. Current RLN approach is to rate limit 1 message every x seconds. A better approach would be x messages every day, which helps achieving such bandwidth limit. To follow up: Variable RLN memberships. Eg. allow to chose tier 1 (100msg/day) tier 2 (200msg/day) etc.","s":"TLDR","u":"/research/research-and-studies/capped-bandwidth","h":"#tldr","p":453},{"i":465,"t":"The Nim Waku Node, nwaku, has the capability of archiving messages until a certain limit (e.g. 30 days) so that other nodes can synchronize their message history throughout the Store protocol. The nwaku originally used SQLite to archive messages but this has an impact on the node. Nwaku is single-threaded and therefore, any SQLite operation impacts the performance of other protocols, like Relay. Therefore, the Postgres adoption is needed to enhance that. https://github.com/waku-org/nwaku/issues/1888","s":"Introduction","u":"/research/benchmarks/postgres-adoption","h":"#introduction","p":463},{"i":467,"t":"Simply pass the next parameter to nwaku --store-message-db-url=\"postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/postgres Notice that this only makes sense if the nwaku has the Store protocol mounted --store=true (start the nwaku node with --help parameter for more Store options)","s":"How to connect the nwaku to Postgres","u":"/research/benchmarks/postgres-adoption","h":"#how-to-connect-the-nwaku-to-postgres","p":463},{"i":469,"t":"https://github.com/waku-org/nwaku-compose https://github.com/waku-org/test-waku-query","s":"Examples of nwaku using Postgres","u":"/research/benchmarks/postgres-adoption","h":"#examples-of-nwaku-using-postgres","p":463},{"i":471,"t":"The following repository was created as a tool to stress and compare performance between nwaku+Postgres and nwaku+SQLite: https://github.com/waku-org/test-waku-query","s":"Stress tests","u":"/research/benchmarks/postgres-adoption","h":"#stress-tests","p":463},{"i":473,"t":"Maximum insert throughput​ Scenario 1 node subscribed to pubsubtopic ‘x’ and the Store protocol mounted. ‘n’ nodes connected to the “store” node, and publishing messages simultaneously to pubsubtopic ‘x’. All nodes running locally in a Dell Latitude 7640. Each published message is fixed, 1.4 KB: publish_one_client.sh The next script is used to simulate multiple nodes publishing messages: publish_multiple_clients.sh Sought goal Find out the maximum number of concurrent inserts that both SQLite and Postgres could support, and check whether Postgres behaves better than SQLite or not. Conclusion Messages are lost after a certain threshold, and this message loss is due to limitations in the Relay protocol (GossipSub - libp2p.) For example, if we set 30 nodes publishing 300 messages simultaneously, then 8997 rows were stored and not the expected 9000, in both SQLite and Postgres databases. The reason why few messages were lost is because the message rate was higher than the relay protocol can support, and therefore a few messages were not stored. In this example, the test took 38.8’’, and therefore, the node was receiving 232 msgs/sec, which is much more than the normal rate a node will work with, which is ~10 msgs/sec (rate extracted from Grafana’s stats for the status.prod fleet.) As a conclusion, the bottleneck is within the Relay protocol itself and not the underlying databases. Or, in other words, both SQLite and Postgres can support the maximum insert rate a Waku node will operate within normal conditions.","s":"Insert test results","u":"/research/benchmarks/postgres-adoption","h":"#insert-test-results","p":463},{"i":475,"t":"In this case, we are comparing Store performance by means of Rest service. Scenario nodea: one _nwaku node with Store and connected to Postgres. nodeb: one _nwaku node with Store and using SQLite. Both Postgres and SQLite contain +1 million rows. nodec: one _nwaku node with REST enabled and acting as a Store client for node_a. noded: one _nwaku node with REST enabled and acting as a Store client for node_b. With jmeter, 10 users make REST Store requests concurrently to each of the “rest” nodes (node_c and node_d.) All nwaku nodes running statusteam/nim-waku:v0.19.0 This is the jmeter project used. Results With this, the node_b brings a higher throughput than the node_a and that indicates that the node that uses SQLite performs better. The following shows the measures taken by jmeter with regard to the REST requests.","s":"Query test results (jmeter)","u":"/research/benchmarks/postgres-adoption","h":"#query-test-results-jmeter","p":463},{"i":477,"t":"In this test suite, only the Store protocol is being analyzed, i.e. without REST. For that, a go-waku node is used, which acts as Store client. On the other hand, we have another go-waku app that publishes random Relay messages periodically. Therefore, this can be considered a more realistic approach. The following diagram shows the topology used: For that, the next apps were used: Waku-publisher. This app can publish Relay messages with different numbers of clients Waku-store-query-generator. This app is based on the Waku-publisher but in this case, it can spawn concurrent go-waku Store clients. That topology is defined in this docker-compose file. Notice that the two nwaku nodes run the very same version, which is compiled locally. Comparing archive SQLite & Postgres performance in nwaku-b6dd6899​ The next results were obtained by running the docker-compose-manual-binaries.yml from test-waku-query-c078075 in the sandbox machine (metal-01.he-eu-hel1.wakudev.misc.statusim.net.) Scenario 1 Store rate: 1 user generating 1 store-req/sec. Relay rate: 1 user generating 10msg/sec, 10KB each. In this case, we can see that the SQLite performance is better regarding the store requests. The following graph shows how the SQLite node has blocking periods whereas the Postgres always gives a steady rate. Scenario 2 Store rate: 10 users generating 1 store-req/sec. Relay rate: 1 user generating 10msg/sec, 10KB each. In this case, is more evident that the SQLite performs better. Scenario 3 Store rate: 25 users generating 1 store-req/sec. Relay rate: 1 user generating 10msg/sec, 10KB each. In this case, the performance is similar regarding the timings. The store rate is bigger in SQLite and Postgres keeps the same level as in scenario 2. Comparing archive SQLite & Postgres performance in nwaku-b452ed8​ This nwaku commit is after a few Postgres optimizations were applied. The next results were obtained by running the docker-compose-manual-binaries.yml from test-waku-query-c078075 in the sandbox machine (metal-01.he-eu-hel1.wakudev.misc.statusim.net.) Scenario 1 Store rate 1 user generating 1 store-req/sec. Notice that the current Store query used generates pagination which provokes more subsequent queries than the 1 req/sec that would be expected without pagination. Relay rate: 1 user generating 10msg/sec, 10KB each. It cannot be appreciated but the average *Store* time was 11ms. Scenario 2 Store rate: 10 users generating 1 store-req/sec. Notice that the current Store query used generates pagination which provokes more subsequent queries than the 10 req/sec that would be expected without pagination. Relay rate: 1 user generating 10msg/sec, 10KB each. Scenario 3 Store rate: 25 users generating 1 store-req/sec. Notice that the current Store query used generates pagination which provokes more subsequent queries than the 25 req/sec that would be expected without pagination. Relay rate: 1 user generating 10msg/sec, 10KB each. Conclusions​ After comparing both systems, SQLite performs much better than Postgres However, a benefit of using Postgres is that it performs asynchronous operations, and therefore doesn’t consume CPU time that would be better invested in Relay for example. Remember that nwaku is single-threaded and chronos performs orchestration among a bunch of async tasks, and therefore it is not a good practice to block the whole nwaku process in a query, as happens with SQLite After applying a few Postgres enhancements, it can be noticed that the use of concurrent Store queries doesn’t go below the 250ms barrier. The reason for that is that most of the time is being consumed in this point. The libpqisBusy() function indicates that the connection is still busy even the queries finished. Notice that we usually have a rate below 1100 req/minute in status.prod fleet (checked November 7, 2023.)","s":"Query test results (only Store protocol)","u":"/research/benchmarks/postgres-adoption","h":"#query-test-results-only-store-protocol","p":463},{"i":479,"t":"This study aims to look for possible issues when having only one single database while several Waku nodes insert or retrieve data from it. The following diagram shows the scenery used for such analysis. There are three nim-waku nodes that are connected to the same database and all of them are trying to write messages to the same PostgreSQL instance. With that, it is very common to see errors like: ERR 2023-11-27 13:18:07.575+00:00 failed to insert message topics=\"waku archive\" tid=2921 file=archive.nim:111 err=\"error in runStmt: error in dbConnQueryPrepared calling waitQueryToFinish: error in query: ERROR: duplicate key value violates unique constraint \\\"messageindex\\\"\\nDETAIL: Key (storedat, id, pubsubtopic)=(1701091087417938405, 479c95bbf74222417abf76c7f9c480a6790e454374dc4f59bbb15ca183ce1abd, /waku/2/default-waku/proto) already exists.\\n The db-postgres-hammer is aimed to stress the database from the select point of view. It performs N concurrent select queries with a certain rate. Results​ The following results were obtained by using the sandbox machine (metal-01.he-eu-hel1.wakudev.misc) and running nim-waku nodes from https://github.com/waku-org/nwaku/tree/b452ed865466a33b7f5b87fa937a8471b28e466e and using the test-waku-query project from https://github.com/waku-org/test-waku-query/tree/fef29cea182cc744c7940abc6c96d38a68739356 The following shows the results Two nwaku-postgres-additional inserting messages plus 50 db-postgres-hammer making 10 selects per second. Five nwaku-postgres-additional inserting messages plus 50 db-postgres-hammer making 10 selects per second. In this case, the insert time gets more spread because the insert operations are shared amongst five more nodes. The Store query time remains the same on average. Five nwaku-postgres-additional inserting messages plus 100 db-postgres-hammer making 10 selects per second. This case is similar to 2. but stressing more the database.","s":"Multiple nodes & one single database","u":"/research/benchmarks/postgres-adoption","h":"#multiple-nodes--one-single-database","p":463},{"i":482,"t":"Since RLN has been chosen as the spamming protection mechanism for waku, we must understand the practical implications of using it. This issue explains the main differences between relay and rln-relay and gives some benchmarks after running simulations using waku-simulator, in a network with the following characteristics: 100 nwaku nodes, each one with a valid rln membership and publishing a message every 10 seconds to a common topic. rln contract deployed in Ethereum Sepolia 10.000 memberships registered in the contract pure relay (store and light protocols disabled) The main deltas rln vs rln-relay are: New proof field in WakuMessage containing 384 extra bytes. This field must be generated and attached to each message. New validator, that uses proof to Accept or Reject the message. The proof has to be verified. New dependency on a blockchain, Ethereum, or any EVM chain, to keep track of the members allowed to publish. But what are the practical implications of these?","s":"Introduction","u":"/research/research-and-studies/rln-key-benchmarks","h":"#introduction","p":480},{"i":484,"t":"Proof generation is constant-ish. 0.15 second for each proof Proof verification is constant-ish, 0.012 seconds. In a network with 10k nodes and D=6 this would add an overhead delay of 0.06 seconds. Gossipsub scoring drops connections from spammer peers, which acts as the punishment (instead of slashing). Validated in the simulation. Rln doesn't have any impact on memory consumption.","s":"TLDR:","u":"/research/research-and-studies/rln-key-benchmarks","h":"#tldr","p":480},{"i":486,"t":"Seems that proof generation times stay constant no matter the size of the message. In the following simulation it was increased from: 1kB, 10kB, 50kB, 150kB. On average it takes 0.15 seconds to calculate the message proof. This means that when a node wants to send a message, it will need to spend this time generating the proof. It seems very reasonable and it actually acts as a mini proof of work, where a consumer computer won't be able to publish a really high number of messages per second.","s":"Proof generation times","u":"/research/research-and-studies/rln-key-benchmarks","h":"#proof-generation-times","p":480},{"i":488,"t":"On the other hand, rln also adds an overhead in the gossipsub validation process. On average it takes 0.012 seconds to verify the proof. It seems that when we increase the message size, validation time seems to increase a bit, which can be for any other reason besides rln itself (eg deserializing the message might take longer). This number seems reasonable and shouldn't affect that much the average delay of a message. Assuming a d-regular graph, with 10k nodes and D=6, we can have up to log(total_nodes)/log(D)=5 hops. So in the worst case, rln will add a network latency of 0.012*5 = 0.06 seconds","s":"Proof verification times","u":"/research/research-and-studies/rln-key-benchmarks","h":"#proof-verification-times","p":480},{"i":490,"t":"For the initial release of RLN, slashing won't be implemented and it still remains unclear if it will be implemented in the future. Luckily, even if slashing is not implemented rln can be used to detect spam and punish the sender off-chain (instead of slashing an onchain collateral). This is done with gossipsub scoring. In the following simulation, we can see 100 nwaku interconnected nodes, where one of them suddenly starts spamming the network with multiple valid rln messages 3000 messages/minute. Since its rate limited to 1msg/10 seconds, we can see that in almost no time, every node in the network disconnects from the spammer peer (see red node), leaving it with 0 peers, which disincentivise such attacks and without requiring a financial slashing.","s":"Spam protection","u":"/research/research-and-studies/rln-key-benchmarks","h":"#spam-protection","p":480},{"i":492,"t":"Using RLN implies that waku should now piggyback on a blockchain (the case study uses Ethereum Sepolia) and has to stay up to date with the latest events emitted by the rln smart contract. These events are used to locally construct a tree that contains all members allowed to create valid proofs to send messages. Some numbers: A tree with 10k members takes 2Mbytes of space. Negligible. A tree with 10k members takes `<4 minutes to synchronize. Assumable since it's done just once. With a block range of 5000 blocks for each request, we would need 520 requests to synchronize 1 year of historical data from the tree. Assumable since most of the free endpoints out there allow 100k/day.","s":"RLN tree sync","u":"/research/research-and-studies/rln-key-benchmarks","h":"#rln-tree-sync","p":480},{"i":494,"t":"Same simulation with 100 nodes was executed with rln and without rln: Memory consumption is almost identical with rln without rln Couldn't capture cpu metrics Minor differences in messages per seconds is due to injection technique, nothing related to rln itself.","s":"Performance relay vs. rln-relay","u":"/research/research-and-studies/rln-key-benchmarks","h":"#performance-relay-vs-rln-relay","p":480},{"i":496,"t":"Waku is a family of decentralised communication protocols. The Waku Network (TWN) consists of independent nodes running Waku protocols. TWN needs incentivisation (shortened to i13n) to ensure proper node behaviour. The goal of this document is to outline and contextualize our approach to TWN i13n. After providing an overview of Waku and relevant prior work, we focus on Waku Store - a client-server protocol for querying historical messages. We introduce a minimal viable addition to Store to enable i13n, and list research directions for future work.","s":"Incentivisation","u":"/research/research-and-studies/incentivisation","h":"","p":495},{"i":498,"t":"On this page","s":"Incentivisation in decentralised networks","u":"/research/research-and-studies/incentivisation","h":"","p":495},{"i":500,"t":"We can think of incentivisation tools as a two-by-two matrix: rewards vs punishment; monetary vs reputation. In other words, there are four quadrants: monetary reward: the node gets rewarded; monetary punishment: the nodes deposits funds that are taken away (slashed) if it misbehaves; reputation reward: the node's reputation increases if it behaves well; reputation punishment: the node's reputation decreases if it behaves badly. Reputation only works if high reputation brings tangible benefits. For example, if nodes chose neighbors based on reputation, low-reputation nodes miss out on potential revenue. Reputation scores may be local (a node assigns scores to its neighbors) or global (each node gets a uniform score). Global reputation in its simplest form involves a trusted third party, although decentralised approaches are also possible.","s":"Incentivisation tools","u":"/research/research-and-studies/incentivisation","h":"#incentivisation-tools","p":495},{"i":502,"t":"We may split incentivized decentralised networks into early file-sharing, blockchains, and decentralised storage.","s":"Prior work","u":"/research/research-and-studies/incentivisation","h":"#prior-work","p":495},{"i":504,"t":"Early P2P file-sharing networks employ reputation-based approaches and sticky defaults. For instance, the BitTorrent protocol rewards uploading peers with faster downloads. The download bandwidth available to a peer depends on how much it has uploaded. Moreover, peers share pieces of a file before having received it in whole. This non-monetary i13n policy has been proved to work in practice.","s":"Early P2P file-sharing","u":"/research/research-and-studies/incentivisation","h":"#early-p2p-file-sharing","p":495},{"i":506,"t":"Bitcoin has introduced proof-of-work (PoW) for native monetary rewards in a P2P network. PoW miners are automatically assigned newly mined coins for generating blocks. Miners must expend physical resources to generate a block. If the block is invalid, these expenses are not compensated (implicit monetary punishment). Proof-of-stake (PoS), used in Ethereum and many other cryptocurrencies, introduces explicit monetary punishments. PoS validators lock up (stake) native tokens and get rewarded for validating blocks or slashed for misbehaviour.","s":"Blockchains","u":"/research/research-and-studies/incentivisation","h":"#blockchains","p":495},{"i":508,"t":"Post-Bitcoin decentralised storage networks include Codex, Storj, Sia, Filecoin, IPFS. Their i13n methods combine techniques from early P2P file-sharing with blockchain-inspired reward mechanisms.","s":"Decentralised storage","u":"/research/research-and-studies/incentivisation","h":"#decentralised-storage","p":495},{"i":510,"t":"On this page Waku is a family of protocols for a modular privacy-preserving censorship-resistant decentralised communication network. The backbone of Waku is the Relay protocol (and its spam-protected version RLN-Relay). Additionally, there are light protocols: Store, Filter, and Lightpush. Light protocols are also referred to as client-server protocols and request-response protocols. A server is a node running Relay and a server-side of at least one light protocol. A client is a node running a client-side of any of the light protocols. A server may sometimes be referred to as a full node, and a client as a light node. There is no strict definition of a full node vs a light node in Waku (see discussion). In light protocols, a client sends a request to a server, and a server performs some actions and returns a response: Store: the server responds with messages relayed that match a set of criteria; Filter: the server will relay (only) messages that pass a filter to the client; Lightpush: the server publishes the client's message to the Relay network.","s":"Waku background","u":"/research/research-and-studies/incentivisation","h":"","p":495},{"i":512,"t":"Waku has no consensus and no native token, which brings it closer to reputation-incentivised file-sharing networks. As of late 2023, Waku only operates under reputation-based rewards and punishments. While RLN-Relay adds monetary punishments for spammers, slashing is yet to be activated. Monetary rewards and punishments should ideally be atomically linked with the node's behaviour. A benefit of blockchains in this respect is that the desired behaviour of miners or validators can be verified automatically. Enforcing atomicity in a communication network is more challenging: it is non-trivial to prove that a given piece of data has been relayed. Our goal is to combine monetary and reputation-based incentives for Waku. Monetary incentives have demonstrated their robustness in blockchains. We think they are necessary to scale the network beyond the initial phase when it's maintained altruistically.","s":"Waku i13n challenges","u":"/research/research-and-studies/incentivisation","h":"#waku-i13n-challenges","p":495},{"i":514,"t":"Waku Store is a light protocol for querying historic messages that works as follows: the client sends a HistoryQuery to the server; the server sends a HistoryResponse to the client. The response may be split into multiple parts, as specified by pagination parameters in PagingInfo. We define a relevant message as a message that matches client-defined criteria (e.g., relayed within a given time frame). Upon receiving a request, a server should quickly send back a response containing all and only relevant messages.","s":"Waku Store","u":"/research/research-and-studies/incentivisation","h":"#waku-store","p":495},{"i":516,"t":"On this page An incentivised Store protocol has the following extra steps: pricing: cost calculation price advertisement price negotiation payment: payment itself proof of payment reputation results cross-checking In this document, we focus on the simplest proof-of-concept (PoC) i13n for Store. Compared to the fully-fledged protocol, the PoC version is simplified in the following ways: cost calculation is based on a common-knowledge price; there is no price advertisement and no price negotiation; each query is paid for in a separate transaction, txid acts a proof of payment; the reputation system is simplified (see below); the results are not cross-checked. In the PoC protocol: the client calculates the price based on the known rate per hour of history; the client pays the appropriate amount to the server's address; the client sends a HistoryQuery to the server alongside the proof of payment (txid); the server checks that the txid corresponds to a confirmed transaction with at least the required amount; the server sends a HistoryResponse to the client. In further subsections, we list the potential direction for future work towards a fully-fledged i13n mechanism.","s":"Waku Store incentivisation","u":"/research/research-and-studies/incentivisation","h":"","p":495},{"i":518,"t":"For PoC, we assume a constant price per hour of history. This price and the blockchain address of the server are assumed to be common knowledge. This simplifies the client-server interaction, avoiding the price negotiation step. In the future versions of the protocol, the price will be negotiated and will depend on multiple parameters, such as the total size of the relevant messages in the response.","s":"Pricing","u":"/research/research-and-studies/incentivisation","h":"#pricing","p":495},{"i":520,"t":"DoS protection - see https://github.com/waku-org/research/issues/66 Cost calculation - see https://github.com/waku-org/research/issues/35 Price advertisement - see https://github.com/waku-org/research/issues/51 Price negotiation - see https://github.com/waku-org/research/issues/52","s":"Future work","u":"/research/research-and-studies/incentivisation","h":"#future-work","p":495},{"i":522,"t":"For the PoC, each request is paid for with a separate transaction. The transaction hash (txid) acts as a proof of payment. The server verifies the payment by ensuring that: the transaction has been confirmed; the transaction is paying the proper amount to the server's account; the txid does not correspond to any prior response. The client gives proof of payment before it receives the response. Other options could be: the client pays after the fact; the client pays partly upfront and partly after the fact; a centralised third party (either trusted or semi-trusted, like a smart contract) ensures atomicity; cryptographically ensured atomicity (similar to atomic swaps, Lightning, or Hopr). Our design considerations are: the PoC protocol should be simple; servers are more \"permanent\" entities and are more likely to have long-lived identities; it is more important to protect the clients's privacy than the server's privacy. In light of these criteria, we suggest that the client pays first. This is simpler than splitting the payment, or involving an extra atomicity-enforcing mechanism. Moreover, pre-payment is arguably more privacy-preserving than post-payment, which encourages servers to deanonymise clients to prevent fraud.","s":"Payment","u":"/research/research-and-studies/incentivisation","h":"#payment","p":495},{"i":524,"t":"Add more payment methods - see https://github.com/waku-org/research/issues/58 Design a subscription model with service credentials - see https://github.com/waku-org/research/issues/59 Add privacy to service credentials - see https://github.com/waku-org/research/issues/60 Consider the impact of network disruptions - see https://github.com/waku-org/research/issues/65","s":"Future work","u":"/research/research-and-studies/incentivisation","h":"#future-work-1","p":495},{"i":526,"t":"We use reputation to discourage the server from taking the payment and not responding. The client keeps track of the server's reputation: all servers start with zero reputation points; if the server honours the request, it gets +n points; if the server does not respond before a timeout, it gets -m points. if the server's reputation drops below k points, the client will never query it again. n, m, and k are subject to configuration. Optionally, a client may treat a given server as trusted, assigning it a constant positive reputation. Potential issues: An attacker can establish new server identities and continue running away with clients' money. Countermeasures: a client only queries trusted servers (which however leads to centralisation); when querying a new server, a client first sends a small (i.e. cheap) request as a test; more generally, the client selects a server on a case-by-case basis, weighing the payment amount against the server's reputation. The ban mechanism can theoretically be abused. For instance, a competitor may attack the victim server and cause the clients who were awaiting the response to ban that server. Countermeasure: prevent DoS-attacks.","s":"Reputation","u":"/research/research-and-studies/incentivisation","h":"#reputation","p":495},{"i":528,"t":"Design a more comprehensive reputation system: local reputation - see https://github.com/waku-org/research/issues/48 global reputation - see https://github.com/waku-org/research/issues/49","s":"Future work","u":"/research/research-and-studies/incentivisation","h":"#future-work-2","p":495},{"i":530,"t":"As there is no consensus over past messages, a client may want to query multiple servers and merge their responses. Cross-checking helps ensure that servers are a) not censoring real messages; b) not injecting fake messages into history. Cross-checking is absent in PoC but may be considered later.","s":"Results cross-checking","u":"/research/research-and-studies/incentivisation","h":"#results-cross-checking","p":495},{"i":532,"t":"Cross-checking the results against censorship - see https://github.com/waku-org/research/issues/57 Use RLN to limit fake message insertion - see https://github.com/waku-org/research/issues/38","s":"Future work","u":"/research/research-and-studies/incentivisation","h":"#future-work-3","p":495},{"i":534,"t":"On this page We should think about what the success metrics for an incentivised protocol are, and how to measure them both in simulated settings, as well as in a live network.","s":"Evaluation","u":"/research/research-and-studies/incentivisation","h":"","p":495},{"i":536,"t":"On this page Analyze privacy issues - see https://github.com/waku-org/research/issues/61 Analyze decentralised storage protocols and their relevance e.g. as back-end storage for Store servers - see https://github.com/waku-org/research/issues/34 Analyze the role of message senders, in particular, whether they should pay for sending non-ephemeral messages - see https://github.com/waku-org/research/issues/32 Generalise incentivisation protocol to other Waku light protocols (Lightpush and Filter) - see https://github.com/waku-org/research/issues/67.","s":"Longer-term future work","u":"/research/research-and-studies/incentivisation","h":"","p":495},{"i":538,"t":"TLDR: This issue aims to set the maximum bandwidth in x Mbps that each waku shard should consume so that the maximum amount of people can run a full waku node. It is up to https://github.com/waku-org/research/issues/22 to specify how this maximum will be enforced. Conclusion: Limit to 10 Mbps each waku shard.","s":"Maximum Bandwidth for Global Adoption","u":"/research/research-and-studies/maximum-bandwidth","h":"","p":537},{"i":540,"t":"Waku is designed in a way that everyone should be able to run a full node on an average laptop with a residential Internet connection, at least in one shard. This will enable true decentralization and give power to the users, since they won't need to rely on third parties to send/receive messages. Professional node operators running in data centers, can of course contribute to multiple shards, but we should keep the bandwidth/hardware requirements of single shard rather low. This vision opposes the federated approach, where a few nodes requiring vast amounts of resources (cpu, memory, bandwidth) run in data centres, taking the power from the user. While federated approaches are an improvement from traditional client-server architectures, waku envisions a fully peer-to-peer architecture where anyone should be able to run a node. In order to ensure that anyone can run a node in desktop, there are two main limiting factors: Bandwidth consumption in Mbps CPU/memory resources (mainly limited by RLN proof verification) This issue focuses on i) bandwidth consumption and https://github.com/waku-org/research/issues/30 on ii) CPU/memory resources. Note that on https://github.com/waku-org/research/issues/23 an analysis on the impact on RLN was already made, but wasn't focused on scalability. Said issues do. In https://github.com/waku-org/research/issues/22 we discussed why and how to limit the maximum bandwidth per shard, but we haven't come up with a specific number in Mbps. This issue i) presents data from the available bandwidth at different locations and ii) suggests a maximum bandwidth in Mbps that waku should enforce.","s":"Introduction","u":"/research/research-and-studies/maximum-bandwidth","h":"#introduction","p":537},{"i":542,"t":"The following tables show: Table [1] The Q25, Q75 and average bandwidth (upload/download) in Mbps available on different continents. Raw data is available here and credits to @leobago for the summarized version. Note: The below numbers were rounded to the nearest integer. Table [2] The median global bandwidth (upload/download) in Mbps, taken from speedtest (accessed 12 Oct 2023). Table [3] Download bandwidth requirements in Mbps for Netflix video streaming, source. Table [1] Download (Mbps) Upload (Mbps) Q25 Average Q75 Q25 Average Q75 North-America 58 107 137 38 68 85 South-America 21 54 72 13 33 44 Europe 49 93 119 30 56 72 Asia 23 53 71 15 37 50 Oceania 44 84 108 27 50 63 Africa 12 26 33 7 17 22 Table [2] Median Download (Mbps) Median Upload (Mbps) Global 83 38 Table [3] Video resolution Recommended Bandwidth HD 3 Mbps Full HD 5 Mbps 4K/UHD 15 Mbps","s":"Bandwidth availability and usage","u":"/research/research-and-studies/maximum-bandwidth","h":"#bandwidth-availability-and-usage","p":537},{"i":544,"t":"With the above data, we should be informed to take a decision on the maximum bandwidth that we should enforce per shard. With this number, we will apply the techniques explained in https://github.com/waku-org/research/issues/22 to ensure (with some statistical confidence) that the bandwidth won't exceed that number. The trade-off is clear: We enforce a low bandwidth: more people can run full waku nodes, overall network throughput is less, network decentralization is easier, gives power to the user as its fully sovereign. We don't enforce a low bandwidth: not possible to run full waku nodes in laptops acting as a centralization force, nodes are run by few professional operators in data centers, waku users just use light clients, network throughput can scale way easier, federated approach. So it's about where to draw this line. Points to take into account: Relay contributes to bandwidth the most: Relay is the protocol that mostly contributes to bandwidth usage, and it can't choose to allocate fewer bandwidth resources like other protocols (eg store can choose to provide less resources and it will work). In other words, the network sets the relay bandwidth requirements, and if the node can't meet them, it just wont work. Upload and download bandwidth are the same: Due to how gossipsub works, and hence relay, the bandwidth consumption is symmetric, meaning that upload and download bandwidth is the same. This is because of D and the reciprocity of the connections, meaning that one node upload is another download. Nodes not meeting requirements can use light clients. Note that nodes not meeting the bandwidth requirements can still use waku, but they will have to use light protocols, which are a great alternative, especially on mobile, but with some drawbacks (trust assumptions, less reliability, etc) Waku can't take all the bandwidth: Waku is meant to be used in conjunction with other services, so it shouldn't consume all the existing bandwidth. If Waku consumes x Mbps and someone bandwidth is x Mpbs, the UX won't be good. Compare with existing well-known services: As shown in Table [3], Netflix 4K video streaming takes 15Mbps, so that is an order of magnitude to take into account. Coming up with a number: Lowest average download speed across continents is Africa (26 Mbps) Lowest average upload speed across continents is Africa (17 Mbps) Since in waku the bandwidth consumption is symmetric, we are limited by the lowest (17 Mpbs) However waku should not consume all bandwidth, leaving some room for other applications. We could set 10 Mbps, which is between Full HD video and 4K. With 10Mbps the % of average bandwidth waku will consume is: North-America 9 % South-America 18 % Europe 11 % Asia 18 % Oceania 12 % Africa 38 % Conclusion: Limit to 10 Mbps each waku shard. How? Not trivial, see https://github.com/waku-org/research/issues/22#issuecomment-1727795042 Note: This number is not set in stone and is subject to modifications, but it will most likely stay in the same order of magnitude if changed.","s":"Selecting a maximum bandwidth","u":"/research/research-and-studies/maximum-bandwidth","h":"#selecting-a-maximum-bandwidth","p":537},{"i":546,"t":"On this page Waku is a nascent technology and the Waku community is still growing. Hence, the Waku team is keen to work closely with projects to help leverage Waku technology to drive the success of their own applications. We describe below the expected flow for working with Waku and some rules of engagement to set expectations for project teams interacting with the Waku team.","s":"Rules of Engagement","u":"/rules-of-engagement","h":"","p":545},{"i":548,"t":"We encourage the initial discussion to happen over a video call. However, in-person event or online discussions are also an option. During this initial interaction, the project team should present their product and the needs they have in relation to peer-to-peer communication and real time interaction. The Waku team will provide an overview of Waku and point to specific protocol and software that should help fulfil such needs. Benefits and caveats are highlighted and further documentation and examples will be provided.","s":"1. Initial discussion","u":"/rules-of-engagement","h":"#1-initial-discussion","p":545},{"i":550,"t":"Projects should review Waku documentations and libraries in their own time; start building a PoC using Waku. Projects should start designing over Waku and come up with skeleton design or user flows about specific friction points or complex area (e.g. user experience, scaling). Project should appoint one or two Waku SME (Subject Matter Expert) to drive most discussions with Waku team to start acquire expertise on Waku behaviour. Project's Waku SMEs should present unresolved design issues to Waku team. The Waku team will then review and provide skeleton design solutions on how to overcome said unresolved or complex issues.","s":"2. Solution design","u":"/rules-of-engagement","h":"#2-solution-design","p":545},{"i":552,"t":"The project should finalise a design, solution or protocol they will build using Waku. If they wish to, they can present this solution to the Waku team to get feedback and identify technical gaps. The Waku team can provide feedback, highlight potential caveats, and communicate on delivery timeline for gaps, if any. note While the Waku team can provide feedback or even design potential solution on how Waku could be integrated in an application. It is the responsibility of the project team to understand the potential caveats and limitations that may incur with such a design. The Waku team can provide options, but it is up to the project team to decide on the final solution.","s":"3. Commitment","u":"/rules-of-engagement","h":"#3-commitment","p":545},{"i":554,"t":"The project then start building their MVP using Waku. The Waku team can provide support regarding API usage, bugs encountered, documentation gaps. Waku team will use feedback raised by project to improve APIs, fix bugs and enhance documentation. Waku team continues R&D to deliver any committed technical gaps. Project delivers their MVP. note The Waku team is keen to help any usage of Waku library. Please note that code snippets are necessary for preliminary investigations of issues. Sometimes, a code snippet is not enough; in this case, a minimal reproduction repo is necessary to allow us to do further investigation. If the project is open-source, then the Waku team might try to further investigate using it, as long as the reproduction steps are easy. If no code is provided to help with the investigation, then there is nothing the Waku team can do. For any unresolved issue, the project must open an issue on the related GitHub repository under the waku-org organisation.","s":"4. Building","u":"/rules-of-engagement","h":"#4-building","p":545},{"i":556,"t":"Once the project application is live, the Waku team is keen to maintain regular contact. This can include discussion around performance, bugs found by users, etc. The Waku team is keen to regularly present new and upcoming development to project team, highlight items that are particularly relevant. If a project wishes to take onboard any new Waku protocol, or decide to extend their product with a new functionality using Waku, the circle can resume from step 1.","s":"5. Ongoing relation","u":"/rules-of-engagement","h":"#5-ongoing-relation","p":545},{"i":558,"t":"TLDR: We present the results of 1000 nwaku nodes running rln using different message sizes, in a real network with bandwidth limitations and network delays. The goal is to study the message propagation delay distribution, and how it's affected by i) rln and ii) message size in a real environment. We observe that for messages of 10kB the average end-to-end propagation delay is 508 ms. We can also observe that the message propagation delays are severely affected when increasing the message size, which indicates that it is not a good idea to use waku for messages of eg. 500kB. See simulation parameters.","s":"Message Propagation Times With Waku-RLN","u":"/research/research-and-studies/message-propagation","h":"","p":557},{"i":560,"t":"Waku uses relay as a routing protocol, which is an adaptation of gossipsub. It routes messages following a publisher/subscriber architecture, where nodes can publish messages or subscribe to topics. If message m is published to topic t, all i nodes n_1...n_i subscribed to t will get m. The relay protocol ensures that every node gets the messages of the topics it is subscribed to. However, since relay works in a decentralized manner, all nodes contribute to the gossiping of a message, until it has successfully reached all the interested nodes (subscribed to it). This means that a message can travel multiple hops until it reaches all nodes. The amount of hops determines the message propagation time, which is measured as the time difference of when the node published the message and when another node received. This issue aims to go from theory to practice, by i) understanding message propagation times in theory and ii) presenting nwaku simulation results in an end-to-end setup with rln, with real message propagation times.","s":"Introduction","u":"/research/research-and-studies/message-propagation","h":"#introduction","p":557},{"i":562,"t":"Let's start with message propagation times in theory. On a high level, it depends on: The gossipsub configuration, being D one of the most important parameters. This sets the hops that a message will travel to reach all nodes. Higher D, less hops, less delay. Note that a higher D implies more bandwidth consumption. The node. Different nodes will see different propagation times, because a message can travel different paths. A node connected directly to the publisher (1 hop) will see lower propagation times than other nodes further away. Individual propagation times. Since a message can travel multiple hops to reach its destination, each hop adds a contribution to the overall message propagation time. This individual propagation time depends on the characteristics on the nodes involved in the connections. In a D-regular graph, like the one formed by waku nodes around a topic, the maximum amount of hops that a message can travel to reach all nodes can be calculated as ceil(log(total_nodes)/log(D)). For example, with log(1000)/log(6) = 3.85 = 4. So in a network with 1000 nodes and D=6, no matter which node publishes the message, in 4 hops it will reach all the nodes. Notice the \"worst case\" since some nodes might be directly connected to the publisher, so they will get the message in just 1 hop. But how long does it take to jump each hop? It depends on: The latency between nodes. Can be measured as the time to respond to a ping. The size of the messages. The bigger the message, the more time it takes to transmit. Nodes bandwidth. Sender upload bandwidth and receiver download bandwidth. More important when using big message sizes. Message validation time. When each node receives a message, it applies some validation to decide if the message is further gossiped or not. In the case of waku, this is RLN (paper, rfc) Assuming a message m that travels 4 hops from node n1 (publisher) to n5 (subscriber) we can calculate the message propagation time mpt=ipt_1+ipt_2+ipt_3+ipt_4 where ipt is the individual propagation time between each node in the chain. However, specific message propagation times are useless, we need average times under specific conditions. And for this, we need simulations.","s":"Theory","u":"/research/research-and-studies/message-propagation","h":"#theory","p":557},{"i":564,"t":"Using shadow simulator, we have developed a tool that allows to simulate message propagation delays of nwaku (using a slightly modified branch, mainly to instrument it with tools to measure the times + starting from an already connected mesh. Thanks @Menduist for the help. Note that running this simulation requires a significant amount of resources, done with 256 GB of RAM. The configuration of the simulation is (see config): latency=100ms. Average latency in our current waku network. Thanks @vpavlin for the measurements. See this for live data. down_bandwidth=83Mbps, up_bandwidth=38Mbps. As shown in Table 2 that's the worldwide median speed. D=6, which is the current nwaku configuration. nodes=1000. Amount of nodes used in the simulation nwaku was used with a minor modification A total of 10 messages were published, that led to 9990 received messages. Since shadow doesn't take into account CPU times (by now), we simulate it with sleepAsync as per https://github.com/waku-org/research/issues/23 findings. 0.012 seconds for proof verification and 0.15 seconds for proof generation.","s":"Simulations","u":"/research/research-and-studies/message-propagation","h":"#simulations","p":557},{"i":566,"t":"The following figure shows the message propagation time with real simulations, showing the distribution in a network with the above configuration with three different message sizes: 10kB, 100kB, 500kB. Note that the whiskers indicate the best/worst values and the box contains P25 to P75 values. Average mu and P95 are also shown. Raw data here. Important note. The first messages sent in the simulations are omitted, since they show an abnormal propagation delay that doesn't reflect reality. This is due to how flow control works in TCP, where right after connection, the sender node has no idea of the \"bandwidth\" of the receiver node, so it will start sending packages at a lower rate. This translates into high transmission times, and it's more pronounced when dealing with big message sizes. In other words, in a 100Mpbs link, 100Mbits won't be sent in 1 second, or at least not a the beginning, when the node is slowly increasing the rate until based on ACK/NACK ratio. For more information about this, this is explained in here. Conclusions: Using small messages 10kB the average propagation delay is 508 ms, quite reasonable for applications using waku. The variance is acceptable, with 95% of the messages arriving in <627 ms. When using a size of 10kB we can see that the best case propagation delay is 263 ms. This corresponds to the nodes that are just 1 hop from the publisher. The proof generation time 0.15 seconds affects the most, where the rest is the inter-node latency and the transmission of the message itself. We can see that the message propagation delay increases with big messages, 100kB and 500kB. So its probably not a good idea to use waku for such big messages. Note that these simulations had 1000 nodes, so if we scale it to 10000 or beyond, propagation times would be worse. Best case propagation time (lower part of the whisker) is quite similar in all cases. This is because it corresponds to the node that is just 1 hop away from the publisher. Future work: Current waku D values (average of 6 ranging from 4 to 12) have a huge impact on the bandwidth that a node consumes. Are we willing to lower D in order to reduce bandwidth but increase message propagation times? Since shadow doesn't take CPU time into account, it's currently simulated for rln, which should be the biggest bottleneck. Once shadow has this feature times would be more accurate.","s":"Results","u":"/research/research-and-studies/message-propagation","h":"#results","p":557},{"i":568,"t":"Transports help move data packets across a network by establishing connections between peers. They define the rules and protocols to ensure efficient network transmission, routing, and data delivery. Waku is a transport-agnostic framework that allows developers to choose and support multiple protocols according to their requirements. For Waku nodes, the following transports are recommended: TCP: By default, Waku nodes use TCP for communication. Service nodes should employ TCP for listening to and connecting with other nodes. Secure WebSocket: In browser environments, secure WebSocket is used. Service nodes are encouraged to set up SSL certificates to enable incoming connections from browsers and serve them securely. Other protocols like WebRTC, WebTransport, and QUIC have been researched and studied for potential integration. info Waku ensures compatibility and improved communication capabilities by following these recommended transports.","s":"Transports","u":"/learn/concepts/transports","h":"","p":567},{"i":570,"t":"The following features are currently experimental and under research and initial implementation:","s":"Research","u":"/learn/research","h":"","p":569},{"i":572,"t":"We aim to enable an incentivised spam protection technique to enhance Relay by using Rate Limit Nullifiers (RLN). In this advanced method, peers are limited to a certain messaging rate per epoch, and an immediate financial penalty is enforced for spammers who break this rate. You can find more details in the RLN Relay blog post. We have prepared a PoC implementation of this method in JS: https://examples.waku.org/rln-js/","s":"Economic spam resistance","u":"/learn/research","h":"#economic-spam-resistance","p":569},{"i":574,"t":"Denial of service signifies the case where an adversarial peer exhausts another node's service capacity (e.g., by making a large number of requests) and makes it unavailable to the rest of the system. RnD on DoS attack mitigation can tracked from here: https://github.com/vacp2p/research/issues/148. In a nutshell, peers have to pay for the service they obtain from each other. In addition to incentivising the service provider, accounting also makes DoS attacks costly for malicious peers. The accounting model can be used in Store and Filter to protect against DoS attacks. Additionally, along with RLN, this gives node operators who provide a useful service to the network an incentive to perform that service. Read more here: https://vac.dev/building-privacy-protecting-infrastructure You can also read more about the ongoing challenges the Waku team is working on here: https://github.com/waku-org/research","s":"Prevention of denial of service (DoS) and node incentivisation","u":"/learn/research","h":"#prevention-of-denial-of-service-dos-and-node-incentivisation","p":569},{"i":576,"t":"On this page Last updated: 14 February 2024 These website terms of use ('Website Terms of Use') are entered into by you and us, and they govern your access and use of this Website, including any content and functionality contained in the Website. It is your responsibility to read the Website Terms of Use carefully before your use of the Website and your use of the Website means you have agreed to be bound and comply with these Website Terms of Use. If you do not agree with these Website Terms of Use, you must not access or use the Website.","s":"Terms of Use","u":"/terms","h":"","p":575},{"i":578,"t":"For the purposes of these Website Terms of Use, the relevant entity is the Logos Collective Association, which has its registered office in Zug and its legal domicile address at: Logos Collective Association c/o PST Consulting GmbH Baarerstrasse 10 6300 Zug Switzerland Whenever we refer to “Logos”, “we”, “us” or any other similar references, we are referring to the Logos Collective Association.","s":"1) Who we are","u":"/terms","h":"#1-who-we-are","p":575},{"i":580,"t":"The Website is provided by us on an ‘as is’ basis and you use the Website at your own sole discretion and risk. We disclaim all warranties of any kind, express or implied, including without limitation the warranties of merchantability, fitness for a particular purpose, and non-infringement of intellectual property or other violation of rights. We do not warrant or make any representations concerning the completeness, accuracy, legality, utility, reliability, suitability or availability of the use of the Website, the content on this Website or otherwise relating to the Website, such content or on any sites linked to this site.These disclaimers will apply to the maximum extent permitted by applicable law. We make no claims that the Website or any of its content is accessible, legally compliant or appropriate in your jurisdiction. Your access or use of the Website is at your own sole discretion and you are solely responsible for complying with any applicable local laws. The content herein or as accessible through this website is intended to be made available for informational purposes only and should not be considered as creating any expectations or forming the basis of any contract, commitment or binding obligation with us. No information herein shall be considered to contain or be relied upon as a promise, representation, warranty or guarantee, whether express or implied and whether as to the past, present or the future in relation to the projects and matters described herein. The information contained herein does not constitute financial, legal, tax, or other advice and should not be treated as such. Nothing in this Website should be construed by you as an offer to buy or sell, or soliciting any offer to buy or sell any tokens or any security.","s":"2) Disclaimers","u":"/terms","h":"#2-disclaimers","p":575},{"i":582,"t":"The Website may also contain forward-looking statements that are based on current expectations, estimates, forecasts, assumptions and projections about the technology, industry and markets in general. The forward looking statements, which may include statements about the roadmap, project descriptions, technical details, functionalities, features, the development and use of tokens by projects, and any other statements related to such matters or as accessible through this website are subject to a high degree of risk and uncertainty. The forward looking statements are subject to change based on, among other things, market conditions, technical developments, and regulatory environment. The actual development and results, including the order and the timeline, might vary from what’s presented. The information contained herein is a summary and does not purport to be accurate, reliable or complete and we bear no responsibility for the accuracy, reliability or completeness of information contained herein. Because of the high degree of risk and uncertainty described above, you should not place undue reliance on any matters described in this website or as accessible through this website. While we aim to update our website regularly, all information, including the timeline and the specifics of each stage, is subject to change and may be amended or supplemented at any time, without notice and at our sole discretion.","s":"3) Forward looking statements","u":"/terms","h":"#3-forward-looking-statements","p":575},{"i":584,"t":"The Website and its contents are made available under Creative Commons Attribution 4.0 International license (CC-BY 4.0). In essence this licence allows users to copy, modify and distribute the content in any format for any purpose, including commercial use, subject to certain requirements such as attributing us. For the full terms of this licence, please refer to the following website: https://creativecommons.org/licenses/by/4.0/.","s":"4) Intellectual property rights","u":"/terms","h":"#4-intellectual-property-rights","p":575},{"i":586,"t":"To the extent the Website provides any links to a third party website, then their terms and conditions, including privacy policies, govern your use of those third party websites. By linking such third party websites, Status does not represent or imply that it endorses or supports such third party websites or content therein, or that it believes such third party websites and content therein to be accurate, useful or non-harmful. We have no control over such third party websites and will not be liable for your use of or activities on any third party websites accessed through the Website. If you access such third party websites through the Website, it is at your own risk and you are solely responsible for your activities on such third party websites.","s":"5) Third-party website links","u":"/terms","h":"#5-third-party-website-links","p":575},{"i":588,"t":"We will not be held liable to you under any contract, negligence, strict liability, or other legal or equitable theory for any lost profits, cost of procurement for substitute services, or any special, incidental, or consequential damages related to, arising from, or in any way connected with these Website Terms of Use, the Website, the content on the Website, or your use of the Website, even if we have been advised of the possibility of such damages. In any event, our aggregate liability for such claims is limited to EUR 100 (one hundred Euros). This limitation of liability will apply to the maximum extent permitted by applicable law.","s":"6) Limitation of liability","u":"/terms","h":"#6-limitation-of-liability","p":575},{"i":590,"t":"You shall indemnify us and hold us harmless from and against any and all claims, damages and expenses, including attorneys’ fees, arising from or related to your use of the Website, the content on the Website, including without limitation your violation of these Website Terms of Use.","s":"7) Indemnity","u":"/terms","h":"#7-indemnity","p":575},{"i":592,"t":"We may modify or replace any part of this Website Terms of Use at any time and without notice. You are responsible for checking the Website periodically for any changes. The new Website Terms of Use will be effective immediately upon its posting on the Website.","s":"8) Modifications","u":"/terms","h":"#8-modifications","p":575},{"i":594,"t":"Swiss law governs these Website Terms of Use and any disputes between you and us, whether in court or arbitration, without regard to conflict of laws provisions.","s":"9) Governing law","u":"/terms","h":"#9-governing-law","p":575},{"i":596,"t":"In these terms, “dispute” has the broadest meaning enforceable by law and includes any claim you make against or controversy you may have in relation to these Website Terms of Use, the Website, the content on the Website, or your use of the Website. We prefer arbitration over litigation as we believe it meets our principle of resolving disputes in the most effective and cost effective manner. You are bound by the following arbitration clause, which waives your right to litigation and to be heard by a judge. Please note that court review of an arbitration award is limited. You also waive all your rights to a jury trial (if any) in any and all jurisdictions. If a (potential) dispute arises, you must first use your reasonable efforts to resolve it amicably with us. If these efforts do not result in a resolution of such dispute, you shall then send us a written notice of dispute setting out (i) the nature of the dispute, and the claim you are making; and (ii) the remedy you are seeking. If we and you are unable to further resolve this dispute within sixty (60) calendar days of us receiving this notice of dispute, then any such dispute will be referred to and finally resolved by you and us through an arbitration administered by the Swiss Chambers’ Arbitration Institution in accordance with the Swiss Rules of International Arbitration for the time being in force, which rules are deemed to be incorporated herein by reference. The arbitral decision may be enforced in any court. The arbitration will be held in Zug, Switzerland, and may be conducted via video conference virtual/online methods if possible. The tribunal will consist of one arbitrator, and all proceedings as well as communications between the parties will be kept confidential. The language of the arbitration will be in English. Payment of all relevant fees in respect of the arbitration, including filing, administration and arbitrator fees will be in accordance with the Swiss Rules of International Arbitration. Regardless of any applicable statute of limitations, you must bring any claims within one year after the claim arose or the time when you should have reasonably known about the claim. You also waive the right to participate in a class action lawsuit or a classwide arbitration against us.","s":"10) Disputes","u":"/terms","h":"#10-disputes","p":575},{"i":598,"t":"These Website Terms of Use cover the entire agreement between you and us regarding the Website and supersede all prior and contemporaneous understandings, agreements, representations and warranties, both written and oral, with respect to the Website. The captions and headings identifying sections and subsections of these Website Terms of Use are for reference only and do not define, modify, expand, limit, or affect the interpretation of any provisions of these Website Terms of Use. If any part of these Website Terms of Use is held invalid or unenforceable, that part will be severable from these Website Terms of Use, and the remaining portions will remain in full force and effect. If we fail to enforce any of these Website Terms of Use, that does not mean that we have waived our right to enforce them. If you have any specific questions about these Website Terms of Use, please contact us at legal@free.technology. This document is licensed under CC-BY-SA.","s":"11) About these Website Terms of Use","u":"/terms","h":"#11-about-these-website-terms-of-use","p":575}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/2",[0,5.042,1,3.428,2,5.724,3,1.452,4,5.51,5,3.339,6,4.035,7,5.156,8,5.974,9,5.042,10,3.215,11,2.661,12,3.795,13,1.649,14,6.004,15,3.691,16,1.312,17,3.035,18,5.724,19,3.152,20,3.092,21,3.035,22,5.042,23,3.215,24,2.38,25,2.012,26,1.751,27,3.428,28,2.787,29,6.004,30,2.512,31,0.685,32,2.787]],["t/4",[3,1.054,5,3.73,10,3.663,31,0.983,32,4.379,33,5.799,34,4.945,35,4.099,36,5.994,37,5.994,38,4.099,39,5.746,40,3.459,41,3.999,42,2.903,43,1.898,44,6.842]],["t/6",[6,3.071,10,3.514,16,0.999,25,2.199,28,3.046,31,0.876,32,3.564,33,4.721,34,3.303,35,2.738,36,4.565,37,4.565,38,2.738,39,5.511,40,2.31,41,2.671,42,2.784,43,2.13,45,2.269,46,1.836,47,1.238,48,3.179,49,3.62,50,1.68,51,2.738,52,3.179,53,2.121,54,4.128,55,2.447,56,3.838,57,4.57,58,2.156,59,4.128,60,2.888,61,3.303,62,3.445,63,2.121,64,2.888,65,1.701,66,4.128,67,4.57,68,4.57,69,2.552,70,2.738,71,3.514,72,2.671,73,3.838,74,5.511,75,3.303,76,3.071,77,4.128,78,4.128,79,3.838,80,4.128,81,2.025,82,7.04,83,4.57,84,2.088,85,5.928,86,4.57]],["t/8",[3,1.049,5,2.797,7,3.132,13,0.833,16,1.307,22,2.547,23,1.624,25,2.487,31,1.116,32,3.16,35,2.882,45,1.506,47,1.491,69,2.687,81,1.344,87,1.324,88,2.74,89,1.933,90,2.403,91,2.74,92,4.667,93,2.347,94,1.455,95,1.959,96,1.907,97,2.699,98,2.526,99,2.868,100,1.148,101,2.013,102,1.51,103,1.773,104,3.202,105,3.132,106,3.347,107,2.192,108,4.431,109,3.041,110,2.74,111,3.629,112,2.918,113,1.773,114,1.506,115,1.865,116,1.051,117,2.11,118,2.812,119,1.633,120,2.882,121,2.308,122,1.959,123,1.577,124,3.041,125,2.288,126,1.693,127,1.592,128,3.233,129,2.478,130,2.547,131,1.658,132,1.455,133,1.418,134,0.841,135,2.812,136,2.11,137,1.974,138,1.386,139,2.288,140,1.817,141,2.288,142,1.562,143,2.192,144,2.403,145,1.506,146,0.95,147,1.102,148,1.865]],["t/10",[3,1.397,5,2.371,11,2.789,32,2.921,118,3.678,125,4.747,149,5.685,150,2.969,151,4.548,152,4.986,153,4.747,154,4.548,155,3.593,156,4.747,157,4.129,158,4.096,159,6.161,160,5.317,161,3.977,162,4.548,163,5.285,164,4.229,165,3.241,166,6.293,167,4.096,168,3.181,169,4.378,170,4.986,171,5.285,172,2.789,173,3.241,174,4.378]],["t/12",[3,1.252,16,1.364,23,3.343,25,2.092,26,1.821,28,3.772,40,3.156,47,1.178,65,2.323,92,3.215,108,4.064,119,1.95,132,2.995,138,2.853,161,3.946,165,3.215,175,4.946,176,4.512,177,3.649,178,4.195,179,3.497,180,4.343,181,4.946,182,3.156,183,5.243,184,2.898,185,3.156,186,4.946,187,6.243,188,5.243,189,6.243,190,2.898,191,5.64,192,6.243]],["t/14",[3,1.397,11,2.789,16,1.375,17,3.181,21,3.181,25,2.737,28,2.921,40,3.181,47,1.541,142,3.241,146,1.613,180,4.378,181,4.986,184,2.921,193,3.977,194,3.439,195,3.019,196,5.285,197,4.747,198,5.285,199,2.562,200,3.241,201,3.732,202,4.747,203,4.229,204,3.77,205,3.77,206,4.747,207,4.378,208,3.977,209,2.597]],["t/16",[3,1.445,15,2.1,23,1.829,28,2.997,31,0.828,38,3.164,40,1.727,47,0.644,60,2.159,65,1.271,69,1.907,87,1.492,93,2.577,118,1.996,119,1.267,136,2.376,138,1.561,146,0.675,155,1.95,157,1.727,161,3.338,167,2.223,177,3.087,178,3.549,179,1.47,182,3.264,184,1.586,193,3.338,196,4.435,197,2.576,200,2.72,210,4.87,211,5.281,212,5.281,213,5.281,214,3.813,215,3.674,216,4.771,217,2.706,218,4.771,219,1.907,220,5.281,221,3.416,222,3.416,223,2.376,224,6.456,225,2.622,226,3.416,227,3.416,228,4.771,229,2.223,230,2.295,231,3.086,232,6.1,233,5.281,234,3.983,235,3.086,236,1.727,237,4.771,238,1.638,239,5.115,240,2.706,241,2.868,242,2.706,243,2.949,244,3.416,245,3.086,246,1.996,247,1.727,248,3.416,249,2.576,250,2.706,251,2.046,252,2.159,253,2.706,254,2.469,255,4.771,256,4.435,257,2.868,258,3.416,259,3.416,260,1.829,261,2.376,262,2.868,263,2.868,264,1.667,265,3.086,266,3.416,267,3.416,268,3.086]],["t/20",[3,1.245,11,2.745,31,0.706,41,3.62,45,3.075,50,2.277,89,2.488,100,1.284,123,3.126,134,1.718,138,2.83,142,3.189,146,1.223,153,4.672,158,4.032,160,4.032,161,3.914,162,4.476,168,3.131,173,3.189,182,3.131,194,3.385,199,2.521,269,6.193,270,5.201,271,3.075,272,5.595,273,5.201,274,4.309,275,4.907,276,3.62]],["t/22",[2,4.512,3,1.252,4,6.284,5,3.061,7,5.289,15,3.838,17,4.108,19,3.277,20,3.215,23,4.351,27,3.565,31,0.927,63,2.898,65,2.323,93,3.046,94,2.995,108,4.064,109,5.136,115,3.838,231,5.64,264,3.046,277,3.046,278,5.64,279,2.853,280,3.565,281,6.243,282,4.946,283,5.64,284,5.243]],["t/24",[3,1.48,5,2.132,13,1.554,31,0.868,69,4.804,94,2.714,100,0.734,108,3.683,110,5.111,111,5.742,112,2.76,113,3.307,114,3.78,115,3.478,116,2.639,117,3.936,134,1.569,138,2.585,146,1.117,225,2.809,268,5.111,280,3.23,285,4.913,286,5.029,287,4.482,288,4.482,289,3.389,290,5.657,291,5.657,292,4.089,293,3.936,294,5.657,295,3.683,296,3.23,297,5.657,298,4.482,299,5.657]],["t/26",[2,3.518,3,1.402,4,3.962,5,0.848,6,1.512,7,3.168,10,1.205,16,1.245,17,1.137,19,1.181,23,2.019,25,2.125,31,0.872,32,1.044,33,3.502,35,2.259,36,1.565,37,1.565,38,1.348,39,3.166,41,1.315,45,2.417,46,0.904,47,1.592,48,1.565,49,2.987,52,1.565,53,1.044,55,1.205,59,2.032,71,1.205,72,1.315,76,1.512,79,1.889,81,1.671,89,3.072,92,1.942,93,1.84,95,0.916,99,1.88,100,0.632,101,2.036,102,1.99,103,2.204,104,3.049,105,3.168,106,2.623,108,3.707,109,1.422,112,2.375,114,1.872,118,2.845,119,1.749,120,1.348,121,1.079,122,1.535,123,0.737,124,3.076,128,3.271,129,2.506,130,1.889,131,1.23,132,3.938,133,1.434,134,1.046,135,2.845,137,2.454,146,0.961,147,1.37,168,1.137,185,3.866,207,1.565,255,3.406,260,1.205,271,1.117,280,1.285,285,1.285,286,1.315,300,3.406,301,1.889,302,2.25,303,1.626,304,0.928,305,2.46,306,2.725,307,1.256,308,0.848,309,1.422,310,1.697,311,1.782,312,1.697,313,1.556,314,2.032,315,2.987,316,1.465,317,0.827,318,0.968,319,1.117,320,2.25,321,2.25,322,1.697,323,2.25,324,1.626,325,1.315,326,0.78,327,1.181,328,1.512,329,1.697,330,2.032,331,1.889,332,1.697,333,1.465,334,2.032,335,1.028,336,2.25,337,2.844,338,1.697,339,1.512,340,1.383,341,1.782,342,1.012,343,1.697,344,1.205,345,1.889,346,1.782,347,1.465]],["t/28",[13,1.912,16,1.522,25,2.333,31,0.993,35,4.171,47,1.314,87,3.041,89,3.5,95,2.835,96,2.76,97,3.454,98,4.573,99,3.673,100,0.904,135,4.07,136,4.844,137,4.533,305,3.52,335,3.182]],["t/30",[3,1.01,25,2.196,35,3.927,47,1.582,96,2.599,99,2.533,119,2.012,132,3.145,133,1.932,135,5.405,137,5.459,146,1.295,219,3.661,324,4.738,332,6.975,333,4.268,348,5.923,349,3.927,350,4.945,351,4.268,352,4.268,353,4.945,354,5.194,355,6.556,356,6.556]],["t/32",[5,1.458,13,1.063,24,2.303,25,1.297,32,1.797,35,2.319,43,2.968,46,2.801,47,1.096,58,1.826,84,1.769,99,2.694,100,0.502,113,2.262,119,0.929,132,2.786,133,1.712,135,5.752,136,2.693,137,2.52,146,0.765,157,1.957,168,1.957,332,6.577,333,2.52,334,5.248,350,2.92,351,5.405,353,4.382,357,3.871,358,2.693,359,2.614,360,4.051,361,3.497,362,2.21,363,1.534,364,1.555,365,4.602,366,3.781,367,5.809,368,2.92,369,2.92,370,3.871,371,3.871,372,3.871,373,3.871,374,3.871,375,1.423,376,3.871,377,3.871,378,3.871,379,2.319,380,3.497,381,3.497,382,2.52,383,2.38]],["t/34",[5,3.194,13,1.831,16,1.853,31,1.063,32,3.095,33,4.099,47,1.599,81,2.955,87,2.912,89,3.405,95,2.714,96,2.643,97,3.36,98,3.5,99,2.576,100,0.865,114,3.31,305,4.285,318,2.87,319,3.31,335,3.047,384,5.282]],["t/36",[3,0.813,5,1.988,24,2.878,31,0.947,42,2.239,43,2.753,46,2.916,81,2.339,87,2.304,89,2.12,92,2.717,97,2.878,100,1.288,112,4.363,118,3.084,119,1.266,123,1.729,146,1.042,225,2.62,304,2.177,313,2.996,317,1.94,318,2.271,354,5.752,359,2.374,360,4.05,375,1.94,385,5.774,386,5.477,387,4.244,388,4.767,389,5.277,390,3.084]],["t/38",[3,0.897,5,2.925,16,2.035,24,2.309,26,1.699,31,0.664,42,3.294,43,2.87,65,2.168,100,0.756,119,2.235,133,2.573,146,1.151,360,3.788,390,3.405,391,7.333,392,7.333,393,4.615,394,6.52,395,3,396,4.615,397,2.662,398,5.826,399,5.826]],["t/40",[3,0.692,5,1.692,11,1.991,25,2.171,30,2.711,31,0.512,42,1.906,43,2.85,46,2.603,47,1.789,65,2.412,95,1.828,96,1.78,97,1.78,102,2.386,116,1.557,119,1.078,146,0.887,207,4.508,208,2.839,214,2.358,249,3.388,260,2.405,264,2.191,307,4.648,359,3.746,363,3.3,364,3.344,375,1.651,387,2.625,390,2.625,395,2.313,400,4.508,401,4.555,402,5.735,403,3.388,404,5.791,405,4.057,406,3.388,407,3.018,408,4.057,409,2.405,410,4.491]],["t/42",[31,0.899,32,2.766,33,3.663,42,2.528,43,2.186,46,3.165,47,1.666,48,5.482,82,6.243,87,2.602,89,2.393,114,2.958,157,3.012,243,3.327,300,5.383,303,6.382,359,2.681,375,2.191,384,4.72,411,5.958,412,3.19,413,4.004,414,5.383,415,5.383,416,7.977,417,5.383,418,3.012,419,5.383,420,5.958,421,4.981,422,5.383,423,4.306]],["t/44",[3,0.853,16,1.21,24,2.195,31,1.04,43,2.837,46,3.014,47,1.855,71,2.965,95,3.055,97,2.975,98,3.939,146,1.094,157,3.793,303,4.002,359,3.376,360,2.702,424,2.965,425,5.945,426,5.538,427,5.003,428,5.003,429,4.65,430,5.003,431,3.605,432,4.177,433,5.003,434,5.003,435,4.65,436,7.504,437,5.003,438,4.65]],["t/46",[3,0.669,16,1.382,24,3.248,25,1.455,31,0.934,43,2.8,46,2.996,47,1.715,58,2.984,71,2.325,87,1.896,96,2.957,97,2.957,98,2.279,99,2.882,116,1.505,132,2.083,135,3.696,146,0.858,157,2.195,159,3.275,190,2.016,210,3.275,354,3.44,359,3.356,360,3.639,361,3.923,362,3.611,363,2.957,364,2.996,365,3.44,366,5.334,382,2.827,383,2.67,424,2.325,439,4.342,440,3.138,441,3.646,442,2.601,443,3.275,444,6.324,445,3.44,446,3.646,447,4.342,448,4.342,449,4.342,450,2.827,451,3.44]],["t/48",[3,1.133,13,2.02,19,3.861,20,3.788,26,2.146,31,0.839,89,2.954,108,4.788,124,4.649,128,4.942,129,3.788,130,6.177,131,4.02,132,3.528,133,2.168,134,2.04,305,3.718,335,3.361,407,4.942]],["t/50",[3,1.133,5,2.771,31,0.839,32,3.415,61,5.316,108,4.788,128,6.548,131,4.926,136,5.117,168,3.718,173,4.641,329,5.548,452,3.861,453,4.788,454,5.316]],["t/52",[5,3.525,20,3.463,26,2.87,124,4.25,128,6.97,131,5.377,148,4.134,282,5.327,318,2.894,452,3.53,455,4.678,456,7.858,457,6.724,458,6.724]],["t/54",[2,4.407,3,0.939,5,3.015,10,3.265,19,3.201,26,2.605,43,1.691,89,2.449,94,2.925,115,3.749,128,7.021,131,5.182,172,2.702,205,3.653,295,3.969,452,3.201,459,5.12,460,5.508,461,3.653,462,3.405,463,3.973,464,3.749,465,6.097,466,5.508,467,6.097,468,6.097,469,6.097]],["t/56",[3,0.634,8,3.103,11,2.694,13,1.13,16,0.899,18,2.974,19,3.795,30,3.025,31,0.469,38,2.465,42,1.746,50,1.513,52,2.862,65,1.531,100,0.534,129,4.112,132,1.974,133,2.628,134,1.141,146,0.813,168,3.073,170,3.26,184,3.356,195,1.974,199,1.675,274,4.229,305,2.08,316,2.678,322,3.103,325,2.405,326,1.426,335,1.88,339,2.765,351,4.706,396,3.26,412,3.255,459,3.455,460,3.717,462,2.297,470,4.816,471,5.366,472,2.862,473,2.349,474,3.103,475,5.492,476,3.717,477,6.079,478,4.114,479,4.816,480,6.079,481,3.455,482,3.103,483,2.6,484,2.349,485,3.717,486,3.103,487,5.555,488,2.974,489,4.114,490,4.114,491,4.114,492,4.114,493,3.26,494,2.53,495,1.851,496,2.862,497,3.103,498,2.6,499,2.678,500,4.114,501,4.114,502,4.114]],["t/58",[31,0.894,43,2.44,100,0.768,116,2.05,129,4.038,131,3.232,132,2.837,133,2.761,134,1.64,190,2.745,225,2.936,375,2.883,412,3.166,453,3.849,470,6.212,487,4.114,503,4.966,504,7.947,505,3.974,506,3.893,507,3.636,508,7.084,509,5.913,510,5.913,511,2.745,512,3.045,513,5.342,514,5.342,515,7.841,516,3.737,517,5.913]],["t/60",[129,3.554,132,3.311,136,4.801,190,3.204,351,4.493,412,3.696,476,6.235,487,4.801,504,7.827,506,3.427,508,6.235,514,6.235,518,4.493,519,8.664,520,5.468,521,6.864,522,5.796,523,7.276,524,5.468,525,6.235,526,5.796,527,3.489]],["t/62",[3,0.932,11,2.682,31,0.908,43,2.468,53,2.809,116,2.097,129,4.099,133,2.622,134,1.678,146,1.195,152,4.793,162,4.373,167,5.182,168,4.024,353,4.564,369,4.564,453,3.938,506,3.953,507,3.72,511,2.809,512,3.116,513,5.466,518,3.938,527,3.058,528,7.961,529,4.209,530,7.192,531,6.05,532,6.05,533,6.05,534,5.466]],["t/64",[5,3.357,13,1.983,17,3.65,19,3.79,20,3.718,25,2.419,31,1.016,32,3.352,89,2.9,90,5.72,124,5.631,309,4.563,325,4.22,326,2.502,535,6.522,536,6.063,537,6.522,538,5.72]],["t/67",[5,2.6,6,5.822,17,3.489,19,4.971,124,5.985,190,3.204,195,3.311,240,5.468,251,4.135,286,5.535,539,6.902,540,6.235,541,6.902,542,4.988,543,6.902,544,6.535,545,4.988,546,4.801]],["t/69",[5,2.907,15,4.745,16,1.687,24,3.059,134,2.141,143,5.577,165,3.974,180,5.368,384,6.114,547,3.274,548,6.48,549,6.48,550,6.971,551,7.717]],["t/71",[5,2.851,6,5.086,10,4.052,13,2.078,19,4.814,53,3.513,62,3.973,124,4.783,198,6.355,317,2.782,552,4.926,553,6.355,554,7.568,555,6.837,556,7.568]],["t/73",[5,3.015,11,2.702,19,4.688,22,5.12,25,2.681,31,0.695,35,3.653,63,2.831,116,2.113,119,1.92,121,2.925,122,3.257,124,5.993,129,3.14,165,3.14,207,4.242,214,3.201,238,2.925,313,2.516,317,2.942,325,3.564,459,5.12,472,4.242,557,5.508,558,5.508,559,5.508,560,4.407,561,3.564,562,5.508,563,5.508,564,4.599]],["t/75",[5,2.771,20,3.788,31,0.839,45,3.652,123,2.41,124,4.649,134,2.04,271,3.652,285,4.2,286,4.299,304,3.035,326,2.549,327,3.861,328,4.942,544,5.548,565,4.649,566,3.938,567,5.316,568,6.177]],["t/77",[3,1.123,9,6.119,25,2.441,31,0.831,32,3.383,58,3.438,124,5.664,134,2.021,146,1.439,155,4.161,165,3.752,464,4.48,569,5.069,570,3.684,571,7.287,572,5.496,573,7.287,574,3.752,575,7.287]],["t/79",[3,1.321,13,1.543,16,1.228,17,2.839,21,2.839,31,1.046,32,2.608,47,1.618,71,4.057,89,2.256,100,0.983,104,5.403,105,3.656,106,3.907,107,4.059,133,1.655,146,1.109,201,2.567,251,3.365,305,2.839,312,4.237,313,3.538,317,2.065,335,2.567,375,2.065,424,3.008,450,3.656,452,2.948,483,3.55,542,4.059,576,4.45,577,4.237,578,3.656,579,5.074,580,5.074]],["t/81",[10,3.83,23,3.83,31,0.816,32,4.113,33,5.447,34,5.17,35,4.286,36,6.163,37,6.163,104,5.153,107,6.956,199,2.912,581,8.004]],["t/83",[24,1.32,30,2.166,31,0.724,42,2.695,43,2.869,46,2.878,47,1.863,58,1.57,62,1.747,71,1.782,95,2.586,96,2.518,97,1.32,98,1.747,99,1.286,101,1.393,102,1.045,104,4.156,105,3.37,107,4.59,116,1.154,119,0.799,127,1.747,135,1.946,138,1.521,150,2.442,185,1.683,214,1.747,236,1.683,260,2.772,307,3.547,310,6.871,313,1.374,347,2.167,359,2.858,360,3.099,363,1.32,364,1.337,365,2.637,366,3.37,397,1.521,401,3.805,402,3.905,403,2.511,404,3.601,406,2.511,431,2.167,438,2.795,463,4.08,527,1.683,547,2.196,582,2.167,583,5.738,584,3.37,585,5.334,586,4.101,587,4.676,588,3.007,589,2.406,590,2.511,591,2.637,592,3.007,593,1.819]],["t/85",[13,0.836,24,1.207,30,1.274,31,0.684,42,2.544,43,2.86,46,2.74,47,1.827,58,1.436,71,1.63,95,2.777,96,2.377,97,1.207,98,1.598,99,1.176,101,2.019,102,0.955,104,3.982,105,3.142,107,4.333,119,0.73,135,1.779,138,1.391,150,2.829,184,1.413,185,1.539,200,3.83,236,1.539,249,2.296,260,1.63,307,3.348,309,1.924,311,6.269,313,1.256,342,1.37,347,1.982,359,3.07,360,2.925,363,1.913,364,1.939,365,2.412,366,3.142,401,3.592,402,3.64,403,2.296,404,3.357,406,2.296,408,2.75,431,3.142,438,2.557,463,4.505,529,2.118,547,2.048,584,3.142,586,3.823,589,2.2,591,2.412,592,2.75,594,4.065,595,5.035,596,4.36,597,2.75,598,4.36,599,5.416,600,3.044,601,4.36,602,2.75]],["t/87",[23,1.01,24,1.287,25,0.632,30,0.79,31,0.579,42,2.428,43,2.941,46,1.717,47,1.843,65,0.702,71,1.739,95,0.768,96,2.013,97,0.748,98,0.991,99,0.729,104,4.108,106,5.912,107,4.136,116,1.126,148,1.16,150,2.017,173,0.972,185,0.954,199,0.768,200,2.947,232,5.25,236,0.954,249,1.423,307,3.195,310,3.83,311,4.023,313,1.34,340,1.16,359,3.326,360,2.792,363,1.287,364,1.304,366,3.725,375,0.694,390,1.103,402,3.83,404,4.349,431,2.114,432,4.716,440,1.364,450,1.228,461,1.131,463,4.22,518,3.305,547,1.378,550,2.934,565,2.702,584,2.114,585,2.727,586,1.495,587,2.934,588,2.934,591,1.495,594,3.417,595,4.264,596,3.862,597,1.705,599,2.934,601,1.705,603,1.495,604,1.495,605,1.585,606,2.727,607,1.887,608,1.887,609,1.887,610,1.887,611,0.921,612,0.954,613,5.078,614,3.248,615,3.248,616,2.182,617,4.275,618,1.887,619,1.887,620,1.887,621,1.887,622,1.887,623,1.887,624,1.887,625,1.887,626,2.347,627,4.275,628,1.887,629,2.347,630,1.364,631,1.887,632,2.573,633,3.248,634,1.887,635,1.887,636,1.495,637,1.705,638,1.705,639,1.887,640,3.248,641,1.887]],["t/89",[13,1.107,25,2.006,31,0.901,32,1.871,42,1.71,43,2.755,47,1.129,52,2.803,55,3.824,87,2.614,101,1.686,102,1.878,104,3.824,105,2.623,106,4.164,116,2.475,136,2.803,150,2.824,184,1.871,190,1.871,195,1.933,199,1.64,200,2.075,205,3.586,208,2.547,310,4.515,311,3.193,313,1.663,359,3.982,382,2.623,383,2.478,434,3.641,451,3.193,462,2.25,463,4.674,547,1.71,581,3.641,583,3.641,584,2.623,585,3.384,595,3.384,598,3.641,611,1.966,642,4.03,643,4.03,644,3.641,645,3.641,646,4.03,647,4.03,648,3.384,649,2.478,650,7.142,651,4.03,652,4.03,653,4.03,654,4.03,655,4.03,656,4.03,657,4.03,658,4.03,659,4.03,660,4.03,661,4.03,662,4.03,663,3.193,664,4.03]],["t/91",[11,2.767,13,1.715,21,3.156,70,3.74,89,2.508,93,3.965,100,0.81,134,2.654,156,4.709,164,4.195,199,2.541,305,3.156,335,2.853,375,2.295,397,2.853,527,3.156,569,4.343,612,3.156,665,3.946,666,4.064,667,4.512,668,6.243,669,4.064,670,4.946,671,4.946,672,4.064,673,4.064,674,6.243,675,4.709,676,4.512,677,5.243,678,5.64,679,4.946,680,4.709]],["t/93",[21,3.085,31,0.472,33,4.459,43,2.368,46,1.661,84,1.89,93,2.978,134,1.147,195,1.984,453,3.973,479,5.745,547,1.755,570,2.091,665,2.614,671,3.277,677,3.473,678,3.737,681,3.737,682,3.473,683,4.136,684,2.31,685,4.136,686,5.94,687,6.103,688,5.513,689,3.277,690,4.136,691,4.136,692,4.136,693,4.136,694,4.136,695,7.714,696,4.136,697,2.989,698,4.136,699,4.136,700,5.745,701,6.09,702,7.252,703,7.252,704,7.252,705,7.252,706,4.136,707,4.136,708,4.136,709,6.103,710,4.136,711,6.103,712,6.103,713,6.103,714,4.136,715,4.136,716,4.136,717,4.136,718,4.136,719,4.136,720,2.614,721,4.136,722,6.103,723,4.136,724,3.277,725,4.136,726,4.136,727,4.136]],["t/95",[31,0.787,70,4.135,132,3.311,134,1.915,138,3.154,155,3.941,169,4.801,317,2.538,397,3.154,569,4.801,574,3.554,665,4.362,666,4.493,686,6.027,728,5.796,729,5.796,730,6.902,731,6.902,732,6.235,733,5.796,734,5.468,735,5.796,736,7.827,737,6.902]],["t/97",[12,4.481,93,3.459,123,2.323,134,1.966,155,5.725,309,4.481,672,4.615,684,5.599,686,6.129,738,5.616,739,3.875,740,7.089,741,7.959,742,3.401,743,5.953]],["t/99",[43,2.242,46,2.488,87,2.705,89,2.488,92,3.189,93,3.022,100,1.049,123,3.243,134,2.745,147,2.936,173,3.189,194,3.385,271,4.014,304,2.556,308,2.333,313,2.556,317,2.277,327,3.251,507,3.808,612,3.131,672,4.032,738,4.907,744,5.201,745,4.243,746,3.189,747,4.162]],["t/101",[3,1.092,31,0.808,63,3.291,87,3.096,89,2.848,92,3.651,100,0.92,116,2.457,123,2.323,134,2.444,147,3.2,264,3.459,293,4.932,382,4.615,383,4.359,505,5.92,665,4.481,666,4.615,672,4.615,684,3.958]],["t/103",[94,3.893,100,1.053,147,2.948,172,3.597,308,3.058,317,2.984,464,4.99,612,4.103,748,6.816]],["t/105",[31,0.78,47,1.291,94,3.282,147,2.485,172,3.032,247,3.459,254,4.945,317,2.515,344,4.614,364,3.461,390,3.999,412,3.663,463,3.397,495,3.079,566,3.663,594,3.739,747,4.598,749,5.746,750,5.42,751,6.842,752,5.161,753,6.842,754,6.842,755,4.76,756,4.324]],["t/107",[11,3.717,55,4.49,58,3.093,79,5.505,94,3.145,128,4.405,131,5.327,172,2.906,317,2.41,318,2.822,351,4.268,375,2.41,395,3.376,495,2.95,757,6.214,758,6.556,759,6.556,760,4.405,761,6.556,762,6.556,763,6.556,764,5.923,765,5.505,766,6.556,767,5.505]],["t/109",[10,2.104,26,1.714,31,0.67,63,1.824,65,2.186,94,1.885,100,1.013,102,1.843,119,2.104,122,1.599,123,1.287,133,1.731,134,1.09,137,2.558,145,1.951,146,1.16,172,1.741,200,2.023,279,3.215,313,1.621,317,1.444,395,2.023,409,3.767,421,4.446,452,3.083,463,1.951,495,1.768,506,3.876,512,3.025,561,3.433,594,2.147,755,2.733,756,2.483,768,7.035,769,5.574,770,4.431,771,5.874,772,2.296,773,3.549,774,2.839,775,3.299,776,3.299,777,3.113,778,3.929,779,3.549,780,2.839,781,3.549,782,5.874,783,3.928,784,3.299,785,3.549,786,3.299,787,3.929,788,3.929,789,3.929,790,5.307,791,5.874,792,5.307,793,3.299,794,3.519,795,3.299,796,4.933,797,2.964,798,4.112,799,2.109,800,2.839,801,3.929,802,4.933]],["t/111",[26,1.807,94,2.971,121,4.576,172,2.745,279,2.83,317,2.277,329,4.672,387,3.62,494,4.97,495,4.453,512,4.163,594,3.385,755,4.309,756,3.914,803,8.084,804,6.788,805,6.193,806,6.788,807,6.193,808,3.878,809,5.201,810,5.201,811,3.458,812,2.628,813,4.032,814,5.595]],["t/113",[3,0.407,6,1.777,16,0.942,24,1.048,26,2.02,31,0.491,35,1.584,43,0.733,47,0.499,94,1.268,104,1.416,119,1.309,123,1.412,129,1.362,133,1.27,172,1.172,200,2.219,214,2.262,215,2.998,230,1.777,236,1.337,246,1.546,247,1.337,249,1.995,250,2.095,276,1.546,279,2.874,301,2.221,309,2.723,317,2.546,322,1.995,362,3.114,363,2.162,364,3.279,387,1.546,421,2.723,463,3.687,495,1.19,512,1.362,547,1.828,590,1.995,663,4.321,667,3.941,673,1.721,755,4.375,756,3.975,769,3.414,770,1.995,777,3.414,794,4.149,799,3.594,802,2.221,815,4.818,816,1.476,817,4.017,818,4.309,819,4.744,820,3.893,821,2.805,822,3.619,823,2.389,824,4.309,825,2.644,826,2.998,827,2.389,828,4.309,829,2.805,830,4.309,831,1.671,832,2.998,833,2.095,834,2.389,835,2.644,836,2.221,837,3.619,838,2.998,839,2.644,840,2.644,841,1.995,842,2.644,843,1.362,844,2.389,845,1.362,846,2.644,847,2.095,848,1.51,849,2.389,850,4.309,851,2.644,852,1.995,853,1.995,854,2.644,855,4.114,856,2.644]],["t/115",[3,0.762,11,2.191,16,1.081,26,2.024,47,1.728,72,2.89,81,3.076,94,2.372,102,3.059,119,1.186,133,1.457,172,2.191,205,4.157,209,2.04,317,1.818,318,2.128,347,4.517,387,2.89,495,2.225,786,4.152,792,4.467,794,4.157,800,3.573,802,4.152,812,2.098,841,6.048,857,4.944,858,4.467,859,8.272,860,5.63,861,4.467,862,4.944,863,4.944,864,4.944,865,3.322,866,4.467,867,6.558,868,6.939,869,3.729,870,4.467,871,6.269]],["t/117",[16,1.89,26,1.424,40,2.468,43,1.908,47,0.921,94,2.342,99,4.03,100,0.634,119,2.074,135,4.021,172,2.164,209,2.838,317,1.795,332,3.683,363,2.727,364,1.961,484,3.928,495,2.197,496,3.397,512,2.514,783,3.841,794,2.925,796,5.776,798,4.021,815,3.397,855,3.683,872,4.411,873,2.342,874,7.26,875,4.411,876,3.529,877,3.683,878,3.683,879,4.411,880,3.868,881,4.411,882,4.883,883,7.194,884,5.189,885,3.683,886,2.726]],["t/119",[16,1.638,26,2.187,47,1.414,94,3.596,119,1.799,172,3.322,317,2.756,495,3.373,512,3.86,794,4.49,815,5.214,873,3.596,887,7.101,888,6.772,889,3.789]],["t/121",[3,0.662,19,2.254,26,2.162,31,0.49,43,1.74,47,0.81,65,2.758,94,2.06,100,0.557,172,1.903,200,3.231,279,2.867,285,5.964,286,4.765,308,1.618,317,1.579,327,2.254,342,1.932,347,2.796,395,3.231,409,3.359,412,2.299,479,7.174,485,3.88,486,3.239,495,1.932,506,3.68,527,3.171,606,6.845,756,2.714,794,4.44,799,2.252,800,4.534,808,3.91,815,5.156,873,2.06,890,3.606,891,5.268,892,3.104,893,5.667,894,3.402,895,3.104,896,2.212,897,4.295,898,2.796,899,4.295,900,2.171]],["t/123",[26,2.408,94,3.068,131,4.511,172,2.835,279,3.772,317,2.351,387,3.738,409,4.419,479,5.067,486,4.824,495,2.878,506,4.098,794,3.831,808,4.91,815,5.742,901,7.342,902,6.395]],["t/125",[26,1.881,38,3.863,55,3.453,94,3.093,100,1.077,118,3.769,121,4.921,122,3.735,172,2.858,296,3.682,317,2.371,347,5.401,495,4.128,755,4.486,756,4.075,794,3.863,808,3.98,809,5.415,810,5.415,811,3.601,812,2.736,903,5.415]],["t/127",[26,1.303,31,0.509,38,2.675,94,2.142,100,1.228,112,3.149,118,2.61,122,3.38,133,1.316,146,0.882,155,3.685,172,1.979,243,2.494,279,2.041,307,2.494,317,1.642,326,2.237,409,2.391,418,2.257,455,3.107,495,2.009,506,3.205,755,3.107,756,2.822,767,3.75,779,5.831,794,3.866,798,3.772,811,4.918,886,3.604,904,5.638,905,5.42,906,3.75,907,3.978,908,4.034,909,3.369,910,5.272,911,2.675,912,3.968,913,3.866,914,4.49,915,5.42,916,3.75,917,4.868,918,4.466,919,3.75,920,3.001,921,3.369,922,4.034]],["t/129",[3,1.027,16,1.853,26,2.473,94,3.198,95,2.714,100,0.865,119,2.483,172,2.955,214,5.315,317,2.451,495,3,512,3.433,548,7.119,794,3.994,815,4.638,873,4.066,923,4.638]],["t/131",[11,3.326,13,1.521,26,2.189,31,0.631,87,2.418,89,2.224,94,2.656,100,0.974,129,5.397,138,2.531,147,3.092,172,2.454,184,4.564,308,2.086,313,2.285,317,2.036,409,2.965,463,3.726,487,3.852,495,2.492,506,3.726,794,4.495,815,5.22,819,6.882,924,5.003,925,5.538,926,5.003,927,5.538]],["t/133",[3,1.102,13,1.965,31,0.816,89,2.874,100,1.15,118,4.181,119,2.126,122,2.912,133,2.108,134,2.458,146,1.413,147,3.218,238,3.432,277,3.49,305,3.616,335,3.269,375,2.63,928,6.008]],["t/135",[13,1.565,31,0.872,43,2.56,100,0.993,116,1.975,119,2.072,120,4.583,133,2.255,134,2.122,147,2.07,243,3.182,277,2.78,308,2.882,418,2.881,462,3.182,506,2.829,511,2.646,512,3.94,561,3.331,745,4.016,756,3.602,811,3.182,849,6.911,895,4.118,913,3.414,929,4.515,930,6.911,931,7.65,932,3.602,933,4.786,934,5.148,935,5.148,936,5.699,937,5.699]],["t/137",[13,1.018,26,1.981,31,0.641,43,2.472,50,1.363,55,1.984,76,2.49,100,1.058,106,2.578,116,1.285,121,4.988,122,4.02,133,1.092,134,1.884,147,1.346,277,1.808,296,3.878,307,2.069,308,2.856,317,1.363,347,3.659,375,1.363,463,2.791,494,2.279,495,4.312,503,3.112,511,1.721,594,2.026,745,2.951,756,2.342,808,4.114,809,3.112,810,3.112,811,3.792,812,2.385,865,2.49,903,3.112,938,3.706,939,2.936,940,3.706,941,3.706,942,3.706,943,3.348,944,2.279,945,4.721,946,3.706,947,3.348,948,3.706,949,2.578,950,3.706,951,3.706,952,3.706,953,3.348,954,3.706,955,3.706]],["t/139",[13,1.213,26,2.409,31,0.859,43,2.432,50,1.623,100,1.187,112,4.879,116,1.53,118,2.581,119,1.059,120,2.645,121,3.071,122,2.606,134,2.089,147,1.604,236,2.232,243,2.466,277,2.154,308,2.412,317,1.623,375,1.623,418,2.232,503,3.708,511,2.05,516,4.759,626,3.191,745,3.36,756,2.791,865,2.967,904,5.901,907,4.602,910,5.239,914,5.239,945,5.376,956,6.401,957,4.415,958,3.989]],["t/141",[13,1.068,16,0.85,20,2.003,26,2.427,31,0.797,38,2.33,43,2.308,45,1.931,50,1.43,65,1.448,100,1.259,112,2.845,116,1.348,119,2.464,134,2.308,146,1.152,147,2.118,165,2.003,176,2.811,183,3.267,184,1.806,214,5.347,236,1.966,308,2.635,317,1.43,375,1.43,452,2.042,462,2.172,506,1.931,511,1.806,512,3.003,547,2.474,561,2.274,745,3.671,799,1.396,808,2.797,811,2.172,865,2.614,895,2.811,913,2.33,923,4.056,932,2.459,933,3.267,959,5.83,960,3.89,961,3.89,962,3.89,963,3.89,964,3.89,965,3.89,966,2.614,967,2.934]],["t/143",[5,2.879,13,2.099,31,0.871,32,3.548,69,4.267,89,3.069,111,5.764,112,3.728,113,4.467,114,3.794,115,4.698,116,2.649,117,5.316,305,3.863,335,3.492]],["t/145",[5,2.333,31,0.922,32,2.875,33,3.808,36,4.309,37,5.623,45,3.075,46,2.488,50,2.277,53,2.875,69,5.025,70,3.71,111,6.098,113,3.62,114,4.014,117,5.623,138,2.83,156,4.672,157,3.131,313,2.556,744,6.788,968,6.788,969,8.084,970,6.193,971,3.808,972,6.193,973,4.476,974,6.193,975,4.672]],["t/147",[3,1.257,13,1.402,28,2.37,30,2.136,32,2.37,46,2.051,47,0.963,50,1.877,53,2.37,69,2.851,98,2.68,111,3.851,116,2.827,117,6.133,141,3.851,146,1.008,159,5.353,160,5.31,169,4.937,217,4.045,276,2.984,305,2.581,335,2.333,505,3.431,574,2.629,578,3.323,667,3.69,743,4.287,873,2.449,976,5.105,977,4.612,978,5.105,979,5.105,980,5.105,981,5.105,982,4.287,983,3.431,984,5.105,985,4.287,986,3.323,987,4.612,988,4.287,989,4.612,990,5.105,991,3.227,992,5.105,993,7.096,994,4.045,995,5.105,996,3.69,997,4.045,998,5.105,999,4.287,1000,5.105]],["t/149",[3,1.311,13,2.061,31,0.971,45,2.749,89,2.224,100,1.305,112,3.661,118,3.237,119,2.189,120,4.495,121,3.599,122,3.465,123,1.815,133,2.211,138,2.531,139,4.177,140,3.317,141,4.177,142,2.852,143,4.002,144,4.387,145,2.749,146,1.681,147,2.012,148,3.405,238,2.656,305,2.799,318,2.383,319,2.749,335,2.531,375,2.036,396,4.387]],["t/151",[3,0.985,5,3.11,13,1.756,31,0.941,32,2.969,42,2.714,43,2.773,100,1.071,112,4.459,119,1.535,121,3.068,122,2.604,293,4.449,313,3.406,317,2.351,359,2.878,360,3.12,385,5.742,386,4.824,387,3.738,838,4.449,907,3.357,944,3.932,1001,5.778]],["t/153",[5,1.609,18,3.087,21,2.159,24,2.477,26,1.246,31,0.987,42,1.812,43,2.822,100,1.212,112,3.967,116,1.48,119,2.297,120,5.183,123,1.4,129,2.2,133,1.259,134,1.185,138,1.952,279,1.952,296,3.568,318,1.838,359,3.325,360,3.049,385,5.656,390,2.497,462,4.126,470,3.384,471,2.87,506,2.121,511,1.983,512,3.218,520,3.384,561,2.497,673,2.78,808,2.049,811,2.385,895,3.087,898,2.78,913,2.559,932,2.7,933,3.587,934,3.859,935,3.859,1002,6.675,1003,3.859,1004,3.859,1005,3.859,1006,3.384]],["t/155",[3,0.851,5,1.364,10,1.939,13,0.994,24,1.435,31,0.92,32,1.681,33,3.395,36,2.519,37,2.519,42,2.841,43,2.991,55,1.939,99,1.399,100,1.212,102,1.136,112,3.267,116,1.255,121,4.077,122,3.801,199,1.474,296,3.823,347,2.357,359,3.37,360,2.695,385,4.657,423,4.838,452,2.899,495,1.629,511,1.681,739,1.979,838,2.519,887,2.617,898,3.595,903,3.04,907,1.901,947,3.271,1001,3.271,1007,7.285,1008,6.766,1009,5.622,1010,3.621,1011,6.048,1012,4.989,1013,3.621,1014,3.271,1015,3.621]],["t/157",[5,1.773,31,0.764,42,3.312,43,3.025,99,1.818,100,1.104,102,1.477,112,4.15,119,2.157,120,4.676,121,3.215,122,3.177,199,1.916,296,2.688,359,3.512,360,2.297,385,4.662,423,5.641,452,2.471,887,3.402,898,4.363,928,3.953,1002,4.252,1003,4.252,1004,4.252,1007,4.252,1008,6.055,1009,3.953,1011,6.055,1012,4.252,1014,4.252,1016,4.707]],["t/159",[5,3.126,24,2.556,31,0.735,32,2.993,42,2.736,43,2.78,77,7.496,100,1.191,101,3.471,119,1.991,127,3.385,133,2.445,359,2.901,360,4.048,385,5.772,386,4.864,387,3.769,391,5.415,394,5.415,1017,6.448,1018,6.448]],["t/161",[1,3.481,3,0.939,11,2.702,20,4.12,31,0.695,50,2.242,55,3.265,100,0.791,145,3.027,147,3.444,172,2.702,308,3.015,313,3.302,317,2.242,344,4.284,375,2.242,455,5.566,473,3.481,507,4.919,522,5.12,566,3.265,742,2.925,747,5.377,750,4.831,752,4.599,831,3.854,885,4.599,1019,3.854,1020,6.339,1021,4.407]],["t/163",[3,0.977,13,2.255,31,0.723,55,4.396,100,1.066,123,2.691,147,2.982,271,4.077,308,3.43,313,2.618,337,4.785,395,3.267,495,3.694,507,5.048,535,5.731,561,4.799,672,4.13,745,3.33,747,5.517,1020,5.026,1022,4.785,1023,8.211,1024,4.585]],["t/165",[3,0.872,20,3.92,31,0.981,55,4.076,81,2.507,100,1.117,123,2.495,147,3.343,271,3.78,308,3.242,313,2.335,318,2.435,375,2.08,455,5.986,495,2.546,506,2.809,507,4.681,561,3.307,616,3.802,672,3.683,738,4.482,745,2.97,747,3.802,752,4.267,878,3.029,1019,3.576,1020,4.482,1024,4.089,1025,5.657,1026,5.657,1027,5.657,1028,7.613,1029,5.742]],["t/167",[3,0.712,20,4.344,31,0.881,38,2.77,43,2.576,50,1.7,55,2.476,100,0.6,123,1.515,128,3.107,131,3.617,147,3.67,271,3.286,308,2.493,313,1.908,344,5.331,364,1.857,375,1.7,395,3.408,455,5.869,506,2.296,507,2.843,561,2.703,745,3.474,747,3.107,749,6.49,750,5.243,752,3.488,757,3.107,794,2.77,819,3.488,852,3.488,853,3.488,901,3.216,1019,2.922,1020,3.663,1024,3.342,1029,3.488,1030,4.624,1031,3.663,1032,4.624,1033,6.617,1034,3.107]],["t/169",[16,1.551,26,2.07,31,0.582,47,1.539,50,1.877,65,1.9,87,2.229,89,2.051,100,1.144,102,2.227,103,2.984,119,1.225,123,1.673,133,1.505,134,1.416,138,2.333,147,3.202,150,2.409,157,2.581,172,2.263,173,3.654,292,3.69,308,3.321,317,3.406,362,2.915,364,2.051,395,2.629,409,2.733,452,2.68,463,2.535,506,2.535,547,2.166,561,2.984,612,2.581,738,4.045,745,2.68,746,2.629,781,4.612,799,2.547,812,2.166,852,3.851,853,3.851,1035,3.851,1036,4.045,1037,3.69,1038,3.551]],["t/171",[13,2.119,16,1.687,31,0.88,46,3.1,47,1.456,89,3.1,97,3.059,99,2.981,100,1.002,101,3.229,102,2.422,103,4.511,305,3.901,335,3.526]],["t/173",[3,1.036,5,2.534,24,2.666,31,0.767,42,2.853,43,2.816,46,3.423,81,2.98,97,3.379,100,1.215,146,1.328,225,3.339,359,3.026,360,4.158,385,6.509,386,5.072,387,3.931,388,6.075]],["t/175",[5,2.695,16,1.563,24,2.836,31,0.816,42,3.035,43,2.67,100,0.929,102,2.245,119,2.126,133,2.611,360,3.49,391,7.44,392,7.44,393,5.668,394,6.008,1039,7.154]],["t/177",[5,2.491,42,2.805,43,2.864,46,3.387,47,1.752,99,2.554,101,2.766,102,2.075,359,3.794,363,3.342,364,3.387,400,5.865,401,5.561,403,4.987,404,4.599,405,5.972,406,4.987]],["t/179",[5,2.72,13,1.983,24,2.862,47,1.362,58,3.406,100,1.157,101,3.021,102,2.796,103,4.22,199,2.939,742,3.463,812,3.063,896,3.718,1040,6.522,1041,6.522,1042,5.72,1043,6.063,1044,4.22,1045,7.22]],["t/181",[13,1.349,24,3.621,25,1.646,43,2.7,46,1.974,47,1.724,58,3.26,99,1.898,100,0.638,101,2.891,102,2.168,105,3.198,119,1.179,236,2.484,296,2.805,308,3.011,313,2.851,359,2.211,360,2.397,363,1.948,364,1.974,366,6.167,375,1.806,390,2.872,395,2.53,401,4.139,440,3.551,442,2.943,443,3.706,589,3.551,739,2.685,812,3.678,975,3.706,1019,3.105,1040,4.439,1044,2.872,1046,4.913,1047,4.913,1048,4.913,1049,3.418,1050,4.439,1051,4.913,1052,4.126]],["t/183",[13,1.248,24,2.591,25,1.522,43,2.881,46,1.825,47,1.795,58,3.083,99,1.755,100,0.59,101,2.734,102,2.051,105,2.958,150,2.144,236,2.297,296,2.594,304,1.875,308,2.883,313,1.875,359,3.766,360,3.734,363,1.801,364,1.825,368,3.427,375,1.67,390,2.656,395,2.34,401,3.915,424,2.433,442,2.722,443,3.427,577,3.427,724,5.177,739,2.483,812,3.247,975,3.427,1041,4.104,1044,2.656,1049,3.161,1050,4.104,1053,4.543,1054,3.284,1055,5.488,1056,3.815,1057,4.543,1058,4.104,1059,4.104,1060,4.543,1061,4.543,1062,4.104,1063,4.543,1064,4.104]],["t/186",[5,2.029,42,2.285,43,2.943,47,1.389,101,3.51,102,1.69,119,1.292,301,4.523,308,3.398,317,1.98,359,3.775,360,2.628,366,3.506,395,2.773,589,3.892,739,4.929,812,2.285,1044,4.904,1052,6.183,1055,4.523,1056,4.523,1064,6.652,1065,9.018,1066,3.892,1067,3.892,1068,6.652,1069,5.386,1070,5.386]],["t/188",[3,0.615,5,1.503,24,1.581,42,1.692,43,2.945,46,2.386,47,1.723,81,2.633,101,3.821,113,3.472,116,1.383,219,2.227,308,2.238,354,3.16,358,2.775,359,3.539,360,3.464,366,5.12,375,1.466,387,4.149,395,2.054,418,2.016,440,2.883,442,4.253,464,2.452,511,1.852,589,4.294,739,3.88,812,2.521,822,4.989,949,2.775,1044,5.339,1066,2.883,1071,8.251,1072,3.009,1073,3.989,1074,2.521,1075,3.989,1076,3.989,1077,3.989,1078,3.989,1079,3.989,1080,3.16,1081,3.009,1082,2.883]],["t/190",[16,0.933,31,0.713,43,2.79,47,1.761,81,1.893,87,1.865,97,1.693,99,1.65,100,0.554,101,3.781,102,2.551,103,2.497,116,2.166,119,1.025,157,3.159,159,3.222,190,1.983,209,2.578,210,3.222,253,3.384,298,3.384,308,3.26,359,3.658,360,2.084,366,2.78,375,1.57,382,2.78,383,2.626,395,2.2,451,3.384,511,2.901,544,3.222,589,3.087,812,2.651,1055,3.587,1056,3.587,1068,3.859,1071,3.859,1083,7.389,1084,5.247,1085,6.248,1086,6.248,1087,5.247,1088,6.248,1089,4.271,1090,3.587,1091,4.271,1092,2.497,1093,3.859,1094,3.384,1095,4.271,1096,4.271]],["t/192",[2,2.042,3,0.7,4,1.965,20,1.455,26,0.824,31,0.746,41,1.651,45,1.403,75,2.042,89,3.075,90,2.238,92,1.455,93,1.378,94,1.355,100,1.33,116,1.576,119,1.837,120,1.692,121,1.355,122,2.917,123,2.97,131,3.573,132,3.861,134,2.603,147,3.354,158,1.839,172,1.252,185,3.622,186,2.238,194,2.485,199,1.15,214,1.483,225,2.257,236,2.298,238,1.355,264,1.378,271,3.246,279,2.988,285,2.596,286,2.657,287,2.238,292,2.042,295,1.839,308,2.7,313,1.876,316,1.839,317,1.039,318,1.216,319,1.403,344,1.513,409,1.513,455,1.965,471,1.898,507,2.795,522,2.372,565,1.786,612,2.884,649,1.737,665,1.786,669,1.839,672,1.839,675,2.131,676,3.286,747,1.898,750,2.238,799,1.014,813,2.959,904,1.613,907,1.483,944,1.737,1097,2.238,1098,2.552,1099,2.238,1100,2.131,1101,2.238,1102,3.286,1103,2.825,1104,2.042,1105,3.055,1106,2.372]],["t/194",[0,5.46,1,3.712,2,4.699,3,1.002,4,4.523,5,3.143,6,4.369,7,5.996,8,6.292,9,5.46,10,3.481,11,2.882,12,4.109,13,2.291,23,3.481,25,2.178,31,0.741,32,3.018,89,2.612,109,5.272,114,3.228,282,5.151,283,5.873,284,5.46,305,3.287,335,2.971,1107,6.502]],["t/196",[5,3.195,7,5.922,10,2.944,23,2.944,25,1.842,31,0.967,32,3.467,33,4.592,34,3.974,35,3.294,36,6.328,37,6.328,46,3.406,82,5.917,89,2.209,109,4.72,113,3.214,114,4.211,117,5.195,199,2.238,318,2.367,319,2.73,739,3.005,744,6.271,1108,4.618,1109,5.499,1110,4.618,1111,4.968,1112,5.499,1113,5.499,1114,5.499,1115,5.499]],["t/198",[3,0.611,7,2.583,13,1.944,24,2.346,25,1.33,31,0.675,42,3.003,43,2.943,46,3.151,50,1.459,69,3.952,81,2.623,97,3.327,100,1.243,109,3.741,113,2.32,127,3.107,308,1.495,318,2.547,319,1.97,344,3.79,349,2.377,351,4.607,352,2.583,359,2.663,386,2.994,387,2.32,407,2.667,475,5.347,484,2.266,516,2.508,836,3.333,929,3.144,1116,3.969,1117,2.44,1118,7.846,1119,3.969,1120,3.144,1121,3.585,1122,3.969,1123,3.969,1124,3.969,1125,5.918,1126,3.969,1127,6.394,1128,3.585,1129,2.994,1130,5.347,1131,3.585,1132,3.969,1133,2.761]],["t/200",[3,0.317,5,0.774,7,2.966,24,1.385,25,0.689,30,1.462,31,0.52,42,2.555,43,2.966,46,2.158,47,1.581,48,2.43,50,1.284,69,1.951,81,0.911,82,1.628,93,1.003,95,1.855,97,1.385,98,1.079,100,0.453,109,1.299,113,1.201,155,1.174,157,1.039,210,3.437,228,1.857,243,1.148,287,3.61,295,1.338,303,3.293,307,2.544,317,0.756,344,1.87,351,1.338,359,3.449,368,1.55,375,0.756,401,2.729,402,3.437,403,2.635,404,2.43,406,1.55,414,1.857,415,1.857,416,3.156,417,1.857,418,2.303,419,1.857,421,1.299,422,1.857,442,1.231,456,1.726,461,2.093,497,2.635,666,2.966,748,1.726,767,1.726,770,1.55,822,1.726,908,3.156,982,1.726,983,1.381,1029,1.55,1066,1.485,1127,3.156,1128,1.857,1129,1.55,1130,1.857,1134,1.726,1135,1.55,1136,2.525,1137,4.556,1138,1.726,1139,3.493,1140,3.156,1141,1.857,1142,2.055,1143,4.854,1144,2.055,1145,2.055,1146,2.055,1147,1.857,1148,7.665,1149,5.373,1150,2.055,1151,2.055,1152,3.493,1153,2.055,1154,2.055,1155,2.055,1156,2.055,1157,2.055,1158,2.055,1159,3.493,1160,2.055,1161,2.055,1162,2.055,1163,2.055,1164,2.055,1165,4.556,1166,2.055,1167,2.055,1168,1.485,1169,2.055,1170,4.556,1171,6.021,1172,2.055,1173,2.055,1174,2.055,1175,4.556,1176,2.055,1177,2.055,1178,2.055,1179,3.156,1180,2.055,1181,2.055,1182,5.373,1183,6.548,1184,4.556,1185,5.373,1186,3.493,1187,1.857,1188,2.055,1189,2.055,1190,1.857,1191,1.726,1192,3.493,1193,3.493,1194,1.43,1195,2.055]],["t/202",[24,2.772,25,1.303,30,1.627,31,0.665,42,1.65,43,3.044,46,1.563,47,1.57,48,2.706,69,2.172,71,3.122,95,2.373,97,1.542,98,4.89,100,0.757,109,2.459,132,1.866,146,1.152,157,1.966,195,1.866,303,2.811,307,3.256,313,1.605,351,3.795,359,3.931,360,1.898,368,2.934,425,3.082,427,3.514,428,3.514,429,6.523,430,3.514,435,3.267,437,3.514,442,2.33,461,2.33,770,4.398,1129,2.934,1140,3.514,1141,3.514,1143,3.514,1147,5.267,1196,3.89,1197,6.993,1198,3.514,1199,3.89,1200,3.514,1201,3.89,1202,3.89,1203,3.89]],["t/204",[24,2.933,25,1.817,31,0.618,42,2.301,43,3.012,46,2.178,47,1.786,69,3.028,96,2.933,99,2.858,100,0.704,109,3.427,135,4.324,195,2.601,287,4.296,296,3.096,359,2.44,401,3.249,441,4.554,442,4.432,443,5.58,446,4.554,497,4.09,1036,4.296,1129,4.09,1138,4.554,1204,7.606,1205,6.683,1206,5.423]],["t/206",[3,0.582,5,1.423,7,2.459,16,1.246,18,2.73,23,2.023,24,2.261,25,1.911,31,0.784,32,1.754,42,1.603,43,2.948,47,1.742,69,2.109,87,2.491,89,1.517,91,3.413,92,1.945,93,1.843,96,2.261,99,1.459,100,0.74,101,2.386,102,2.402,109,3.605,116,1.309,119,0.906,135,2.208,138,1.726,144,2.993,148,2.323,157,1.91,190,1.754,195,1.812,210,2.849,237,3.413,292,2.73,304,1.559,308,1.423,359,3.092,375,1.389,383,2.323,401,3.417,441,3.172,442,3.417,443,4.302,446,3.172,451,2.993,497,2.849,612,1.91,812,2.42,968,3.172,1129,2.849,1135,5.183,1138,3.172,1204,5.152,1205,5.152,1207,6.871,1208,3.413,1209,5.703,1210,3.778,1211,3.778,1212,3.778,1213,3.778,1214,3.778,1215,3.778]],["t/208",[3,0.762,11,2.191,13,1.906,16,1.081,18,3.573,19,2.595,26,1.442,27,2.823,30,2.069,31,0.791,87,2.159,92,2.546,100,1.041,102,1.552,112,2.412,119,1.186,122,2.013,133,1.457,146,1.371,174,3.439,177,2.89,178,3.322,182,3.508,199,2.013,223,3.439,238,2.372,254,3.573,262,5.828,295,4.517,304,2.04,318,2.128,397,2.259,516,3.125,584,4.517,904,4.578,905,4.152,907,2.595,910,3.439,973,5.015,997,3.917,1072,3.729,1117,3.04,1216,4.827,1217,3.439,1218,4.467,1219,3.573,1220,4.944,1221,4.152,1222,4.944,1223,3.917,1224,3.573,1225,3.917,1226,4.467,1227,3.439,1228,4.944,1229,4.944,1230,3.729,1231,4.944]],["t/210",[16,1.662,31,0.867,100,0.583,101,1.879,121,3.109,122,1.828,133,2.601,335,4.034,401,3.882,424,2.405,432,7.458,442,3.882,452,2.358,561,4.444,626,4.684,632,5.134,808,2.154,829,2.924,833,6.024,904,3.7,905,6.991,907,5.094,971,2.761,1219,3.246,1232,4.057,1233,4.057,1234,4.057,1235,6.481,1236,6.385,1237,6.869,1238,6.481,1239,6.481,1240,6.481,1241,5.855,1242,6.481,1243,6.481]],["t/212",[13,1.965,34,5.17,89,3.559,93,3.49,100,0.929,123,2.903,134,2.458,147,2.599,194,3.91,271,4.399,305,3.616,327,3.755,335,3.269,670,5.668,746,3.684,1006,5.668,1244,5.396,1245,6.463]],["t/214",[13,1.896,26,2.013,31,0.787,33,4.244,41,4.034,45,3.427,53,3.204,75,4.988,100,1.125,123,2.839,134,1.915,271,4.302,280,3.941,315,5.468,375,2.538,471,4.638,675,5.206,676,6.262,799,2.477,1099,5.468,1100,5.206,1246,5.796]],["t/216",[3,0.939,43,2.219,93,3.904,134,2.219,158,3.969,169,5.566,271,4.889,276,3.564,337,7.427,397,2.786,462,3.405,569,4.242,574,3.14,594,3.333,612,3.082,684,3.405,686,4.242,733,6.719,734,4.831,735,5.12,741,5.508,1024,5.783,1247,6.097,1248,5.508,1249,3.564,1250,6.097,1251,6.097]],["t/218",[31,0.86,43,2.539,45,1.823,63,1.704,81,1.627,87,1.603,89,1.475,92,1.891,100,1.053,116,1.273,121,2.677,122,2.272,123,2.659,134,2.093,138,1.678,147,2.74,153,2.769,157,1.856,158,2.39,161,2.32,162,2.653,168,1.856,173,1.891,191,3.317,199,1.495,206,2.769,243,2.05,264,1.791,271,4.029,274,2.554,275,2.909,276,2.146,286,2.146,293,3.883,296,2.096,308,2.842,327,2.93,337,5.093,375,1.35,382,2.39,383,2.257,409,1.966,462,2.05,506,3.353,527,1.856,594,3.051,724,5.35,736,3.317,743,3.083,755,2.554,784,3.083,808,1.761,811,3.117,895,2.653,904,2.096,945,4.687,953,3.317,971,2.257,1024,2.653,1101,2.909,1105,2.467,1248,3.317,1252,5.581,1253,3.317,1254,3.317,1255,3.671,1256,3.671,1257,3.671,1258,3.671,1259,3.671,1260,3.671,1261,2.909,1262,3.671,1263,3.671,1264,3.671,1265,3.671,1266,3.671,1267,3.317,1268,3.671,1269,3.317,1270,3.083]],["t/220",[13,1.193,26,1.267,38,2.601,56,3.646,65,2.353,84,2.89,96,1.721,100,1.064,101,1.817,112,3.086,121,3.034,122,2.574,126,2.425,133,1.28,142,2.236,146,0.858,155,2.479,177,2.538,182,2.195,195,2.083,199,1.768,205,2.601,235,3.923,252,2.744,270,3.646,289,2.601,293,3.021,296,4.679,313,1.792,326,1.505,335,1.984,349,2.601,413,2.918,461,2.601,482,3.275,494,5.589,495,3.919,506,2.156,512,2.236,593,2.373,666,4.117,697,3.138,811,2.425,812,1.842,838,4.399,889,2.195,907,3.915,920,2.918,983,2.918,991,2.744,1136,3.138,1223,3.44,1225,3.44,1261,3.44,1271,3.923,1272,4.342,1273,4.342,1274,4.342,1275,3.138,1276,3.923,1277,4.25,1278,3.021,1279,4.342,1280,4.342,1281,4.342,1282,3.923,1283,3.44,1284,4.342]],["t/222",[92,2.646,100,0.925,101,3.425,102,2.569,119,1.233,121,3.926,133,1.514,172,3.159,201,3.74,279,2.348,327,2.697,335,2.348,342,2.312,401,3.078,442,5.296,494,5.033,506,2.551,729,5.986,739,2.809,811,2.869,812,3.473,838,3.575,907,4.297,922,7.395,982,6.874,1009,6.874,1029,3.876,1217,4.959,1219,3.714,1261,6.485,1285,5.139,1286,7.129,1287,5.139,1288,5.139,1289,5.139]],["t/224",[16,1.433,21,3.314,47,1.745,58,3.093,60,4.144,87,2.863,92,3.376,99,3.24,101,2.743,102,2.057,103,3.832,165,3.376,304,2.705,318,2.822,363,2.599,364,3.369,397,3.832,421,4.144,496,4.561,757,4.405,799,2.353,971,4.031,1036,5.194,1290,5.923,1291,6.556,1292,5.505,1293,6.556]],["t/226",[16,1.411,25,2.539,27,2.55,30,1.868,31,0.864,45,3.763,47,1.43,49,5.113,50,1.642,53,2.073,55,4.445,65,1.662,70,2.675,81,1.979,95,1.818,96,1.77,99,1.725,108,5.405,116,1.548,138,2.041,171,3.75,173,2.3,182,2.257,200,2.3,306,3.227,307,4.232,349,2.675,363,3.491,364,3.687,397,2.041,400,4.49,413,3.001,418,2.257,435,3.75,464,2.746,495,3.736,511,2.073,542,3.227,553,3.75,572,3.369,616,3.001,701,5.42,983,3.001,1092,2.61,1253,4.034,1294,4.466,1295,4.466,1296,3.538,1297,4.034,1298,4.034,1299,4.466,1300,4.034,1301,4.466,1302,4.466,1303,4.466,1304,3.538]],["t/228",[179,3.388,309,4.975,363,3.121,364,3.162,400,5.476,464,4.84,511,3.654,537,7.111,697,5.689,1305,7.111,1306,6.236,1307,7.111]],["t/230",[3,0.767,13,1.367,16,1.905,21,2.515,30,2.082,31,0.795,46,1.999,65,1.852,76,3.344,97,1.972,98,2.612,99,3.108,102,2.187,116,1.725,119,1.194,135,2.908,165,2.562,179,2.141,183,4.178,260,2.664,363,3.638,364,3.687,375,1.829,463,3.461,570,2.515,594,3.81,611,3.401,673,3.239,720,3.145,739,2.719,772,2.908,799,1.786,811,2.778,812,2.111,816,2.778,831,4.405,876,3.596,915,4.178,1200,4.495,1217,3.461,1269,4.495,1308,3.753,1309,5.085,1310,3.145,1311,4.178,1312,3.059,1313,4.495,1314,3.239,1315,3.942]],["t/232",[16,1.061,24,2.715,25,2.294,30,2.865,31,0.905,43,2.863,45,2.409,47,1.716,49,3.844,55,2.598,65,1.806,71,2.598,116,1.682,127,2.547,146,0.958,165,2.499,179,2.088,200,2.499,209,2.002,243,2.71,260,2.598,277,2.368,303,3.507,307,2.71,308,1.828,317,1.784,363,2.715,364,2.751,397,2.217,413,4.602,418,2.453,521,3.844,582,3.159,701,4.075,920,3.261,966,3.261,1120,3.844,1300,6.187,1309,3.067,1312,2.983,1316,4.384,1317,4.384,1318,4.852,1319,3.66,1320,4.384,1321,4.852,1322,6.849,1323,6.849,1324,4.852]],["t/234",[10,2.299,16,0.939,21,3.171,25,2.102,27,2.452,30,3.41,31,0.93,43,2.056,46,1.725,47,1.398,69,2.398,76,4.216,96,1.702,99,1.659,102,1.348,116,1.489,126,2.398,172,1.903,174,2.988,179,1.848,195,2.06,209,1.772,219,2.398,253,4.97,277,2.095,304,1.772,363,3.231,364,3.637,375,1.579,384,3.402,424,2.299,463,2.132,494,2.64,521,6.458,549,3.606,570,2.171,582,4.084,594,2.347,669,2.796,739,4.455,769,4.97,772,2.51,780,4.534,783,2.398,831,2.714,915,3.606,1217,5.156,1296,3.402,1309,2.714,1325,4.295,1326,4.295,1327,4.295,1328,4.295,1329,4.295,1330,6.273,1331,7.412,1332,4.295,1333,4.295,1334,4.295]],["t/236",[3,0.977,16,1.386,26,1.851,30,2.654,31,0.723,47,1.197,50,2.332,95,2.582,96,2.515,100,1.25,102,1.991,123,2.079,134,2.278,142,3.267,146,1.253,147,2.304,194,4.488,225,3.15,271,3.15,648,5.327,799,2.277,817,2.582,901,4.413,909,4.785,1006,5.026,1244,4.785,1245,5.731,1335,6.344,1336,6.344,1337,5.327,1338,5.327]],["t/238",[3,1.201,92,4.013,100,1.212,123,2.554,132,3.738,138,3.561,142,4.013,185,3.94,225,3.87,272,7.041,273,6.545,1244,5.879]],["t/240",[26,1.836,45,3.124,75,4.548,100,1.06,123,2.677,129,3.241,134,1.746,194,3.439,234,4.747,247,3.181,271,4.055,375,2.314,471,4.229,564,4.747,663,4.986,675,4.747,676,5.903,686,4.378,728,5.285,799,2.259,817,2.562,821,4.096,829,5.317,837,5.285,921,4.747,1099,4.986,1100,4.747,1339,6.84,1340,4.548,1341,6.293]],["t/242",[134,2.275,194,5.258,574,4.223,686,5.705,733,6.887,734,6.497,735,6.887]],["t/244",[0,5.16,13,1.688,31,0.701,45,3.051,53,2.853,58,2.899,84,2.808,117,4.275,169,4.275,172,3.564,190,2.853,194,3.359,260,3.29,271,3.051,344,4.8,684,3.431,686,4.275,827,5.551,1168,4.441,1342,4.868,1343,9.871,1344,6.145,1345,9.51,1346,5.551,1347,6.145,1348,5.16,1349,6.145,1350,6.145,1351,6.145,1352,6.145]],["t/246",[3,0.904,40,2.967,47,1.654,65,2.184,95,3.176,100,0.762,119,1.408,134,1.628,146,1.541,164,3.944,182,2.967,195,2.815,200,3.022,215,4.083,216,5.302,326,2.704,344,3.143,375,2.158,463,2.914,499,3.821,507,3.608,527,2.967,780,4.242,799,2.801,817,3.176,821,5.705,834,5.302,845,4.018,1022,4.427,1275,5.639,1353,4.083,1354,5.302,1355,5.869,1356,5.869,1357,5.302]],["t/248",[47,1.237,50,2.41,58,3.093,100,1.089,102,2.057,123,2.148,131,4.584,134,2.565,194,4.584,254,4.738,271,4.164,295,4.268,319,3.255,507,4.031,817,2.669,821,4.268,867,4.945,901,4.561,1101,5.194,1249,3.832,1337,5.505,1358,6.556,1359,5.923,1360,4.405,1361,5.194,1362,6.556]],["t/250",[53,3.262,100,0.912,138,3.21,158,4.573,167,4.573,184,3.262,208,4.44,209,2.899,295,4.573,318,3.024,319,3.488,486,5.299,506,3.488,511,3.262,527,3.552,837,5.9,901,4.887,1244,5.299,1270,5.9,1337,7.357,1363,7.026,1364,5.9,1365,5.299]],["t/252",[3,0.602,13,1.074,26,1.14,30,1.636,31,0.667,43,2.588,47,1.104,63,1.815,70,2.342,71,3.133,81,1.733,87,1.707,89,1.57,92,2.013,95,1.591,96,1.55,100,1.136,101,1.636,102,1.227,116,1.355,123,1.281,127,2.052,134,2.313,138,1.786,146,1.156,147,2.548,153,2.949,158,2.545,161,2.471,162,2.825,168,1.976,173,2.013,194,2.137,199,1.591,201,1.786,225,1.941,264,1.907,271,1.941,274,2.72,275,3.097,276,4.1,285,2.232,286,2.285,307,2.183,362,2.232,363,1.55,375,1.437,382,2.545,383,2.404,404,4.879,433,3.532,450,2.545,473,3.342,506,1.941,700,6.169,812,1.659,817,1.591,890,3.283,944,4.788,1049,2.72,1309,2.471,1338,3.283,1366,3.909,1367,3.532,1368,5.852,1369,3.909,1370,4.915,1371,3.909,1372,5.287,1373,3.909,1374,3.097,1375,3.909,1376,3.909,1377,3.097,1378,3.909,1379,3.909,1380,3.909]],["t/254",[3,1.119,11,2.339,13,1.449,16,1.153,26,2.118,45,2.62,75,3.814,84,2.411,89,2.12,93,2.575,100,1.258,123,2.93,133,1.555,134,2.48,142,2.717,146,1.042,147,2.637,164,3.546,171,4.431,176,3.814,195,2.531,225,2.62,230,3.546,279,2.411,305,2.668,335,2.411,375,1.94,453,3.435,471,3.546,547,2.239,570,2.668,593,2.884,612,2.668,669,3.435,675,3.98,676,5.247,799,1.894,971,3.244,1099,4.181,1100,3.98,1105,3.546,1244,3.98,1304,4.181,1381,4.431,1382,5.277,1383,5.277]],["t/256",[13,1.638,18,2.898,31,0.457,40,2.027,45,2.961,93,3.847,94,3.416,100,1.188,123,3.203,134,2.815,138,1.832,145,1.991,147,1.456,155,2.289,156,3.024,194,4.31,271,4.769,277,1.956,280,4.066,308,1.511,327,3.738,337,3.024,339,2.694,369,3.024,466,3.622,569,4.148,649,2.465,665,4.5,666,2.61,669,5.133,671,3.176,672,6.119,1097,3.176,1098,3.622,1384,5.963,1385,5.963,1386,5.387,1387,3.405,1388,4.009,1389,4.009,1390,4.009,1391,4.009]],["t/258",[31,0.729,43,2.289,87,2.793,89,2.569,92,3.294,100,1.186,116,2.217,123,2.995,134,2.289,138,2.923,147,3.508,194,4.511,271,4.098,313,2.639,317,2.351,319,3.175,638,5.778,672,5.373,745,3.357,1360,4.298,1392,4.622,1393,6.395,1394,6.395]],["t/260",[3,0.708,5,1.732,11,2.037,13,1.262,16,1.005,19,2.413,26,2.454,31,0.878,94,2.205,97,1.822,100,1.203,112,3.758,118,3.852,119,2.421,120,3.948,121,3.695,122,3.425,125,3.467,129,2.367,133,1.355,134,2.471,138,2.1,146,0.908,147,3.367,214,4.043,229,2.992,238,3.695,277,2.243,280,2.625,304,1.897,472,3.198,484,2.625,516,2.905,565,2.905,873,2.205,904,4.398,930,4.153,991,2.905,1117,2.826,1395,4.153]],["t/262",[31,0.655,43,2.677,100,1.125,102,2.412,119,1.377,122,2.337,123,1.881,134,1.592,225,2.85,236,2.902,279,2.623,285,3.278,286,3.355,342,2.583,375,2.826,409,3.074,413,5.166,611,2.801,700,4.548,812,2.436,813,3.737,873,2.754,896,2.956,907,4.035,944,3.529,1049,3.993,1340,4.149,1367,5.186,1370,4.821,1372,5.186,1396,7.688,1397,5.74,1398,7.688,1399,5.74,1400,5.74,1401,4.548,1402,5.74]],["t/264",[3,0.841,31,0.623,43,1.515,63,2.535,81,2.42,87,2.385,89,2.193,92,2.812,100,1.3,116,1.893,123,1.789,132,2.619,133,1.609,134,2.062,138,2.495,146,1.079,147,3.069,153,4.119,158,3.555,161,3.451,162,3.946,168,2.76,173,2.812,199,2.223,264,2.664,274,3.799,275,4.326,276,3.192,285,3.118,286,3.192,382,3.555,383,3.357,616,3.669,700,4.326,873,2.619,896,2.812,944,3.357,1049,3.799,1340,3.946,1370,4.586,1403,7.433,1404,6.242,1405,5.461,1406,5.461,1407,5.461]],["t/266",[1,2.362,3,0.94,11,1.833,24,1.64,26,1.207,27,2.362,38,2.478,47,1.151,53,1.92,58,1.951,65,1.539,95,1.684,96,1.64,97,1.64,98,2.171,99,1.598,100,0.941,101,1.73,102,1.298,112,2.018,119,2.491,120,2.478,121,1.984,122,3.259,133,1.799,137,2.692,146,1.205,147,1.502,152,4.835,176,2.989,185,3.085,214,2.171,225,2.054,229,2.692,238,2.927,251,2.478,277,2.018,330,3.737,333,2.692,342,2.746,397,2.789,445,3.277,570,2.091,612,2.091,697,2.989,799,2.191,904,2.362,944,2.543,968,3.473,1100,3.12,1221,5.125,1317,3.737,1392,2.989,1408,3.12,1409,2.779,1410,3.277,1411,2.877,1412,2.989,1413,3.277,1414,7.252,1415,6.103,1416,4.136,1417,3.737,1418,4.136,1419,3.737,1420,6.09,1421,4.136]],["t/268",[3,1.365,24,2.836,146,1.413,160,4.657,176,5.17,223,4.977,225,3.552,484,4.085,494,5.447,1271,6.463,1316,6.463,1422,7.154,1423,5.396,1424,7.154,1425,6.463,1426,5.668,1427,6.463,1428,7.154,1429,4.977,1430,5.17]],["t/270",[3,1.258,16,1.375,19,3.303,20,3.241,21,3.181,30,2.633,31,0.718,60,3.977,65,2.342,84,2.876,100,0.817,115,3.869,119,1.96,122,3.325,127,3.303,146,1.243,214,3.303,238,3.918,264,3.07,304,2.597,342,2.832,397,2.876,400,4.378,564,4.747,808,3.019,904,3.593,944,3.869,1431,4.986,1432,5.685,1433,4.986,1434,6.293,1435,5.285,1436,5.685]],["t/272",[3,1.258,47,1.711,119,1.51,127,3.303,146,1.791,179,2.708,229,4.096,236,3.181,238,3.019,246,3.678,247,3.181,274,4.378,495,2.832,679,4.986,799,2.932,816,3.514,817,2.562,885,4.747,1037,4.548,1216,4.378,1312,3.869,1409,4.229,1437,6.293,1438,4.378,1439,6.859,1440,6.293,1441,4.986,1442,4.747,1443,5.285,1444,5.285]],["t/274",[3,0.954,13,1.701,16,1.354,20,3.189,26,1.807,27,3.536,47,1.698,60,3.914,97,2.455,98,3.251,99,2.393,100,0.804,101,3.382,102,1.944,103,3.62,133,1.825,206,4.672,277,3.022,318,2.666,326,2.802,544,4.672,593,3.385,594,3.385,680,4.672,843,4.634,1092,3.62,1277,4.162,1429,4.309,1445,4.907,1446,4.907,1447,4.907,1448,6.193,1449,6.193]],["t/276",[3,0.588,12,3.631,16,0.834,46,1.532,47,1.822,62,2.002,63,1.771,96,1.512,98,2.002,99,2.67,100,1.339,101,1.596,102,2.169,127,2.002,146,1.135,157,1.928,209,1.574,225,1.894,317,1.402,352,2.483,362,3.28,363,2.277,364,3.483,379,2.285,440,2.757,450,2.483,464,2.345,484,3.28,493,5.475,611,1.861,682,3.203,799,1.369,812,1.618,873,2.756,889,1.928,896,1.964,914,2.653,919,3.203,923,2.653,991,2.411,1029,2.877,1037,4.995,1067,4.995,1101,5.475,1314,2.483,1360,6.047,1409,2.563,1450,3.203,1451,3.814,1452,7.692,1453,8.251,1454,6.911,1455,3.446,1456,3.203,1457,2.877,1458,3.203]],["t/278",[16,1.617,26,2.158,31,0.618,40,3.74,60,3.427,97,2.15,100,1.229,119,2.271,127,2.847,133,2.18,146,1.461,182,2.741,199,2.208,214,3.883,254,3.919,262,4.554,295,3.53,326,1.88,375,1.994,425,4.296,474,4.09,584,4.815,593,4.043,611,2.646,873,3.549,904,4.224,923,3.772,973,3.919,1223,4.296,1225,4.296,1230,4.09,1277,3.644,1309,3.427,1411,3.772,1459,5.423,1460,3.53,1461,5.423,1462,5.423,1463,4.899]],["t/280",[3,0.859,16,1.648,31,0.636,100,0.724,101,2.333,112,2.721,119,1.338,121,3.617,122,2.27,129,3.883,133,2.222,146,1.102,214,2.928,243,3.114,401,3.341,432,7.727,442,3.341,452,2.928,512,3.883,626,4.031,632,7.249,808,2.675,812,2.366,833,5.973,907,3.958,1232,5.038,1233,6.811,1234,6.811,1236,4.683,1237,5.038,1241,6.811,1464,4.418,1465,4.683]],["t/282",[3,0.884,21,2.902,25,1.923,31,0.655,100,1.253,112,2.801,119,1.377,120,3.439,123,1.881,142,2.956,155,3.278,177,3.355,199,3.129,252,3.628,273,4.821,279,2.623,296,3.278,322,4.33,326,1.99,461,3.439,482,4.33,569,3.993,577,4.33,593,3.137,666,3.737,783,3.205,811,3.205,1136,4.149,1223,4.548,1225,4.548,1227,3.993,1277,5.166,1278,3.993,1282,5.186,1404,4.821,1466,5.74,1467,5.74,1468,4.33,1469,4.821,1470,5.74,1471,4.821,1472,5.74,1473,4.821]],["t/284",[31,0.889,100,1.212,133,2.297,229,5.073,335,3.561,432,5.879,632,6.174,637,7.041,666,5.073,1236,6.545,1474,7.793,1475,7.793]],["t/286",[81,3.114,100,1.239,122,2.86,123,2.302,131,4.788,134,1.949,236,3.552,279,4.003,285,4.012,286,4.107,375,3.51,409,3.762,497,5.299,594,3.84,616,4.721,757,4.721,1105,4.721,1340,5.078]],["t/288",[43,2.339,87,2.887,100,0.858,116,2.292,129,3.405,131,4.608,134,1.834,279,3.853,358,4.599,409,5.235,472,4.599,516,4.178,561,3.864,1476,5.238,1477,5.552,1478,4.599,1479,5.552,1480,5.238,1481,5.552,1482,5.238,1483,5.552,1484,6.611,1485,6.611,1486,6.611,1487,6.611]],["t/290",[100,1.241,134,2.251,279,3.709,307,4.532,611,3.96,829,5.283,907,4.26,1219,5.866]],["t/292",[43,1.76,87,2.77,100,1.066,116,2.199,121,3.939,131,4.488,134,1.76,279,2.899,307,3.542,358,4.413,516,4.009,907,5.054,1401,6.505,1476,5.026,1477,5.327,1478,4.413,1479,5.327,1480,5.026,1481,5.327,1482,5.026,1483,5.327,1488,6.344,1489,5.731,1490,8.211,1491,8.211,1492,8.211]],["t/294",[43,1.569,87,3.324,89,2.272,92,2.913,100,1.117,116,1.961,118,3.307,119,1.827,122,2.303,131,4.161,133,1.667,134,2.112,146,1.117,147,2.055,279,3.479,307,3.159,358,3.936,382,3.683,383,3.478,409,3.029,516,3.576,904,4.347,907,4.831,958,6.878,1106,4.751,1401,6.817,1476,4.482,1477,4.751,1478,3.936,1479,4.751,1480,4.482,1481,4.751,1482,4.482,1483,4.751,1489,5.111,1493,5.657,1494,5.657]],["t/296",[1,1.667,3,1.477,4,2.031,11,1.294,16,1.275,17,2.36,21,1.476,25,0.978,26,0.852,30,1.222,31,0.886,45,1.45,47,1.727,51,1.749,53,1.355,62,1.533,63,1.355,65,1.737,71,1.563,81,2.069,89,1.173,92,1.504,93,1.425,95,1.9,96,1.157,100,0.865,102,1.83,104,3.901,123,0.957,127,1.533,132,1.401,133,0.861,146,1.152,179,2.009,180,3.247,185,1.476,196,3.92,197,3.521,199,1.189,200,1.504,201,2.665,203,3.137,204,2.796,205,2.796,206,2.202,207,2.031,208,1.845,209,2.407,234,3.521,246,1.707,247,1.476,251,1.749,292,2.11,304,1.205,312,2.202,313,1.926,317,1.073,318,1.257,325,1.707,326,1.618,345,3.92,397,1.334,424,1.563,450,1.901,452,1.533,474,2.202,483,1.845,488,2.11,518,1.901,542,2.11,576,3.698,577,3.521,578,1.901,579,2.638,580,2.638,603,2.313,611,1.425,612,1.476,742,1.401,772,1.707,783,1.63,799,1.048,817,1.189,845,2.404,848,2.665,886,1.63,889,2.948,932,1.845,994,2.313,1084,2.452,1227,2.031,1312,1.795,1495,2.031,1496,2.92,1497,2.92,1498,1.749,1499,2.92,1500,2.638,1501,4.217,1502,2.638,1503,2.92,1504,2.92,1505,2.452,1506,3.247,1507,2.452,1508,2.313,1509,5.832,1510,2.202,1511,2.92,1512,2.92,1513,2.11]],["t/298",[13,2.206,31,0.916,63,3.729,89,3.227,100,1.043,134,2.228,147,2.918,264,3.919,305,4.061,335,3.671]],["t/300",[3,1.045,13,1.863,100,0.88,112,3.309,118,3.964,119,2.368,120,4.063,121,3.254,122,3.488,134,1.881,146,1.34,147,3.585,214,3.56,238,3.254,277,3.309,304,2.799,516,4.287,565,4.287,904,3.873,1117,4.17,1395,6.127]],["t/302",[13,1.744,19,2.292,31,0.853,65,1.625,100,1.182,116,2.201,121,3.046,122,1.777,129,2.249,133,1.871,134,1.211,138,1.995,147,2.984,150,2.06,184,2.948,229,2.842,279,2.902,308,1.645,318,1.879,319,2.168,329,5.644,375,1.605,471,4.267,487,3.037,494,6.213,495,4.418,511,2.027,512,3.27,518,2.842,530,3.945,594,2.386,697,3.156,745,3.333,795,3.667,806,7.33,811,2.438,813,4.133,814,5.736,907,2.292,1386,3.945,1401,3.459,1514,4.366,1515,4.366,1516,4.366,1517,4.366,1518,3.459,1519,4.366]],["t/304",[11,1.299,16,1.023,26,1.706,31,0.667,43,2.159,47,1.852,50,1.077,55,1.569,63,1.361,65,1.091,72,1.713,96,1.162,100,0.947,102,3.108,103,2.737,116,1.623,119,1.751,133,1.38,134,1.622,146,0.579,147,2.124,203,1.969,209,1.209,308,2.932,315,2.322,317,2.149,318,2.015,347,4.346,421,1.852,484,2.673,511,2.174,512,1.509,547,1.243,745,3.505,786,2.461,800,2.118,812,1.986,831,3.695,841,4.41,858,2.648,859,8.104,860,5.217,861,2.648,865,3.146,866,2.648,867,3.532,877,3.532,878,2.507,891,2.461,949,3.257,1038,2.039,1094,2.322,1320,2.648,1413,2.322,1426,2.322,1520,2.931,1521,2.931,1522,2.931,1523,2.931,1524,2.931,1525,2.931,1526,2.931,1527,2.931,1528,2.931,1529,2.931,1530,2.931,1531,2.931,1532,2.931,1533,2.118,1534,4.23,1535,2.931,1536,2.931,1537,2.648,1538,2.931,1539,2.931,1540,2.931,1541,2.931,1542,2.461,1543,2.461,1544,2.461,1545,2.461]],["t/306",[31,0.937,43,2.561,46,1.517,52,2.628,55,2.023,63,1.754,76,4.617,100,0.74,134,1.048,150,3.242,157,1.91,185,1.91,200,4.231,230,2.538,308,2.149,344,3.054,421,3.605,463,4.858,495,1.7,507,3.507,512,1.945,566,2.023,584,3.713,626,2.73,644,3.413,670,2.993,677,4.789,681,3.413,682,5.77,724,2.993,742,1.812,745,2.994,773,3.413,775,3.172,776,3.172,777,6.064,943,7.805,999,3.172,1342,2.993,1476,2.993,1546,3.778,1547,3.172,1548,3.778,1549,5.152,1550,8.216,1551,5.703,1552,3.413,1553,6.871,1554,3.778,1555,5.703,1556,3.413,1557,3.778,1558,5.703,1559,6.871,1560,3.778,1561,3.778,1562,3.778,1563,3.172,1564,3.778,1565,3.413,1566,3.778]],["t/308",[5,1.213,11,2.756,19,2.647,26,2.229,31,0.802,43,2.608,50,1.184,100,1.052,104,2.7,116,1.116,119,0.772,129,5.462,134,1.952,138,1.471,147,1.169,150,1.519,184,4.497,308,2.342,313,1.328,317,2.286,409,2.7,412,1.724,462,1.798,463,4.024,470,2.551,471,2.163,472,2.24,484,1.838,487,4.895,505,2.163,506,3.793,511,2.341,602,2.908,695,2.908,745,3.264,819,6.113,865,3.389,924,2.908,926,5.617,949,2.24,1134,2.704,1360,2.163,1567,7.036,1568,3.219,1569,5.043,1570,3.219,1571,3.219,1572,3.219,1573,3.219,1574,3.219,1575,3.219,1576,3.219,1577,3.219,1578,5.043,1579,3.219,1580,3.219]],["t/310",[3,0.498,13,0.888,26,2.368,31,0.369,43,2.689,47,0.955,50,1.188,100,0.915,116,1.12,134,1.729,146,0.639,147,1.174,200,3.21,225,1.605,279,2.849,285,6.039,286,5.397,308,3.401,317,2.985,409,3.776,486,2.438,506,3.501,511,2.349,527,2.558,745,3.272,799,2.531,800,5.097,808,3.894,865,4.189,890,2.715,891,6.817,892,2.336,893,5.632,906,2.715,949,4.337,1581,6.234,1582,3.233,1583,3.233,1584,3.233,1585,3.233,1586,3.233,1587,3.233,1588,3.233,1589,2.249,1590,3.233,1591,3.233,1592,3.233]],["t/312",[16,1.067,26,2.007,31,0.784,43,2.398,47,1.298,65,1.817,97,1.936,99,3.896,100,0.893,116,1.692,119,2.074,134,2.209,147,1.774,308,3,317,1.795,363,2.727,375,1.795,484,2.788,511,2.267,512,2.514,547,2.918,745,4.18,872,4.411,873,3.3,874,7.26,875,4.411,876,3.529,877,5.189,878,3.683,949,3.397,1413,3.868,1537,4.411,1542,4.1,1543,4.1,1544,4.1,1545,4.1,1593,4.883,1594,4.883,1595,4.883,1596,4.883,1597,4.883]],["t/314",[16,1.255,26,2.243,31,0.877,47,1.451,65,2.136,97,3.436,98,4.55,100,0.998,116,1.99,119,2.08,134,2.404,147,2.085,308,2.896,484,3.278,511,2.665,512,2.956,547,3.262,745,4.55,873,3.688,887,6.264,888,5.186,889,3.886,1542,4.821,1543,4.821,1544,4.821,1545,4.821,1598,5.74,1599,5.74,1600,5.74]],["t/316",[13,2.101,31,0.872,43,2.122,104,3.051,134,1.581,164,3.829,172,2.526,308,3.478,375,2.095,395,2.935,424,3.051,494,4.703,495,2.564,512,5.105,566,3.051,673,3.71,745,2.991,752,4.298,784,4.786,790,8.956,795,4.786,806,4.786,808,2.734,811,3.182,889,3.867,1601,5.699,1602,7.65,1603,5.699,1604,4.515,1605,5.699,1606,5.699]],["t/318",[3,1.285,13,2.291,16,1.823,25,2.795,26,1.897,62,3.413,126,3.63,252,4.109,445,5.151,464,3.997,542,4.699,555,5.873,566,3.481,577,4.904,611,3.172,684,3.63,1054,4.699,1227,4.523,1278,4.523,1309,5.272,1431,5.151,1607,5.46,1608,5.873,1609,6.502,1610,6.502,1611,5.873,1612,4.369,1613,4.904]],["t/320",[3,0.977,16,1.99,26,1.851,27,3.622,28,2.945,46,2.548,47,1.549,60,4.009,95,2.582,96,2.515,100,0.823,104,3.397,119,2.184,146,1.253,161,4.009,177,3.708,179,2.73,180,4.413,184,2.945,247,3.207,452,3.33,545,4.585,799,2.277,816,3.542,1037,4.585,1409,4.263,1614,5.327,1615,5.026,1616,4.585,1617,4.413,1618,5.731]],["t/322",[13,1.688,16,1.758,27,3.509,31,0.701,47,1.159,119,1.474,146,1.589,188,5.16,209,2.536,246,4.701,304,2.536,306,5.812,326,2.788,335,2.808,424,3.29,474,4.635,799,3.218,817,3.649,845,4.142,1105,4.129,1365,4.635,1444,6.754,1506,4.275,1615,4.868,1619,3.681,1620,4.868,1621,5.16,1622,4.441,1623,4.441]],["t/324",[16,1.749,17,3.082,31,0.695,47,1.51,65,2.269,97,2.417,99,3.091,100,0.791,101,2.551,119,1.92,146,1.204,173,3.14,179,2.624,316,3.969,326,2.113,362,3.481,363,3.172,364,3.214,375,2.242,397,2.786,527,3.082,544,4.599,557,5.508,799,2.872,843,4.12,971,3.749,1304,4.831,1460,3.969,1498,3.653,1624,4.831,1625,5.508,1626,5.508,1627,5.508]],["t/326",[16,1.937,24,2.38,26,1.751,31,0.685,45,2.981,47,1.672,81,2.661,99,2.32,100,0.779,101,3.708,102,2.958,108,3.908,119,1.441,133,1.769,146,1.564,201,2.744,340,3.691,375,2.207,560,4.339,612,3.035,684,3.352,799,2.843,812,2.547,896,3.092,991,3.795,1042,4.757,1433,4.757,1446,4.757,1456,5.042,1458,5.042,1498,3.597,1628,5.424]],["t/328",[16,1.767,47,1.525,65,2.305,95,2.521,96,3.205,97,3.205,98,4.243,100,0.804,119,2.159,133,1.825,145,3.075,146,1.597,206,4.672,326,2.147,352,4.032,375,2.277,396,6.404,547,2.628,549,5.201,680,4.672,799,2.223,843,3.189,1067,4.476,1498,3.71,1629,7.303,1630,5.595,1631,6.193,1632,6.193,1633,4.476]],["t/330",[3,1.196,16,1.273,25,1.952,47,1.83,48,4.053,50,2.142,55,3.119,58,2.749,71,4.157,84,2.662,99,2.251,102,1.828,115,3.582,146,1.533,150,2.749,201,2.662,207,4.053,209,2.404,327,3.058,335,2.662,363,2.309,395,3.998,397,2.662,407,3.915,429,4.892,431,3.792,450,3.792,570,2.945,1411,4.053,1634,9.013,1635,5.826,1636,5.826,1637,5.826,1638,5.263]],["t/332",[3,1.29,31,0.955,316,5.452,1425,7.567,1639,7.034,1640,7.034]],["t/334",[3,1.166,100,0.982,112,3.692,119,2.2,122,3.081,133,2.23,146,1.811,313,3.123,516,4.783,944,4.653,1117,4.653,1392,5.469,1409,5.086,1641,5.709]],["t/336",[16,1.654,26,2.208,47,1.73,58,3.571,101,3.166,165,3.897,363,3,364,3.04,397,3.458,421,4.783,496,5.265,570,3.826,605,6.355,757,5.086,971,4.653]],["t/338",[3,1.201,25,2.611,35,4.669,84,3.561,100,1.012,167,5.073,182,3.94,193,4.926,256,6.545,665,4.926,895,5.632,1642,7.793,1643,6.545]],["t/340",[13,2.001,31,0.831,102,2.287,119,1.748,122,2.966,146,1.439,177,4.259,178,4.897,238,3.495,251,4.365,254,5.266,904,4.161,907,3.825,910,5.069,1216,6.234,1217,5.069,1218,6.583,1219,5.266,1644,7.287]],["t/342",[26,2.126,65,2.712,100,0.946,101,3.049,119,1.748,121,3.495,122,3.648,133,2.148,182,3.684,205,4.365,238,3.495,335,3.33,413,4.897,494,4.48,495,3.279,838,5.069,907,3.825,1261,5.773,1276,6.583]],["t/344",[16,1.522,26,2.031,28,3.233,31,0.794,60,4.401,84,3.182,100,1.234,122,2.835,127,3.655,133,2.052,146,1.375,147,2.529,335,3.182,397,3.182,611,3.397,772,4.07,829,4.533,907,4.573,1219,5.032,1645,6.291,1646,6.291,1647,4.679]],["t/346",[16,1.593,17,3.684,26,2.126,31,0.831,47,1.375,97,2.889,99,2.815,100,0.946,119,1.748,146,1.439,341,5.773,362,4.161,363,2.889,364,2.927,397,3.33,527,3.684,799,2.616,971,4.48,1304,5.773,1624,5.773]],["t/348",[16,1.72,27,4.495,31,0.898,41,4.601,146,1.555,182,3.979,193,4.975,252,4.975,611,3.841,816,4.395,1648,7.872,1649,7.872]],["t/350",[16,2.004,21,3.826,25,2.536,65,2.816,93,3.692,115,4.653,119,2.2,146,1.811,182,3.826,452,3.973,1431,5.996,1650,7.568,1651,6.837]],["t/352",[97,3.121,100,1.219,146,1.555,326,2.728,527,3.979,547,3.34,593,4.302,799,2.826,1387,4.495,1460,5.124,1652,6.61]],["t/354",[16,1.67,26,2.229,47,1.442,95,3.111,96,3.657,97,3.657,98,4.011,100,0.992,119,1.834,146,1.509,799,2.743,1361,6.054,1629,6.903]],["t/356",[3,1.144,19,3.897,84,3.393,116,2.573,137,4.833,146,1.467,209,3.064,348,6.707,547,3.15,1435,6.235,1436,6.707,1445,5.882,1446,7.181,1460,4.833,1653,6.707,1654,7.612]],["t/358",[3,1.413,15,4.653,16,1.654,26,2.208,28,3.513,100,0.982,119,2.2,146,1.495,181,5.996,184,3.513,200,3.897,547,3.211,1460,4.926,1652,6.355]],["t/360",[3,1.155,100,1.183,122,3.051,150,3.536,200,3.86,279,4.166,409,4.013,421,4.737,463,4.527,775,6.295,776,6.295,777,5.938,1035,5.654,1549,6.772]],["t/362",[28,3.548,161,4.83,184,4.282,185,3.863,214,4.011,236,3.863,251,4.578,289,4.578,313,3.153,591,6.054,611,3.728,1427,6.903,1613,5.764,1655,6.054]],["t/364",[3,1.453,25,2.887,47,1.78,62,3.591,71,5.05,104,5.05,201,3.126,313,2.823,327,3.591,341,5.42,395,3.523,413,4.598,424,3.663,484,3.907,547,2.903,1409,4.598,1656,6.181,1657,6.842]],["t/366",[3,1.25,28,3.768,100,1.053,119,1.947,146,1.603,225,4.03,289,4.862,340,4.99,997,6.43]],["t/368",[3,1.25,100,1.053,119,2.294,122,3.304,146,1.603,611,3.96,944,4.99,1495,5.646]],["t/370",[26,2.126,40,3.684,65,2.712,96,2.889,97,2.889,100,1.163,112,3.555,119,2.328,122,2.966,133,2.148,146,1.439,214,3.825,238,3.495,873,3.495,904,4.161,1082,5.266,1469,6.119]],["t/372",[3,1.213,100,1.022,146,1.555,150,3.714,463,3.908,594,4.302,772,4.601,813,5.124,1035,5.938,1217,5.476,1296,6.236,1658,7.111]],["t/374",[3,1.133,16,1.607,24,2.916,26,2.146,47,1.388,95,2.994,99,2.842,100,0.955,101,3.077,102,2.308,115,4.522,127,3.861,146,1.453,304,3.035,318,3.165,342,3.309,488,5.316,799,2.64,1092,4.299]],["t/376",[27,4.2,28,3.415,47,1.839,65,2.737,95,2.994,96,2.916,145,3.652,362,4.2,364,3.62,545,5.316,889,3.718,1037,5.316,1308,5.548,1659,7.355,1660,6.645,1661,7.355]],["t/378",[47,1.388,96,2.916,119,2.162,133,2.168,230,4.942,364,4.08,421,4.649,484,4.2,772,4.299,816,4.107,913,4.406,1037,5.316,1067,5.316,1308,6.798]],["t/380",[24,3,26,2.208,326,3.179,570,3.826,817,3.081,845,4.723,848,4.321,1309,4.783,1312,4.653,1506,5.265,1507,6.355,1508,5.996,1662,6.837,1663,7.568]],["t/382",[3,1.102,16,1.936,26,2.087,27,4.085,47,1.35,95,2.912,96,2.836,100,0.929,119,1.716,146,1.413,177,4.181,178,4.807,179,3.079,184,3.321,545,5.17,799,2.568,816,3.995,1312,4.398,1615,5.668,1617,4.977,1618,6.463]],["t/384",[20,3.935,84,3.492,289,4.578,326,2.649,482,5.764,593,5.042,612,3.863,843,3.935,1460,4.974,1533,5.523,1664,5.316,1665,7.642,1666,7.642,1667,6.417]],["t/386",[16,1.522,31,0.794,47,1.314,60,4.401,146,1.375,209,2.873,246,4.07,306,5.032,326,3.02,424,3.728,474,5.252,799,3.127,817,3.547,845,4.487,1365,5.252,1444,5.848,1506,4.844,1619,4.171,1621,5.848,1622,5.032,1668,6.963]],["t/388",[4,5.368,23,4.132,25,2.585,28,3.582,115,4.745,165,3.974,177,4.511,184,3.582,200,3.974,453,5.023,576,6.114,593,4.218,689,6.114,1669,6.48]],["t/390",[16,1.654,26,2.208,47,1.73,65,2.816,101,3.166,102,2.375,119,1.816,146,1.811,205,4.534,799,2.717,991,4.783,1042,5.996,1446,5.996,1628,6.837]],["t/392",[26,2.251,27,4.406,62,4.051,119,1.852,133,2.274,146,1.524,201,3.526,202,5.821,229,5.023,238,3.702,472,5.368,914,5.368,1441,6.114,1670,6.971]],["t/394",[3,1.335,16,1.894,17,3.489,20,3.554,25,2.312,28,3.204,31,0.787,100,0.896,119,2.079,142,3.554,146,1.363,175,5.468,181,5.468,182,3.489,184,3.204,200,3.554,261,4.801,326,2.392,564,5.206,593,3.772,1430,4.988,1433,5.468,1442,5.206]],["t/396",[3,1.421,25,2.56,47,1.74,48,5.316,58,3.605,71,4.092,84,3.492,146,1.509,363,3.029,364,3.069,397,3.492,898,4.974,1290,6.903]],["t/398",[3,1.35,13,1.93,15,4.32,23,3.762,28,3.262,47,1.653,71,4.691,104,4.691,105,4.573,106,4.887,146,1.388,180,4.887,184,3.262,200,3.618,313,2.899,604,5.566,1671,7.026,1672,5.9,1673,5.566,1674,5.9]],["t/400",[3,1.166,47,1.428,119,2.2,146,1.811,167,4.926,179,3.257,247,3.826,252,4.783,326,2.623,527,4.636,593,4.136,1460,4.926,1675,7.568]],["t/402",[3,1.063,16,1.894,23,3.696,26,2.013,28,3.204,31,0.787,93,3.368,104,3.696,184,3.204,214,3.623,238,3.311,312,6.535,395,3.554,463,3.427,604,5.468,649,4.244,826,4.801,1067,4.988,1110,5.796,1313,6.235,1673,5.468,1676,6.235,1677,6.902,1678,6.235]],["t/404",[3,1.248,13,1.384,31,0.575,47,1.528,84,3.214,87,2.201,92,2.595,99,1.947,100,0.654,101,2.108,103,2.946,138,2.303,146,1.732,150,2.378,164,3.387,165,2.595,167,3.281,179,3.027,205,3.019,247,2.548,252,4.445,260,2.698,304,2.08,326,1.747,363,1.998,364,2.825,482,5.305,527,3.555,538,3.993,570,2.548,593,3.844,774,3.642,780,3.642,845,2.595,855,3.801,909,3.801,971,3.098,1249,2.946,1312,4.324,1359,4.553,1387,2.878,1460,3.281,1506,3.506,1563,4.232,1647,4.726,1679,3.801,1680,5.04,1681,5.04,1682,3.993,1683,3.801,1684,5.04,1685,5.04]],["t/406",[3,0.939,11,3.546,13,1.675,16,1.333,25,2.043,28,2.831,93,2.975,100,1.039,114,3.027,123,1.998,140,3.653,142,3.14,146,1.873,177,3.564,178,4.097,179,2.624,185,3.082,190,2.831,242,6.339,260,3.265,282,4.831,304,2.516,578,3.969,594,3.333,774,4.407,1312,3.749,1387,3.481,1510,6.035,1686,6.097,1687,6.097,1688,6.097,1689,5.12,1690,4.599,1691,6.097]],["t/408",[31,0.856,46,2.224,87,3.277,89,3.014,100,0.974,129,2.852,146,1.094,199,2.254,215,3.852,225,2.749,234,6.882,308,2.086,527,2.799,663,4.387,697,4.002,817,3.055,821,4.885,829,6.207,832,3.852,889,2.799,921,4.177,1034,3.721,1275,4.002,1339,7.714,1340,4.002,1669,4.65,1692,5.538,1693,3.605,1694,7.504,1695,5.538,1696,4.002,1697,5.538,1698,5.003]],["t/410",[1,3.207,3,1.321,31,0.864,51,3.365,87,2.453,89,2.256,100,0.983,114,2.789,123,2.483,134,2.102,146,1.693,194,3.07,234,4.237,239,4.45,247,2.839,252,3.55,260,4.057,271,2.789,293,3.907,298,4.45,315,4.45,316,3.656,317,2.065,364,3.043,375,2.065,570,2.839,578,3.656,594,4.141,679,4.45,843,2.893,852,4.237,853,4.237,855,5.715,871,5.074,914,3.907,1168,4.059,1319,4.237,1339,4.237,1696,4.059,1699,4.717]],["t/412",[3,1.258,13,1.728,16,1.785,30,2.633,50,2.314,63,2.921,84,2.876,165,3.241,167,4.096,184,4.617,223,4.378,239,4.986,280,3.593,289,3.77,326,2.181,536,5.285,552,4.096,576,6.471,665,3.977,742,3.019,1102,4.548,1387,3.593,1498,3.77,1611,5.685,1700,6.293,1701,5.285,1702,5.285,1703,5.285,1704,6.293,1705,6.293]],["t/414",[3,1.01,13,1.801,16,1.433,31,0.748,42,2.782,53,3.044,239,5.194,387,3.832,452,3.441,473,3.743,636,5.194,673,4.268,720,4.144,772,3.832,826,4.561,913,3.927,1035,6.326,1092,3.832,1249,3.832,1309,4.144,1314,4.268,1547,5.505,1627,5.923,1706,9.247,1707,5.194,1708,5.194,1709,6.556,1710,6.556,1711,5.923]],["t/416",[3,0.911,13,1.624,16,1.714,47,1.66,50,2.174,53,3.64,133,1.743,165,3.045,201,2.702,240,4.685,333,3.849,362,5.023,364,3.534,379,3.542,611,2.885,720,5.56,772,3.456,799,2.815,889,4.447,1309,5.56,1310,3.737,1311,4.966,1315,4.685,1408,4.46,1674,6.585,1708,4.685,1711,7.084,1712,5.913]],["t/418",[21,2.989,31,0.674,41,3.456,47,1.116,53,2.745,84,2.702,119,1.881,133,1.743,165,3.045,236,2.989,238,2.837,246,3.456,247,3.964,292,4.274,326,2.05,349,3.542,412,3.166,545,4.274,570,2.989,799,2.123,816,3.302,817,2.407,845,3.045,1224,4.274,1277,3.974,1315,4.685,1365,4.46,1408,4.46,1506,4.114,1713,5.913,1714,5.913,1715,5.342,1716,5.913,1717,6.97,1718,5.913,1719,4.685,1720,4.685,1721,5.342,1722,5.342,1723,4.274,1724,5.342]],["t/420",[3,1.408,16,1.804,23,3.424,47,1.207,53,2.969,60,4.042,70,3.831,71,3.424,104,4.893,127,3.357,146,1.263,161,4.042,184,3.832,201,2.923,223,4.449,232,6.931,236,4.172,312,6.226,418,3.233,604,5.067,612,3.233,1408,4.824,1673,5.067,1725,6.395,1726,4.298,1727,5.067]],["t/422",[16,1.672,17,2.881,31,0.65,97,2.259,99,3.336,100,1.198,102,2.401,133,2.255,199,2.32,349,3.414,363,2.259,364,2.289,511,2.646,611,2.78,684,3.182,720,4.835,742,2.734,772,4.472,812,3.664,813,3.71,929,4.515,1035,6.963,1066,5.529,1309,3.602,1310,3.602,1311,4.786,1387,4.368,1498,3.414,1674,4.786,1696,4.118,1728,5.699,1729,5.699,1730,5.699]],["t/424",[30,2.993,126,3.995,155,4.085,158,4.657,179,4.142,483,4.521,611,3.49,860,5.447,900,4.866,1044,4.181,1094,5.668,1353,4.977,1612,4.807,1731,6.463,1732,6.463,1733,6.463,1734,6.008]],["t/426",[58,2.899,179,2.645,201,2.808,261,6.616,279,2.808,289,5.37,860,3.778,911,3.681,1054,4.441,1275,4.441,1310,3.884,1423,4.635,1429,4.275,1735,4,1736,8.592,1737,8.099,1738,5.551,1739,6.754,1740,4.635,1741,5.551,1742,5.551,1743,5.551,1744,5.551,1745,5.551,1746,5.551,1747,5.551,1748,4.868,1749,5.551,1750,4.441]],["t/428",[24,1.912,25,1.616,30,2.018,31,0.778,50,1.773,53,2.239,58,4.443,64,3.048,102,2.482,179,2.076,184,2.239,195,3.271,201,4.145,209,2.814,251,2.889,261,6.311,279,3.929,325,2.819,326,1.672,342,3.068,352,3.139,397,2.204,424,2.582,552,3.139,649,2.965,772,2.819,811,4.801,900,4.347,912,2.965,1249,2.819,1308,3.638,1310,5.734,1429,4.744,1612,3.241,1683,3.638,1726,3.241,1740,3.638,1751,4.05,1752,4.05,1753,4.823,1754,4.823,1755,4.823]],["t/430",[13,1.816,31,0.754,58,3.119,165,4.342,179,2.845,201,3.853,219,3.692,225,3.282,261,5.865,325,4.928,326,2.292,342,2.975,363,3.342,483,4.178,684,3.692,860,4.065,900,3.342,1034,5.666,1310,5.329,1353,4.599,1411,4.599,1693,5.488,1756,4.987]],["t/432",[15,4.565,126,4.146,150,3.503,184,4.208,201,4.142,217,5.882,230,4.989,342,3.341,566,3.975,611,3.623,900,3.753,1310,4.693,1726,4.989,1757,7.425,1758,7.425,1759,7.425]],["t/434",[13,1.976,25,1.744,31,0.594,53,2.417,58,2.457,78,4.704,141,3.928,179,3.096,199,2.12,201,4.264,202,3.928,217,4.125,247,4.494,342,3.237,379,3.119,397,2.379,456,4.373,757,3.499,836,4.373,913,3.119,975,3.928,1270,6.041,1310,5.897,1430,5.199,1693,3.389,1748,7.044,1752,4.373,1760,4.704,1761,5.699,1762,8.243,1763,7.194,1764,4.704,1765,5.207,1766,4.704,1767,5.207,1768,4.373,1769,5.207,1770,4.704,1771,4.373,1772,5.207]],["t/436",[41,2.625,51,2.691,58,4.579,155,2.565,179,2.789,185,2.27,201,4.587,247,2.27,261,4.508,325,2.625,326,1.557,333,4.949,340,3.985,342,2.021,344,2.405,412,2.405,425,3.558,529,3.124,542,3.246,565,2.839,570,2.27,611,2.191,860,2.761,873,2.154,1054,3.246,1133,3.124,1194,4.508,1310,6.134,1353,3.124,1365,3.388,1735,2.924,1752,3.772,1773,3.388,1774,4.491,1775,4.491,1776,4.491,1777,8.324,1778,4.491,1779,4.057,1780,4.491,1781,4.491,1782,8.324,1783,4.888,1784,4.057,1785,4.491,1786,4.491,1787,3.772,1788,4.491,1789,4.491,1790,3.772,1791,4.491]],["t/438",[179,3.107,333,4.7,363,2.862,720,4.563,860,4.439,896,3.718,900,4.885,1034,6.494,1457,5.446,1655,5.72,1693,6.291,1792,6.522,1793,6.522,1794,5.72,1795,6.063]],["t/440",[40,3.65,61,5.218,64,4.563,132,3.463,157,3.65,179,3.835,209,2.979,276,4.22,350,5.446,461,4.325,760,4.851,860,5.478,900,4.504,983,4.851,991,4.563,1623,5.218,1699,6.063,1796,6.063]],["t/442",[179,3.388,276,4.601,280,4.495,860,4.84,1249,4.601,1756,5.938,1797,7.111,1798,6.61,1799,7.111,1800,6.61,1801,6.61,1802,7.111]],["t/444",[3,1.477,11,3.142,15,4.359,16,2.095,17,3.584,219,3.958,498,4.481,547,3.008,870,6.404,900,3.584,1224,5.123,1639,5.953,1703,5.953,1803,5.347,1804,4.144,1805,5.953,1806,5.616,1807,7.959]],["t/446",[3,1.189,62,4.871,63,3.582,260,4.132,293,5.368,452,4.051,463,3.831,473,4.406,1121,6.971,1226,6.971,1640,6.48,1808,6.971,1809,7.717]],["t/448",[3,1.342,11,3.086,21,3.52,30,2.913,31,0.794,64,4.401,100,1.131,123,2.855,140,4.171,146,1.721,182,3.52,238,3.34,242,5.517,578,4.533,1387,3.976,1442,5.252,1473,5.848,1734,5.848,1810,6.963,1811,6.963,1812,6.963]],["t/450",[3,1.285,13,1.786,16,1.823,20,3.348,26,1.897,31,0.741,50,2.39,65,2.42,84,2.971,115,3.997,123,2.13,177,3.8,178,4.369,179,2.798,185,3.287,256,7.005,264,3.172,326,2.254,494,3.997,562,5.873,1312,3.997,1445,5.151,1460,4.232,1672,5.46,1689,5.46,1813,6.502,1814,6.502,1815,6.502,1816,6.502,1817,5.873]],["t/452",[3,1.189,16,1.687,21,3.901,246,4.511,247,3.901,349,4.623,452,4.051,799,2.77,817,3.141,986,5.023,1412,5.577,1498,4.623,1676,6.971,1818,6.971]],["t/454",[1,4.592,3,0.947,47,1.159,126,3.431,146,1.214,168,3.106,190,2.853,199,3.274,326,3.107,418,3.106,524,4.868,673,4,817,3.649,843,3.164,845,4.142,873,2.948,878,4.306,883,5.551,886,3.431,1438,4.275,1647,4.129,1773,6.066,1819,4.868,1820,4.129,1821,6.754,1822,6.145,1823,5.812,1824,5.16,1825,6.145]],["t/456",[3,0.948,25,1.061,30,1.325,31,0.361,40,1.601,42,1.344,47,1.316,51,1.897,64,2.002,69,1.769,72,1.851,81,1.404,100,1.045,102,0.994,119,0.76,123,2.285,133,0.933,145,3.055,146,0.983,154,4.446,160,2.062,172,1.404,190,1.47,195,1.519,199,3.276,203,2.128,209,1.307,318,3.001,319,3.055,326,1.098,328,2.128,342,1.425,349,2.983,358,2.203,362,1.809,364,3.045,450,2.062,495,1.425,499,2.062,524,4.874,526,2.66,546,2.203,552,2.062,582,2.062,612,1.601,739,1.731,780,4.446,797,3.756,798,1.851,799,2.208,843,4.728,855,2.389,1031,2.509,1087,5.167,1135,2.389,1387,1.809,1417,2.861,1498,1.897,1533,2.289,1613,2.389,1640,2.66,1647,2.128,1654,2.66,1664,2.203,1764,2.861,1768,2.66,1819,5.525,1820,2.128,1826,3.167,1827,4.979,1828,2.66,1829,2.861,1830,2.509,1831,2.128,1832,3.167,1833,3.167,1834,2.861,1835,4.979,1836,3.167,1837,2.509,1838,4.979,1839,3.167,1840,2.66,1841,2.66,1842,4.498,1843,2.861,1844,4.641,1845,3.167,1846,3.167,1847,3.167,1848,2.861,1849,2.861,1850,3.167,1851,2.289,1852,3.167,1853,3.167,1854,3.167,1855,3.167,1856,3.167,1857,3.167]],["t/458",[1,2.389,3,0.645,17,1.602,30,1.75,31,0.361,43,1.707,47,1.732,50,0.674,51,1.099,62,0.963,63,0.852,64,1.159,65,2.455,72,4.577,76,1.233,95,2.028,100,0.238,113,1.072,116,0.636,126,1.769,127,0.963,145,2.077,146,0.826,148,1.128,154,1.326,164,1.233,172,0.813,174,1.276,185,0.927,195,0.88,199,0.747,209,2.055,214,0.963,223,1.276,246,1.072,252,1.159,264,2.041,277,0.895,288,1.453,304,0.757,308,1.194,326,2.418,349,1.099,379,1.099,392,1.54,418,3.69,461,1.099,499,1.194,524,3.314,590,1.384,616,1.233,649,1.948,680,2.39,732,1.657,739,1.003,742,1.52,746,0.945,780,3.023,797,2.39,798,3.287,817,3.277,821,5.097,826,1.276,843,2.565,845,2.565,878,4.193,880,4.456,884,1.384,886,2.336,889,3.526,911,2.506,912,2.572,913,2.506,916,1.54,932,1.159,966,1.233,1019,1.159,1031,1.453,1052,1.54,1062,2.863,1072,2.39,1120,1.453,1194,2.204,1230,1.384,1423,1.384,1438,2.91,1464,1.453,1468,1.384,1495,1.276,1498,1.898,1513,1.326,1552,1.657,1619,1.898,1624,1.453,1795,1.54,1805,1.54,1819,4.876,1820,2.129,1821,2.661,1823,3.023,1830,2.511,1840,1.54,1851,3.023,1858,1.834,1859,1.657,1860,2.29,1861,2.863,1862,1.384,1863,3.169,1864,1.834,1865,1.657,1866,1.834,1867,1.453,1868,1.834,1869,1.384,1870,1.834,1871,3.513,1872,1.834,1873,3.779,1874,2.661,1875,2.661,1876,1.834,1877,2.863,1878,1.834,1879,1.657,1880,1.657,1881,1.54,1882,1.54,1883,1.657,1884,2.863,1885,1.453,1886,1.834,1887,4.183,1888,1.834,1889,1.657,1890,1.834,1891,1.834,1892,1.834,1893,1.54,1894,1.834,1895,1.657,1896,1.834,1897,1.54,1898,1.54,1899,1.657,1900,1.453,1901,4.5,1902,1.657,1903,1.834,1904,1.657,1905,1.54,1906,1.834,1907,2.39,1908,1.384,1909,1.834,1910,3.169,1911,1.834,1912,1.834]],["t/460",[30,2.286,43,2.345,47,1.253,65,1.329,66,3.226,72,3.194,87,1.559,88,3.226,145,1.773,185,1.805,186,2.829,195,1.713,203,2.4,243,1.994,298,2.829,304,1.474,316,2.325,326,1.238,340,2.196,484,2.039,511,2.537,546,2.484,582,2.325,584,4.321,680,5.007,742,1.713,783,1.994,796,5.575,798,2.087,817,2.225,821,4.321,843,2.814,845,1.839,878,2.926,880,4.33,886,1.994,889,4.052,892,3.95,1019,2.257,1031,2.829,1133,2.484,1187,3.226,1216,4.618,1468,2.694,1498,3.274,1513,2.581,1563,2.999,1589,2.484,1617,2.484,1647,2.4,1707,2.829,1806,2.829,1820,2.4,1821,2.999,1829,3.226,1860,3.95,1869,2.694,1871,5.575,1873,3.226,1877,4.937,1879,3.226,1897,2.999,1907,5.609,1913,2.999,1914,2.999,1915,3.571,1916,5.465,1917,7.437,1918,6.638,1919,3.571,1920,3.571,1921,3.571,1922,3.571,1923,5.465,1924,3.571,1925,5.465,1926,5.465,1927,3.571,1928,3.571,1929,3.571,1930,3.571,1931,3.571,1932,3.571,1933,3.571,1934,3.571,1935,3.571]],["t/462",[1,3.302,3,0.891,47,1.458,50,2.126,65,2.152,100,0.751,123,1.895,126,4.314,173,2.978,243,3.229,319,2.871,326,3.015,342,2.602,418,3.905,455,4.023,546,4.023,649,3.555,817,3.145,821,3.764,843,3.978,845,2.978,878,3.096,1408,4.362,1498,5.212,1619,3.464,1682,4.581,1819,4.581,1823,5.583,1830,4.581,1841,4.856,1851,4.179,1893,4.856,1907,4.362,1936,4.856,1937,7.725,1938,5.783,1939,5.783]],["t/465",[3,0.911,16,1.714,31,0.674,47,1.66,100,1.142,102,1.856,134,2.44,139,4.46,142,3.045,195,2.837,251,3.542,325,3.456,326,2.05,574,3.045,582,3.849,606,4.966,799,2.123,831,3.737,869,5.915,892,4.274,1081,4.46,1092,3.456,1381,4.966,1420,4.966,1794,6.212,1907,4.46,1940,6.585,1941,5.342,1942,5.913,1943,5.915,1944,5.342,1945,4.46,1946,5.913,1947,5.913]],["t/467",[16,1.522,47,1.314,81,3.086,100,0.904,102,2.984,113,4.07,134,2.637,173,3.586,304,2.873,308,2.623,390,5.092,520,5.517,684,3.888,760,4.679,841,5.252,1534,6.291,1948,6.963,1949,6.963,1950,6.963,1951,6.291]],["t/469",[3,1.277,194,4.53,574,4.985,734,6.566,812,3.516,1952,6.96]],["t/471",[3,1.189,46,3.1,50,2.837,62,4.051,169,5.368,453,5.023,574,3.974,629,5.577,812,3.274,1092,4.511,1952,6.48,1953,6.971,1954,7.717,1955,7.717]],["t/473",[3,0.506,11,2.792,16,1.555,31,0.375,47,1.712,51,1.969,85,2.969,96,1.303,100,1.178,102,2.233,113,1.921,116,1.777,123,1.077,127,2.691,132,1.577,133,0.969,142,1.693,148,3.874,185,1.662,190,1.526,277,1.604,304,1.356,318,1.415,324,2.375,325,1.921,326,1.139,362,1.877,380,2.969,407,2.209,418,1.662,452,1.725,462,1.835,505,2.209,546,2.287,626,2.375,630,2.375,742,1.577,783,1.835,798,3.683,799,2.262,816,1.835,844,2.969,845,3.665,867,3.866,869,5.368,879,2.969,889,3.597,892,2.375,906,2.76,911,1.969,928,4.304,1038,2.287,1105,2.209,1374,2.604,1412,2.375,1447,2.604,1468,2.479,1794,4.061,1804,1.921,1823,3.704,1837,2.604,1908,2.479,1945,5.368,1951,2.969,1956,5.291,1957,2.76,1958,5.126,1959,3.287,1960,3.287,1961,3.287,1962,3.287,1963,3.287,1964,3.287,1965,3.287,1966,3.287,1967,2.604,1968,2.969,1969,3.866,1970,4.63,1971,3.287,1972,3.287,1973,2.969,1974,4.061,1975,3.287,1976,3.287,1977,3.287,1978,5.126,1979,5.126,1980,3.287,1981,3.287,1982,2.969,1983,2.969,1984,2.969,1985,2.604,1986,2.604]],["t/475",[26,1.867,30,1.847,31,0.859,50,1.623,100,1.254,102,2.869,114,2.192,123,1.447,133,1.301,134,1.225,145,4.101,148,2.715,219,2.466,264,2.154,285,5.221,327,2.318,352,2.874,379,2.645,418,2.232,454,3.191,546,3.072,547,2.716,629,3.191,684,2.466,742,2.118,869,5.68,873,3.071,911,2.645,1024,3.191,1092,3.742,1387,2.521,1447,3.498,1612,2.967,1726,2.967,1837,3.498,1945,4.829,1957,3.708,1967,3.498,1973,3.989,1987,4.415,1988,8.259,1989,4.415,1990,4.415,1991,4.415,1992,4.453,1993,6.401,1994,6.401,1995,7.53,1996,4.415,1997,4.415,1998,4.415,1999,3.498,2000,3.708]],["t/477",[1,2.082,3,0.984,16,0.336,24,0.609,30,3.145,31,0.728,40,2.225,41,0.898,43,0.753,47,0.512,50,0.998,51,0.92,58,0.725,63,0.713,69,2.457,70,0.92,100,0.473,102,2.839,113,2.131,116,0.532,123,1.195,126,0.858,132,0.737,133,0.453,134,1.54,142,0.791,148,0.944,150,3.891,194,1.993,209,1.816,219,1.515,243,2.036,251,0.92,264,2.147,271,1.81,285,0.877,288,3.487,304,2.074,309,0.971,328,1.824,344,0.822,349,1.626,350,2.047,352,1,368,1.159,418,4.241,423,1.961,454,1.961,462,0.858,483,1.715,505,2.45,511,0.713,529,1.069,546,3.062,547,1.547,553,1.29,559,1.388,560,1.11,570,0.777,582,1,584,1,586,1.217,590,1.159,629,2.635,630,2.635,667,1.11,671,1.217,742,2.663,746,0.791,757,1.032,760,3.731,783,0.858,799,2.413,812,3.189,845,4.166,869,4.817,873,0.737,889,2.225,898,1,911,2.184,913,1.626,932,0.971,975,1.159,977,1.388,1005,1.388,1021,1.961,1043,4.662,1090,1.29,1092,3.733,1117,0.944,1133,1.069,1136,1.961,1364,2.279,1438,1.069,1447,4.753,1450,1.29,1478,1.069,1612,1.824,1630,3.293,1651,1.388,1656,1.388,1660,1.388,1664,1.069,1679,1.159,1690,1.159,1696,1.961,1750,1.11,1784,2.452,1794,2.888,1883,1.388,1900,1.217,1908,1.159,1913,1.29,1940,2.279,1944,1.388,1945,4.817,1967,2.15,1969,1.159,1974,2.15,1982,1.388,1983,1.388,1992,1.069,2001,1.388,2002,1.388,2003,1.388,2004,2.714,2005,1.536,2006,1.536,2007,2.714,2008,2.714,2009,2.714,2010,2.452,2011,2.452,2012,2.452,2013,2.452,2014,2.714,2015,6.723,2016,5.552,2017,4.398,2018,1.29,2019,1.11,2020,1.536,2021,1.536,2022,3.646,2023,1.536,2024,3.646,2025,0.944,2026,1.536,2027,1.536,2028,1.536,2029,1.536,2030,1.536,2031,1.536,2032,1.388,2033,1.536,2034,1.536,2035,1.536,2036,1.536,2037,1.536,2038,1.536,2039,1.536]],["t/479",[3,1.096,31,0.644,47,1.342,50,2.077,87,1.216,100,0.842,101,1.165,102,0.874,114,1.383,123,0.913,133,0.821,134,1.567,142,1.434,145,1.383,168,1.408,172,1.234,201,1.273,209,1.855,219,3.155,243,1.555,260,1.491,264,2.193,295,1.813,304,2.331,325,1.628,340,1.712,342,1.253,351,4.221,353,2.101,369,2.101,454,3.248,463,2.231,505,1.871,552,2.926,574,2.314,582,1.813,616,1.871,684,3.155,688,2.516,746,1.434,769,2.206,797,3.39,812,2.751,841,4.891,845,1.434,852,2.101,853,2.101,867,4.891,878,3.025,886,3.155,911,3.385,913,3.385,932,1.76,971,4.374,1092,1.628,1104,2.013,1117,1.712,1296,2.206,1306,2.206,1346,2.516,1364,2.339,1374,2.206,1381,3.774,1411,3.93,1426,2.206,1450,2.339,1478,1.937,1482,2.206,1495,1.937,1565,2.516,1589,1.937,1696,2.013,1750,2.013,1803,2.101,1806,2.206,1874,2.339,1900,2.206,1940,2.339,1945,6.036,1952,2.339,1953,4.06,1956,6.72,1967,2.206,2010,2.516,2011,2.516,2012,2.516,2013,2.516,2025,1.712,2040,2.785,2041,2.339,2042,2.785,2043,2.516,2044,2.516,2045,2.785,2046,2.785,2047,2.785,2048,2.785,2049,2.785,2050,2.785,2051,2.785,2052,2.339,2053,2.785,2054,2.785,2055,2.785,2056,2.785,2057,2.785,2058,2.339,2059,2.785,2060,6.484,2061,2.785,2062,2.785,2063,2.785,2064,5.65,2065,5.65,2066,2.785,2067,2.785,2068,2.339]],["t/482",[3,0.955,16,0.923,31,0.837,47,1.385,50,1.553,62,2.218,63,1.962,65,1.572,76,2.839,97,1.675,100,0.548,102,1.326,123,1.385,134,1.172,143,3.054,145,2.098,146,0.835,150,1.993,157,3.712,168,2.136,193,2.67,215,2.939,238,2.027,246,2.47,247,2.136,309,2.67,327,2.218,364,1.697,412,3.319,413,4.166,440,3.054,518,2.75,572,3.187,605,3.548,742,2.974,799,2.903,817,3.665,821,4.035,829,4.035,832,4.312,848,4.192,865,2.839,878,2.262,889,3.134,911,2.531,994,3.347,1049,2.939,1082,3.054,1102,3.054,1104,3.054,1275,3.054,1305,5.6,1339,3.187,1438,4.312,1473,3.548,1589,2.939,1613,4.676,1773,3.187,1804,3.623,1807,3.817,1871,3.548,2019,3.054,2069,4.225,2070,3.817,2071,4.225,2072,4.225,2073,3.548,2074,4.225,2075,4.225,2076,4.225]],["t/484",[10,3.29,74,5.16,100,0.798,119,1.474,133,1.811,146,1.214,150,2.899,412,3.29,673,4,742,2.948,816,3.431,817,2.502,847,4.868,848,5.119,878,4.8,1465,5.16,1533,4.441,1622,4.441,1717,4.868,1804,3.592,1869,4.635,1943,4.635,1992,4.275,2077,6.371,2078,8.042,2079,4.868,2080,5.16,2081,5.16,2082,4.868,2083,4.441,2084,5.551,2085,4.635,2086,4.635,2087,4.635]],["t/486",[47,1.742,50,2.095,51,3.414,72,3.331,95,2.32,100,0.74,150,3.609,154,4.118,190,2.646,195,2.734,209,3.157,328,3.829,379,3.414,499,3.71,566,3.051,636,4.515,783,3.182,848,5.271,878,4.096,886,3.182,889,2.881,920,3.829,966,3.829,1653,5.148,1804,3.331,1900,4.515,1992,3.964,2017,4.515,2025,3.504,2077,4.515,2079,4.515,2088,6.911,2089,4.298,2090,5.699,2091,5.699,2092,5.699,2093,4.515,2094,5.699,2095,5.699,2096,5.699]],["t/488",[10,3.906,43,1.474,47,1.572,51,4.37,58,2.507,72,3.105,74,4.461,100,0.69,146,1.049,209,2.192,264,2.592,319,2.638,412,3.906,518,3.458,566,3.906,783,2.966,816,2.966,817,3.391,848,3.033,878,3.906,916,4.461,917,4.007,920,4.902,1038,3.696,1278,3.696,1360,3.57,1646,4.799,1783,4.007,1851,3.84,1860,3.84,1875,4.461,1908,4.007,2003,4.799,2018,4.461,2025,4.485,2080,4.461,2081,4.461,2082,4.209,2083,3.84,2084,4.799,2088,7.525,2097,5.313,2098,5.313,2099,4.799,2100,4.461,2101,5.313,2102,5.313]],["t/490",[12,3.125,15,4.93,31,0.564,40,2.499,47,0.933,50,1.818,81,2.191,100,1.041,119,1.665,134,1.371,137,3.218,145,2.455,146,1.371,199,2.013,209,2.04,215,3.439,246,4.056,277,2.412,326,1.714,342,2.225,412,2.647,431,3.218,499,3.218,569,3.439,673,3.218,746,4.129,770,3.729,816,2.761,817,3.264,823,4.467,845,2.546,878,2.647,1022,3.729,1133,3.439,1589,3.439,1620,3.917,1622,3.573,1641,3.729,1679,3.729,1717,3.917,1804,2.89,1867,3.917,1881,4.152,2068,4.152,2085,3.729,2086,6.558,2103,4.944,2104,4.944,2105,4.944,2106,4.944,2107,4.944,2108,4.944,2109,4.944,2110,4.944,2111,4.944,2112,4.944,2113,4.944]],["t/492",[3,0.748,31,0.905,46,1.949,47,0.916,65,2.549,95,1.975,103,2.836,154,3.507,156,3.66,185,2.453,193,3.067,195,2.328,201,2.217,264,2.368,319,2.409,327,2.547,339,3.261,412,2.598,418,2.453,462,2.71,566,3.667,742,2.328,783,2.71,817,2.788,829,3.159,832,3.376,838,5.998,848,2.771,873,3.285,876,3.507,881,4.384,994,6.288,1022,3.66,1087,4.075,1136,4.95,1339,3.66,1340,3.507,1392,3.507,1464,3.844,1607,4.075,1662,4.384,1669,4.075,1761,5.426,1803,3.66,1860,4.95,1941,6.187,2081,5.751,2114,3.844,2115,4.852,2116,4.852,2117,4.384,2118,4.852,2119,4.852,2120,4.384,2121,4.852,2122,4.852,2123,4.384,2124,4.852]],["t/494",[40,4.285,47,1.258,63,3.095,100,0.865,324,4.819,498,4.214,817,4.122,826,4.638,833,5.282,878,3.57,886,3.723,901,4.638,913,3.994,1038,4.638,1131,6.023,1533,4.819,1589,4.638,1664,4.638,1804,3.897,2087,5.029,2125,6.667,2126,6.023,2127,6.023,2128,5.282,2129,5.599]],["t/496",[3,1.458,12,3.427,13,1.489,16,1.84,26,1.582,28,2.517,47,1.023,52,3.772,53,2.517,73,4.554,100,0.96,102,2.321,103,3.17,123,1.777,126,3.028,140,3.249,146,1.071,175,4.296,182,2.741,190,3.434,195,2.601,280,3.096,296,3.096,538,4.296,547,2.301,808,2.601,812,2.301,1066,3.919,1224,3.919,1411,3.772,1412,3.919,1443,4.554,1720,4.296,1735,3.53,1793,4.899,1904,4.899,2130,8.42,2131,5.423,2132,6.67,2133,4.899,2134,5.423,2135,5.423,2136,4.554,2137,4.899]],["t/498",[1044,5.172]],["t/500",[54,4.034,100,1.191,116,1.548,126,2.494,140,2.675,182,2.257,185,2.257,190,2.073,340,2.746,453,2.907,462,2.494,560,3.227,570,2.257,742,2.142,813,4.201,920,3.001,932,4.079,966,3.001,967,3.369,973,4.664,996,6,1034,3.001,1042,3.538,1097,3.538,1227,3.107,1277,3.001,1314,2.907,1430,3.227,1463,4.034,1495,4.49,1502,4.034,1693,2.907,1698,4.034,1717,6.004,1719,3.538,1841,3.75,1968,5.831,1985,3.538,1999,3.538,2000,3.75,2073,5.42,2085,5.717,2086,3.369,2138,3.75,2139,4.466,2140,6.004,2141,7.337,2142,4.466,2143,4.466,2144,4.466,2145,3.538,2146,4.466,2147,3.538,2148,4.466,2149,4.466,2150,6.454,2151,4.466]],["t/502",[146,1.587,182,4.804,193,5.077,205,4.812,260,4.301,344,4.301,2152,6.746,2153,8.033,2154,6.746]],["t/504",[16,1.322,96,2.398,119,2.135,126,3.378,146,1.195,190,2.809,260,4.262,317,2.224,343,6.005,344,4.262,565,3.824,570,3.058,603,4.793,612,3.058,669,5.182,774,4.373,843,3.116,860,3.72,996,4.373,1082,4.373,1409,4.066,1438,4.209,1874,5.081,1908,4.564,2032,5.466,2041,5.081,2132,4.793,2140,4.793,2141,4.373,2154,5.081,2155,6.05,2156,6.05,2157,6.05,2158,5.466,2159,5.466,2160,4.564]],["t/506",[8,5.633,31,0.627,146,1.086,150,3.523,190,2.553,319,2.73,412,3.999,523,4.618,545,3.974,593,3.005,774,3.974,829,3.579,848,4.264,909,4.148,996,5.397,1136,6.574,1208,4.968,1267,4.968,1443,6.271,1719,4.356,1865,6.747,2085,5.633,2086,4.148,2140,6.718,2161,4.968,2162,7.468,2163,6.747,2164,5.499,2165,5.499,2166,5.499,2167,5.499,2168,4.968,2169,5.499,2170,5.499,2171,7.468,2172,5.499,2173,5.499,2174,4.356,2175,5.499]],["t/508",[84,3.24,146,1.4,182,3.584,193,4.481,205,4.247,238,3.401,260,3.796,265,6.404,313,2.925,344,3.796,345,5.953,774,5.123,885,5.347,996,5.123,1500,6.404,1623,5.123,2128,5.616,2132,5.616,2154,5.953,2161,6.404,2176,7.089,2177,7.089,2178,7.089]],["t/510",[3,1.114,16,2.113,28,1.91,47,1.364,70,2.465,95,1.675,97,3.657,99,2.793,100,1.158,102,1.908,123,1.992,145,2.043,146,1.201,151,2.974,175,3.26,177,2.405,178,2.765,179,1.771,182,2.08,246,2.405,247,2.08,289,3.642,318,1.771,442,2.465,493,3.26,496,2.862,520,3.26,547,3.784,548,5.105,746,2.119,799,3.201,808,4.639,817,1.675,873,2.916,887,4.393,889,2.08,896,3.13,923,2.862,1044,2.405,1092,2.405,1312,2.53,1431,3.26,1442,3.103,1639,3.455,1708,3.26,1831,4.085,1936,3.455,2073,3.455,2179,4.114,2180,3.717,2181,4.114]],["t/512",[3,1.199,8,3.529,10,2.505,28,2.172,140,2.803,142,2.409,146,1.537,176,3.381,193,4.218,201,2.138,230,3.144,257,3.929,260,2.505,304,1.931,333,3.046,339,3.144,344,2.505,412,2.505,445,3.707,518,3.046,560,3.381,570,3.374,603,3.707,645,4.227,720,2.957,799,2.396,813,3.046,817,1.905,885,3.529,909,3.529,996,4.823,1249,2.735,1348,3.929,1353,3.255,1412,3.381,1471,3.929,1478,3.255,1513,3.381,1617,3.255,1619,2.803,1622,3.381,1641,3.529,1720,5.287,1999,3.707,2085,5.868,2086,3.529,2138,3.929,2140,6.72,2141,5.622,2159,4.227,2160,3.529,2163,4.227,2174,3.707,2182,4.227,2183,4.679,2184,4.679,2185,4.679,2186,6.029,2187,4.227,2188,6.029,2189,4.679,2190,4.679]],["t/514",[3,0.878,16,1.245,47,1.742,50,2.095,64,3.602,95,3.516,96,2.259,97,2.259,102,1.788,103,3.331,127,2.991,190,2.646,209,2.351,277,2.78,327,2.991,390,3.331,395,2.935,493,4.515,496,3.964,547,3.664,799,2.046,808,4.143,812,2.418,831,3.602,873,2.734,896,3.94,898,4.98,991,3.602,1043,4.786,1084,4.786,1513,4.118,1735,4.98,2152,4.786,2191,5.148,2192,5.148,2193,5.699,2194,5.699,2195,5.148]],["t/516",[12,2.434,16,1.519,41,2.251,50,2.128,70,2.307,95,2.356,102,1.816,132,3.335,140,2.307,143,2.784,144,3.052,190,1.788,199,1.568,219,3.232,238,1.848,250,4.585,279,1.76,280,2.199,296,2.199,305,1.947,346,3.052,547,3.28,570,2.926,629,2.784,649,2.368,742,1.848,746,1.984,793,4.86,808,3.335,812,1.634,845,1.984,848,4.414,877,2.905,886,2.151,894,4.585,912,3.558,939,4.585,1021,2.784,1038,2.679,1044,2.251,1066,2.784,1081,2.905,1097,3.052,1104,2.784,1246,3.235,1314,2.507,1361,3.052,1410,3.052,1508,3.052,1604,3.052,1643,4.86,1655,3.052,1723,2.784,1727,4.585,1808,3.48,1818,3.48,1862,2.905,1992,2.679,2093,5.508,2132,4.585,2137,3.48,2141,4.183,2191,3.48,2192,3.48,2196,7.582,2197,4.585,2198,6.25,2199,5.024,2200,5.787,2201,3.48,2202,6.28,2203,3.48]],["t/518",[12,4.009,16,1.386,47,1.197,70,3.8,72,3.708,193,4.009,225,3.15,240,5.026,277,3.095,279,2.899,305,3.207,342,2.854,390,3.708,547,2.692,808,3.939,877,4.785,886,3.542,896,3.267,1081,4.785,1082,4.585,1104,4.585,1508,5.026,1643,5.327,1727,6.505,1735,4.13,1828,5.327,1860,5.934,2077,5.026,2196,8.085,2199,4.585]],["t/520",[247,3.684,574,5.214,746,5.214,793,6.119,1319,5.496,1727,5.773,2093,5.773,2196,7.525,2197,5.773,2204,7.287,2205,7.287,2206,7.287,2207,7.287]],["t/522",[16,0.859,17,1.986,42,1.667,53,3.266,96,1.558,97,1.558,125,2.964,143,2.839,179,3.028,203,2.64,238,1.885,241,3.299,247,1.986,250,6.185,304,3.221,306,2.839,308,1.48,346,3.113,496,2.733,518,2.558,536,3.299,540,3.549,547,3.546,565,2.483,567,2.839,578,2.558,648,3.299,670,3.113,739,2.147,742,1.885,808,3.375,826,2.733,832,2.733,848,3.354,873,1.885,896,3.025,912,2.416,967,4.431,1034,2.64,1217,2.733,1227,2.733,1312,2.416,1361,3.113,1423,2.964,1604,4.654,1619,2.354,1623,2.839,1655,3.113,1658,3.549,1693,2.558,1750,2.839,1862,5.889,1992,2.733,2019,2.839,2117,3.549,2133,3.549,2136,3.299,2152,3.299,2158,3.549,2186,7.053,2198,6.614,2199,4.245,2201,3.549,2202,5.307,2208,5.874,2209,5.874,2210,3.929,2211,3.929,2212,3.929,2213,3.929,2214,3.929,2215,3.929,2216,3.113,2217,3.929,2218,3.929,2219,3.929,2220,3.929]],["t/524",[10,4.563,17,3.399,135,3.931,146,1.328,179,2.894,304,2.775,313,2.775,511,3.122,574,5.066,746,5.066,820,7.7,1387,4.866,1702,5.647,1943,5.072,2198,5.072,2221,6.724,2222,6.724,2223,6.724,2224,6.724,2225,6.724]],["t/526",[31,0.435,81,1.691,95,1.553,123,1.25,147,1.386,150,1.8,157,2.904,168,1.928,229,2.483,238,1.83,241,3.203,264,2.803,304,1.574,306,2.757,308,1.437,309,2.411,360,1.861,505,2.563,521,4.552,526,3.203,547,3.929,565,2.411,566,2.042,572,2.877,739,2.085,808,4.704,812,2.932,826,2.653,873,2.756,874,3.203,896,1.964,912,2.345,923,3.997,967,4.334,971,2.345,1021,2.757,1072,2.877,1117,4.729,1314,2.483,1319,2.877,1374,4.552,1465,3.203,1495,3.997,1507,3.203,1513,2.757,1547,3.203,1604,5.475,1616,2.757,1719,3.022,1751,3.203,1805,3.203,1867,5.475,1905,3.203,2002,3.446,2041,3.203,2077,3.022,2141,6.267,2145,3.022,2198,4.334,2226,3.814,2227,3.814,2228,4.825,2229,3.814,2230,3.814,2231,2.877,2232,3.446,2233,3.814,2234,3.814,2235,5.745,2236,3.814,2237,3.814,2238,5.745,2239,3.814,2240,3.814,2241,3.814]],["t/528",[17,3.863,41,4.467,90,6.054,304,3.153,462,4.267,574,4.75,746,4.75,973,5.523,2141,7.161,2242,7.642,2243,7.642]],["t/530",[47,1.759,53,3.095,132,4.066,164,4.48,173,3.433,208,4.214,277,3.253,424,3.57,511,3.095,547,2.829,808,4.066,812,2.829,894,6.716,896,3.433,919,5.599,989,6.023,1081,5.029,1135,5.029,1456,5.599,2127,6.023,2182,6.023,2199,4.819,2244,6.667,2245,6.023,2246,6.667]],["t/532",[31,0.855,47,1.414,132,3.596,177,4.381,219,4.185,326,2.598,574,4.695,746,4.695,817,3.051,894,5.938,1616,5.417,1956,6.295,2245,6.772,2247,7.496,2248,7.496]],["t/534",[16,1.703,140,4.669,146,1.539,148,4.792,318,3.354,393,6.174,901,5.422,1044,4.555,1726,5.237,1804,4.555,2138,6.545,2147,6.174,2216,6.174]],["t/536",[3,0.904,16,1.916,47,1.472,95,2.389,97,2.327,99,2.267,102,1.842,140,3.516,168,2.967,179,2.526,182,2.967,205,4.674,207,4.083,407,3.944,431,3.821,574,4.81,746,4.81,808,2.815,831,3.709,887,4.242,1044,3.431,1080,4.65,1735,3.821,1862,4.427,1914,4.929,2001,7.918,2160,4.427,2195,5.302,2249,5.869,2250,5.869,2251,5.869,2252,5.869,2253,5.869,2254,5.869]],["t/538",[3,1.425,100,0.851,123,2.148,168,3.314,318,2.822,319,3.255,326,2.272,328,4.405,395,3.376,552,4.268,574,3.376,742,4.023,798,5.405,843,3.376,911,3.927,912,4.031,1619,3.927,1647,5.635,1823,4.738,1831,4.405,1844,6.326,1969,4.945,2255,5.923,2256,5.923,2257,5.505]],["t/540",[3,0.981,17,1.69,26,0.975,30,2.173,47,0.631,53,1.552,63,1.552,100,1.009,119,1.246,123,2.548,125,2.522,126,2.9,133,0.985,142,1.721,145,1.66,151,2.416,160,2.176,168,3.219,174,2.325,180,3.613,195,1.604,199,2.114,201,2.91,252,2.113,270,4.361,277,1.631,309,2.113,319,1.66,326,2.208,387,1.954,397,1.528,473,1.909,499,2.176,547,1.418,564,2.522,566,1.79,574,3.28,582,2.176,593,3.481,612,1.69,649,2.055,783,1.867,798,3.036,808,1.604,817,2.114,843,4.239,847,2.648,848,1.909,886,1.867,912,2.055,932,2.113,939,2.648,944,2.055,1019,2.113,1034,2.246,1074,2.113,1191,2.807,1230,2.522,1277,2.246,1307,3.02,1377,2.648,1457,2.522,1510,2.522,1533,2.416,1613,2.522,1614,4.361,1619,2.003,1647,4.826,1654,2.807,1664,2.325,1667,4.361,1693,2.176,1787,4.361,1806,2.648,1820,3.49,1830,2.648,1831,2.246,1834,3.02,1844,4.804,1861,3.02,1943,2.522,1974,2.648,2019,2.416,2025,2.055,2058,2.807,2087,3.917,2257,2.807,2258,3.02,2259,3.343,2260,3.02,2261,3.343,2262,3.343,2263,3.343,2264,3.343,2265,3.343,2266,3.343,2267,3.343,2268,5.193,2269,3.02,2270,3.343,2271,3.02,2272,3.343,2273,3.343]],["t/542",[45,1.757,50,1.301,63,1.643,70,2.12,199,1.441,201,1.617,243,3.03,338,4.094,343,4.094,418,2.743,423,4.771,454,2.558,464,2.176,473,2.021,527,1.789,612,2.743,665,2.237,669,4.297,783,1.976,797,4.094,804,2.972,843,3.812,880,2.804,892,2.558,910,6.1,973,3.922,1021,2.558,1090,2.972,1478,2.462,1480,4.3,1771,2.972,1831,2.378,1844,7.142,2000,2.972,2025,4.058,2044,3.197,2274,6.601,2275,6.601,2276,5.427,2277,3.197,2278,3.197,2279,3.539,2280,3.539,2281,3.539,2282,3.539,2283,3.539,2284,3.539,2285,5.963,2286,3.539,2287,4.557,2288,3.539,2289,3.197,2290,3.197,2291,3.197,2292,4.903,2293,3.539,2294,3.539,2295,3.539,2296,4.903,2297,3.539,2298,3.539,2299,3.197,2300,3.539,2301,3.539,2302,5.427,2303,3.539,2304,5.427,2305,5.427,2306,3.539,2307,3.539,2308,3.539,2309,3.539,2310,3.197,2311,3.539,2312,3.539,2313,3.539,2314,3.539,2315,3.197,2316,3.539,2317,3.539,2318,3.539,2319,3.197,2320,3.197,2321,3.197,2322,3.539,2323,3.539,2324,4.903,2325,3.539]],["t/544",[3,1.248,13,0.551,16,0.979,25,0.673,30,1.433,31,0.677,43,1.915,53,0.932,62,1.054,75,1.451,97,1.775,100,0.896,102,0.63,123,1.467,126,1.121,133,0.592,142,1.034,145,0.997,146,1.045,154,1.451,160,2.229,190,2.079,199,1.823,201,1.565,304,0.829,310,2.583,316,1.307,318,1.927,319,0.997,324,1.451,326,1.187,328,3.556,338,2.583,339,1.349,340,1.235,343,3.992,379,2.052,400,2.382,423,1.451,473,1.956,483,1.269,499,2.229,529,1.397,547,1.453,566,3.18,567,2.475,574,1.764,593,1.872,611,0.98,629,1.451,649,1.235,669,3.445,742,0.963,746,1.034,747,1.349,783,2.955,798,1.174,799,1.9,816,1.121,843,4.731,886,1.121,910,1.397,911,2.052,913,2.683,921,3.378,939,1.591,967,1.515,983,1.349,1019,2.165,1111,3.094,1117,1.235,1133,1.397,1168,1.451,1191,1.686,1277,2.301,1292,3.761,1354,1.814,1357,1.814,1360,1.349,1387,1.956,1410,1.591,1435,1.686,1445,1.591,1457,1.515,1510,1.515,1608,1.814,1617,1.397,1619,2.683,1624,1.591,1626,1.814,1647,2.301,1667,1.686,1682,1.591,1690,1.515,1701,1.686,1731,1.814,1771,1.686,1773,1.515,1787,1.686,1823,2.475,1824,1.686,1831,3.009,1840,3.761,1842,1.814,1844,4.48,1851,1.451,1881,1.686,1882,1.686,1893,1.686,1897,1.686,1902,1.814,1957,2.876,1969,1.515,1974,1.591,1985,1.591,1992,1.397,2019,1.451,2025,2.753,2043,1.814,2087,2.583,2099,1.814,2128,1.591,2147,1.591,2187,1.814,2231,1.515,2256,1.814,2257,1.686,2258,1.814,2260,1.814,2277,3.094,2287,1.686,2289,1.814,2290,1.814,2291,1.814,2292,3.094,2296,1.814,2299,1.814,2310,1.814,2315,1.814,2319,4.045,2320,1.814,2321,3.094,2324,1.814,2326,1.814,2327,2.008,2328,3.425,2329,2.008,2330,2.008,2331,1.686,2332,2.008,2333,2.008,2334,1.814,2335,2.008,2336,2.008,2337,1.686,2338,2.008,2339,2.008,2340,2.008,2341,3.425,2342,2.008,2343,1.686,2344,3.425,2345,2.008,2346,3.425,2347,4.478,2348,3.094,2349,2.008,2350,2.008,2351,3.425,2352,2.008,2353,2.008,2354,2.008]],["t/546",[3,1.57,25,2.108,28,2.921,114,4.055,149,5.685,173,3.241,190,3.792,225,3.124,318,2.708,381,5.685,393,4.986,488,4.548,630,5.903,986,5.903,1021,4.548,1044,3.678,1133,4.378,1179,5.685,1505,6.859,1518,4.986,1652,5.285,2334,5.685,2355,6.293,2356,5.285,2357,5.685,2358,5.285]],["t/548",[3,1.196,13,2.132,16,1.273,28,2.704,114,2.892,116,2.019,119,1.863,151,5.611,173,3,195,3.724,208,3.682,209,2.404,225,3.855,280,3.326,308,2.195,338,4.394,342,2.621,397,2.662,424,3.119,498,3.682,538,4.615,560,4.21,578,3.792,590,4.394,616,3.915,929,4.615,986,5.054,1058,5.263,1074,3.682,1108,4.892,1117,3.582,1310,3.682,1458,4.892,1641,5.856,1723,4.21,1761,4.615,2359,5.826,2360,5.263,2361,4.892]],["t/550",[3,1.563,13,1.375,17,4.419,30,2.929,31,0.571,81,3.578,93,2.443,114,4.008,145,2.486,151,3.619,168,3.539,198,5.88,209,2.066,280,2.859,319,2.486,397,2.288,424,2.681,568,4.205,689,3.967,831,3.165,932,3.165,986,5.255,988,5.88,1074,3.165,1117,3.079,1419,4.524,1457,3.777,1617,3.483,1720,3.967,2089,3.777,2199,3.619,2231,3.777,2357,4.524,2358,4.205,2362,7.001,2363,5.007,2364,5.007,2365,5.007,2366,7.001,2367,5.007,2368,5.007,2369,5.007,2370,5.007,2371,6.325,2372,5.007]],["t/552",[3,1.496,13,2.288,16,1.161,17,4.211,23,2.845,25,1.78,28,2.466,31,0.606,93,2.592,114,4.136,170,6.6,308,2.002,319,2.638,326,1.841,342,2.39,473,3.033,568,7.53,772,3.105,896,2.736,985,4.461,986,6.32,1074,3.358,1102,3.84,1314,5.423,1441,4.209,1679,4.007,1683,4.007,2360,6.59,2361,4.461,2373,5.313,2374,4.799,2375,6.59,2376,4.799,2377,5.313,2378,4.461]],["t/554",[3,1.496,11,1.853,13,1.689,31,0.832,56,3.51,65,1.556,73,3.51,81,1.853,93,2.04,114,4.258,163,5.165,167,4.004,168,3.689,169,2.908,170,3.312,173,3.167,174,2.908,203,2.809,251,2.504,264,2.04,274,2.908,276,2.443,280,3.512,286,3.595,305,2.113,316,4.004,369,3.153,473,3.512,498,2.642,525,7.27,534,3.776,665,2.642,666,4.75,667,3.021,689,3.312,728,3.51,986,5.838,1072,3.153,1249,2.443,1348,5.165,1468,3.153,1612,2.809,1683,3.153,1723,4.445,1880,3.776,2129,3.51,2180,3.776,2356,3.51,2371,3.776,2375,5.556,2379,6.15,2380,4.18,2381,6.15,2382,6.15,2383,4.18,2384,6.15,2385,4.18,2386,4.18,2387,4.18]],["t/556",[3,1.422,16,1.245,21,2.881,24,2.259,25,1.909,30,2.384,31,0.65,84,2.604,114,4.288,151,4.118,157,4.366,163,4.786,230,3.829,305,2.881,331,4.786,418,2.881,566,3.051,986,5.622,1074,3.602,1092,3.331,1093,5.148,1106,4.786,1108,4.786,1190,5.148,1392,4.118,1615,4.515,1625,5.148,1682,4.515,1735,3.71,1798,4.786,1898,4.786,2100,4.786,2216,4.515,2356,6.424,2361,4.786,2374,5.148,2378,4.786,2388,5.699,2389,5.699,2390,5.699]],["t/558",[3,0.808,20,2.699,31,0.824,47,1.869,63,2.433,72,4.835,100,0.68,123,1.718,134,1.454,146,1.428,208,4.568,219,2.927,263,4.402,326,1.817,339,3.522,352,3.412,390,3.064,746,2.699,817,2.942,843,2.699,884,3.954,920,3.522,1074,3.313,1080,5.726,1216,3.646,1306,4.153,1412,3.788,1633,5.978,1690,3.954,1783,5.451,1803,3.954,1804,3.064,1820,3.522,1851,3.788,2017,4.153,2025,3.223,2083,6.444,2255,4.735,2391,7.227,2392,4.735,2393,4.735,2394,4.735]],["t/560",[3,0.662,16,1.371,31,0.49,47,1.875,50,1.579,53,1.994,63,1.994,96,1.702,100,1.244,134,1.191,139,4.732,160,2.796,168,2.171,190,1.994,208,2.714,209,3.364,219,2.398,277,2.095,284,3.606,288,3.402,362,4.654,364,2.977,379,2.573,383,2.64,529,2.988,552,2.796,785,3.88,799,2.66,816,2.398,817,1.748,889,3.747,912,2.64,914,4.364,917,4.732,1006,3.402,1074,2.714,1080,4.97,1102,3.104,1254,5.667,1308,3.239,1438,2.988,1439,3.606,1495,2.988,1510,3.239,1614,3.606,1633,5.357,1726,2.886,1804,2.51,1820,2.886,1885,4.97,2228,5.268,2395,4.295,2396,4.295,2397,3.88,2398,5.667,2399,3.88]],["t/562",[3,0.644,10,1.365,31,0.291,42,1.775,43,1.16,47,1.815,62,2.196,63,2.469,72,2.445,81,1.13,96,1.658,100,1.248,116,0.884,133,1.567,145,2.077,146,0.504,147,0.926,160,1.66,195,2.006,203,1.713,209,3.768,215,1.774,264,2.041,277,1.244,304,2.194,318,1.097,322,3.155,332,1.923,341,2.02,343,1.923,349,1.527,362,1.456,364,1.024,390,1.49,397,1.911,412,2.24,418,2.114,431,1.66,473,1.456,483,1.611,566,2.24,669,1.66,742,2.952,746,2.154,757,1.713,760,1.713,798,1.49,816,1.424,817,1.038,819,1.923,843,3.169,876,3.843,884,1.923,889,3.111,912,1.568,917,6.47,921,3.155,923,1.774,966,1.713,1082,3.843,1134,2.141,1227,1.774,1249,1.49,1278,1.774,1360,4.135,1430,1.843,1439,2.141,1633,6.024,1701,2.141,1703,2.141,1723,3.023,1726,1.713,1804,1.49,1837,3.314,1860,1.843,1875,2.141,1885,2.02,1898,2.141,1913,2.141,1986,2.02,2018,2.141,2025,1.568,2070,2.303,2082,2.02,2083,1.843,2087,1.923,2089,1.923,2093,3.314,2100,2.141,2114,2.02,2145,2.02,2228,2.141,2378,2.141,2398,5.559,2399,6.137,2400,2.303,2401,5.318,2402,2.55,2403,2.55,2404,2.55,2405,2.55,2406,2.55,2407,2.303,2408,2.55,2409,2.55,2410,2.55,2411,2.55,2412,2.55,2413,2.55]],["t/564",[1,3.431,3,0.624,21,2.048,31,0.904,43,1.124,47,1.352,65,1.507,80,3.659,81,1.795,96,1.606,100,0.526,123,1.327,133,1.194,134,1.987,146,0.8,147,2.183,150,1.911,173,2.086,199,1.649,201,1.851,209,2.48,243,2.262,453,3.912,461,2.427,473,2.313,566,2.169,567,2.927,574,2.086,593,2.214,676,2.927,729,3.402,746,3.095,749,3.402,847,3.209,848,3.431,878,3.217,886,2.262,889,2.048,910,2.818,911,2.427,912,3.695,1022,3.055,1105,2.722,1221,3.402,1278,2.818,1464,3.209,1633,2.927,1664,2.818,1726,4.038,1804,5.183,1824,3.402,1828,3.402,1869,3.055,2025,2.49,2058,3.402,2079,3.209,2080,3.402,2082,3.209,2083,2.927,2126,3.659,2216,3.209,2269,3.659,2271,3.659,2285,3.659,2343,3.402,2348,3.659,2414,5.429,2415,4.051,2416,4.051,2417,6.009,2418,4.051,2419,4.051,2420,4.051,2421,4.051,2422,4.051,2423,4.051,2424,4.051,2425,4.051,2426,4.051,2427,4.051,2428,4.051,2429,4.051,2430,4.051]],["t/566",[1,2.279,3,0.787,12,1.522,25,0.807,31,0.678,32,1.118,42,1.022,47,1.628,50,0.886,51,1.443,63,1.118,64,1.522,72,2.987,81,1.068,95,0.981,96,0.955,100,1.021,133,0.71,139,1.817,146,0.476,147,0.875,150,1.136,165,1.24,172,2.265,190,1.853,201,1.101,202,3.011,208,1.522,209,3.247,253,1.908,257,2.023,263,3.352,264,2.493,285,1.375,304,2.109,324,1.741,327,1.264,328,1.619,339,2.682,342,1.084,346,3.162,352,1.568,358,1.676,418,2.583,431,1.568,450,2.598,454,3.693,464,2.454,473,2.918,499,1.568,558,2.176,561,1.408,566,1.29,567,1.741,570,1.218,611,1.175,720,1.522,739,1.317,746,2.055,817,0.981,843,2.632,845,2.055,848,1.375,876,1.741,878,2.137,884,1.817,889,2.018,917,3.011,920,3.434,949,1.676,966,1.619,1019,1.522,1038,1.676,1049,1.676,1054,1.741,1168,1.741,1194,1.676,1216,1.676,1278,1.676,1360,2.682,1392,1.741,1413,1.908,1426,1.908,1455,2.176,1607,2.023,1617,1.676,1633,5.686,1664,1.676,1689,2.023,1690,1.817,1750,1.741,1773,1.817,1783,1.817,1804,3.474,1843,2.176,1869,3.011,1889,2.176,1895,2.176,1899,2.176,1905,2.023,1943,1.817,1969,1.817,1984,2.176,1985,1.908,2017,4.049,2025,3.142,2079,1.908,2083,4.295,2145,1.908,2278,2.176,2287,2.023,2343,2.023,2358,2.023,2392,2.176,2393,4.617,2394,3.606,2400,4.617,2407,4.617,2414,3.606,2431,2.409,2432,3.991,2433,3.991,2434,2.409,2435,2.409,2436,2.409,2437,2.409,2438,2.409,2439,2.409,2440,2.409,2441,2.409,2442,2.409,2443,2.409,2444,2.409,2445,2.409,2446,2.409,2447,2.409,2448,2.409,2449,3.991,2450,2.409,2451,3.991,2452,2.409,2453,2.409,2454,2.409,2455,2.409,2456,2.409,2457,2.409,2458,2.023]],["t/568",[3,1.276,6,2.984,11,1.968,16,1.651,19,3.374,20,2.287,21,2.245,23,2.378,26,1.295,27,2.535,28,2.984,31,0.733,45,3.191,50,2.363,53,2.984,62,2.331,65,1.653,100,1.141,119,1.065,129,3.31,133,2.226,146,1.27,173,2.287,174,3.089,184,3.507,199,1.808,201,2.937,202,3.349,229,2.891,277,2.167,317,1.633,318,1.911,319,2.205,375,1.633,400,3.089,409,2.378,472,5.76,484,2.535,487,3.089,488,3.209,561,4.416,578,2.891,898,2.891,914,3.089,1036,3.518,1110,3.729,1224,3.209,1314,2.891,1387,3.67,1409,2.984,1420,3.729,1441,3.518,1670,4.011,1803,3.349,2459,4.44,2460,4.44,2461,4.011,2462,4.44,2463,4.44,2464,4.44,2465,4.44]],["t/570",[1,4.683,15,5.042,50,3.015,165,4.223,679,6.497,1224,5.927,1249,4.793,1641,6.186]],["t/572",[15,3.691,26,1.751,31,0.685,47,1.133,119,1.441,140,3.597,159,5.974,188,5.042,246,3.509,247,3.035,251,3.597,304,2.477,313,3.268,325,3.509,326,2.745,335,2.744,552,3.908,799,2.843,817,3.224,845,4.564,886,3.352,1105,4.035,1298,5.424,1338,5.042,1506,4.177,1619,3.597,1620,4.757,1621,5.042,1622,4.339,1623,4.339,1796,5.042,1901,5.424,2128,4.757,2199,4.339,2466,6.004,2467,6.004]],["t/574",[3,0.708,13,1.81,31,0.751,41,2.687,99,1.776,100,0.597,102,1.442,119,1.848,140,2.754,142,2.367,146,0.908,179,1.978,190,2.134,242,3.642,247,3.331,264,2.243,285,2.625,304,2.719,464,4.736,529,3.198,567,4.762,572,3.467,574,2.367,684,4.301,742,2.205,748,3.86,783,2.567,800,3.322,813,2.992,817,1.871,831,2.905,873,2.205,986,2.992,1092,2.687,1315,3.642,1319,5.81,1342,5.221,1387,5.293,1411,3.198,1442,3.467,1471,3.86,1501,4.153,1616,3.322,1638,4.153,1696,3.322,1702,3.86,1721,4.153,1724,4.153,1862,3.467,1867,6.103,2019,3.322,2188,4.153,2468,4.597,2469,4.597,2470,4.597,2471,4.597,2472,4.597,2473,4.597,2474,4.597,2475,4.597,2476,4.597,2477,4.597]],["t/576",[24,2.309,31,1.194,84,2.662,155,3.326,204,5.811,327,3.058,363,2.309,379,3.49,527,3.925,565,3.682,896,3,900,5.348,987,5.263,1044,3.405,1094,4.615,1342,4.615,1732,5.263,1733,5.263,2478,5.826,2479,5.826,2480,4.892,2481,7.764,2482,5.263,2483,5.263]],["t/578",[31,0.723,204,3.8,261,6.333,279,2.899,289,5.454,900,3.207,911,3.8,1275,4.585,1423,4.785,1429,4.413,1735,4.13,1736,8.697,1737,8.224,1738,5.731,1739,6.895,1740,4.785,1741,5.731,1742,5.731,1743,5.731,1744,5.731,1745,5.731,1746,5.731,1747,5.731,1748,5.026,1749,5.731,1750,4.585]],["t/580",[12,2.168,13,0.942,25,1.775,31,0.738,40,1.734,46,1.378,84,1.568,114,1.703,184,1.593,223,3.686,236,1.734,326,1.189,327,2.781,342,2.384,363,2.886,407,3.561,462,1.916,481,2.881,483,2.168,498,3.349,511,2.46,527,3.273,611,3.159,612,2.679,630,2.479,667,2.479,684,2.959,720,2.168,764,3.099,798,2.005,832,2.387,896,1.767,900,4.647,991,2.168,1059,3.099,1074,2.168,1135,2.588,1194,2.387,1198,3.099,1230,2.588,1246,2.881,1283,2.718,1377,2.718,1429,3.686,1430,2.479,1433,2.718,1498,2.055,1518,2.718,1556,3.099,1620,2.718,1678,3.099,1707,2.718,1734,2.881,1740,4.883,1751,4.45,1756,2.588,1760,3.099,1768,2.881,1792,3.099,1914,2.881,2052,2.881,2089,2.588,2114,4.198,2129,2.881,2160,2.588,2174,2.718,2232,3.099,2337,2.881,2483,3.099,2484,5.437,2485,4.787,2486,5.299,2487,5.848,2488,5.299,2489,3.431,2490,3.431,2491,3.431,2492,3.431,2493,3.431,2494,4.787,2495,3.431,2496,3.099,2497,3.431,2498,4.198,2499,2.718,2500,3.431,2501,3.099,2502,6.115,2503,2.881,2504,3.431,2505,3.431,2506,3.431,2507,3.431,2508,5.299,2509,5.299,2510,3.431]],["t/582",[1,2.199,20,1.984,21,3.514,24,1.527,31,0.439,40,1.947,84,3.177,87,3.036,94,1.848,114,3.452,141,2.905,150,1.817,155,2.199,165,1.984,209,1.589,219,2.151,236,2.926,245,5.228,327,3.649,331,3.235,335,1.76,342,1.733,397,1.76,498,2.434,527,2.926,552,2.507,570,2.926,611,3.392,630,2.784,636,3.052,742,1.848,760,2.588,896,1.984,900,4.189,966,3.889,983,3.889,1019,2.434,1067,5.024,1074,2.434,1168,2.784,1283,4.585,1505,3.235,1518,4.585,1683,4.365,1707,4.585,1848,5.228,1849,3.48,1882,3.235,1884,3.48,1986,3.052,2089,4.365,2174,3.052,2231,5.244,2337,4.86,2376,5.228,2458,3.235,2484,3.235,2485,3.48,2496,3.48,2502,4.86,2511,8.286,2512,3.852,2513,3.852,2514,3.852,2515,3.852,2516,5.787,2517,3.852,2518,3.852,2519,3.852,2520,3.852,2521,3.852,2522,3.852,2523,3.852,2524,3.852,2525,3.852,2526,3.852]],["t/584",[30,2.591,31,0.706,50,2.277,55,3.316,65,2.305,84,2.83,199,2.521,204,3.71,276,3.62,289,3.71,325,3.62,342,2.787,363,3.205,461,3.71,612,3.131,900,4.086,1104,4.476,1216,4.309,1249,3.62,1377,4.907,1429,4.309,1634,7.303,1779,5.595,1800,5.201,1801,5.201,1831,4.162,2231,4.672,2527,6.193,2528,8.084,2529,5.595,2530,6.193,2531,8.084,2532,6.193,2533,6.193]],["t/586",[11,2.137,13,1.325,31,0.902,84,2.204,179,2.076,204,2.889,236,3.447,333,4.439,342,4.237,363,2.703,424,2.582,527,3.447,720,4.31,860,2.965,896,2.484,900,5.262,1034,6.758,1054,3.485,1283,3.821,1404,4.05,1645,4.357,1693,6.546,1756,3.638,1790,4.05,1817,4.357,1986,3.821,2114,3.821,2160,3.638,2458,4.05,2480,4.05,2484,4.05,2534,4.823,2535,6.819,2536,4.823,2537,4.357]],["t/588",[25,1.829,31,0.848,133,1.609,145,2.711,204,3.271,218,4.933,314,4.933,326,2.576,340,3.357,342,3.344,363,2.165,481,4.586,483,3.451,498,3.451,649,3.357,798,3.192,832,3.799,900,4.585,1249,3.192,1387,3.118,1589,3.799,1679,4.119,1740,4.119,1756,4.119,1761,4.326,1795,7.096,1885,4.326,1936,4.586,1970,4.933,2120,4.933,2197,4.326,2498,4.326,2499,4.326,2537,4.933,2538,4.586,2539,5.461,2540,5.461,2541,5.461,2542,5.461,2543,5.461,2544,5.461,2545,6.715,2546,4.586,2547,5.461,2548,5.461,2549,5.461,2550,5.461]],["t/590",[31,0.999,40,3.552,84,4.003,197,5.299,204,4.209,326,2.435,363,2.785,498,4.44,900,4.826,1616,5.078,2052,5.9,2168,6.347,2499,5.566,2503,5.9,2545,6.347,2546,5.9,2551,7.026,2552,7.026,2553,7.026,2554,7.026]],["t/592",[31,1.005,40,3.584,61,5.123,64,4.481,132,3.401,157,3.584,204,5.278,209,2.925,350,5.347,461,4.247,760,4.764,896,3.651,900,5.069,983,4.764,991,4.481,1623,5.123,1699,5.953,1796,5.953]],["t/594",[31,0.863,40,3.826,62,3.973,204,4.534,407,5.086,900,3.826,1297,6.837,1612,5.086,2480,6.355,2498,7.265,2555,6.837,2556,6.837,2557,6.837,2558,6.837,2559,6.837]],["t/596",[25,0.957,28,1.326,31,0.655,34,2.064,38,1.711,50,1.05,51,2.747,52,1.987,61,3.315,62,1.499,84,2.096,95,1.163,96,1.132,127,2.407,145,2.277,152,2.263,185,1.444,197,3.459,204,2.747,209,1.892,219,1.595,236,1.444,276,1.669,278,2.58,289,2.747,313,1.179,318,1.229,326,1.59,329,4.963,338,2.154,340,1.756,342,2.064,344,1.529,349,1.711,363,1.132,379,1.711,424,1.529,473,1.631,488,4.153,498,1.805,563,2.58,684,2.561,739,1.561,760,3.082,765,2.398,804,2.398,900,3.326,985,2.398,988,2.398,997,2.263,1194,3.998,1292,2.398,1314,1.859,1353,1.987,1410,2.263,1432,2.58,1616,3.315,1619,2.747,1673,2.263,1693,1.859,1708,2.263,1715,2.58,1722,2.58,1723,2.064,1735,1.859,1739,2.398,1748,2.263,1766,2.58,1770,2.58,1790,2.398,1820,1.919,1859,4.143,1907,2.154,1999,2.263,2123,2.58,2147,2.263,2197,2.263,2198,2.154,2326,2.58,2331,2.398,2397,2.58,2461,4.143,2482,2.58,2498,2.263,2499,5.708,2501,2.58,2502,2.398,2503,2.398,2529,4.143,2538,2.398,2546,2.398,2555,5.191,2556,7.835,2557,4.143,2558,8.618,2560,2.856,2561,2.856,2562,4.586,2563,2.856,2564,5.191,2565,2.856,2566,2.856,2567,2.856,2568,2.856,2569,2.856,2570,2.856,2571,2.856,2572,2.856,2573,2.856,2574,2.856,2575,2.856,2576,2.856,2577,2.856,2578,2.856,2579,2.856,2580,2.856,2581,2.856,2582,2.856,2583,2.856,2584,2.856,2585,2.856,2586,2.856,2587,2.856,2588,2.856,2589,2.856,2590,2.856]],["t/598",[31,1.094,61,3.381,62,2.456,64,4.218,148,2.877,186,3.707,204,5.749,276,2.735,280,2.672,289,2.803,326,1.622,353,3.529,379,2.803,397,2.138,461,2.803,523,3.929,765,3.929,772,2.735,898,3.046,900,5.048,999,3.929,1102,3.381,1120,3.707,1194,3.255,1249,2.735,1306,3.707,1353,3.255,1469,3.929,1612,3.144,1619,3.998,1672,3.929,1783,3.529,1797,4.227,1798,3.929,1799,4.227,1800,3.929,1801,3.929,1802,4.227,1831,3.144,2068,5.604,2136,3.929,2203,4.227,2331,3.929,2487,4.227,2494,4.227,2538,3.929,2559,4.227,2564,4.227,2591,6.674,2592,4.679,2593,4.679,2594,4.679,2595,4.679,2596,4.679,2597,4.679,2598,4.679]]],"invertedIndex":[["",{"_index":43,"t":{"4":{"position":[[212,1]]},"6":{"position":[[710,2],[806,2],[846,1]]},"32":{"position":[[154,2],[205,1],[247,2],[455,1],[463,2],[466,2],[469,1],[475,1],[477,2],[529,1],[545,1],[550,1],[552,2],[642,2],[697,1],[699,1],[701,2],[801,1],[808,1],[823,1],[825,1],[827,2],[830,2]]},"36":{"position":[[101,1],[119,1],[139,2],[183,1],[232,3],[256,2],[306,2]]},"38":{"position":[[108,1],[128,1],[148,2],[330,1],[361,1],[381,2],[464,1],[505,3]]},"40":{"position":[[93,1],[124,1],[144,2],[189,1],[223,2],[277,1],[308,3],[326,1],[471,1],[517,2],[559,2],[607,3]]},"42":{"position":[[118,2],[181,1]]},"44":{"position":[[137,2],[187,1],[276,3],[280,2],[344,1],[389,2],[461,1],[491,3]]},"46":{"position":[[172,2],[219,1],[235,2],[238,1],[240,2],[320,2],[393,1],[461,2],[464,2],[515,1],[557,2]]},"54":{"position":[[301,1]]},"58":{"position":[[266,1],[305,1],[307,3]]},"62":{"position":[[188,1],[270,1],[272,3]]},"83":{"position":[[169,1],[192,1],[227,2],[281,1],[422,1],[438,1],[483,2],[535,1],[581,2],[628,2],[669,3],[673,2],[745,1],[755,3],[889,1],[905,1],[950,2],[1002,1],[1047,2],[1145,2]]},"85":{"position":[[169,1],[204,1],[239,2],[308,1],[332,2],[417,1],[577,1],[593,1],[634,2],[683,1],[729,2],[776,2],[820,3],[824,2],[896,1],[906,3],[1058,1],[1074,1],[1115,2],[1164,1],[1207,2],[1305,2]]},"87":{"position":[[570,1],[605,1],[647,1],[689,1],[741,1],[779,1],[820,2],[880,2],[940,2],[1026,1],[1071,1],[1104,2],[1177,1],[1232,2],[1279,2],[1349,2],[1403,3],[1407,2],[1473,1],[1524,2],[1571,2],[1644,2],[1698,3],[1702,2],[1876,1],[1886,3],[1986,1],[1996,3],[2235,1],[2256,1],[2298,1],[2314,1],[2359,2],[2413,2],[2497,1],[2521,2],[2576,1],[2671,3],[2675,2],[2750,1],[2766,2],[2769,1],[2771,2],[2836,2],[2916,1],[2966,1],[3000,2],[3060,2],[3186,1],[3237,1],[3244,1],[3299,1],[3301,2]]},"89":{"position":[[460,1],[485,1],[513,2],[578,1],[621,1],[645,2],[707,1],[755,1],[781,2],[852,1],[908,1]]},"93":{"position":[[301,1],[442,1],[447,1],[590,1],[644,1]]},"99":{"position":[[66,1],[117,1]]},"113":{"position":[[1158,1]]},"117":{"position":[[167,1],[244,1]]},"121":{"position":[[657,5],[754,1]]},"135":{"position":[[192,1],[226,1],[417,1],[513,1]]},"137":{"position":[[540,1],[563,1],[622,1],[949,1],[972,1],[1087,1],[1125,1]]},"139":{"position":[[295,1],[321,1],[378,1],[561,1],[587,1]]},"141":{"position":[[288,1],[311,1],[696,1],[715,1],[733,1]]},"151":{"position":[[142,1],[160,1],[180,2],[244,1],[293,3]]},"153":{"position":[[154,1],[172,1],[192,2],[240,1],[304,3],[464,2],[524,1],[526,1],[702,2],[705,2],[757,1],[806,3]]},"155":{"position":[[280,1],[298,1],[325,1],[344,1],[374,2],[412,1],[454,2],[506,1],[508,1],[545,2],[548,2],[597,1],[631,1],[648,1],[698,2],[701,2],[704,2],[707,3],[820,1],[830,1],[860,2],[909,1],[943,1],[960,1],[1035,2],[1038,2],[1041,2],[1044,3]]},"157":{"position":[[93,1],[111,1],[138,1],[150,1],[185,1],[213,1],[243,2],[303,1],[305,1],[481,2],[484,2],[536,1],[538,1],[575,2],[578,2],[644,1],[678,1],[718,1],[776,2],[779,2],[782,2],[785,3]]},"159":{"position":[[130,1],[167,1],[198,1],[247,3],[282,2]]},"167":{"position":[[105,1],[124,1],[138,1],[187,1],[407,1],[503,1]]},"173":{"position":[[101,1],[119,1],[139,2],[183,1],[232,3]]},"175":{"position":[[94,1],[125,1],[145,2]]},"177":{"position":[[99,1],[115,1],[135,2],[180,1],[214,2],[256,1]]},"181":{"position":[[458,2],[505,1],[521,2],[524,1],[526,2],[602,2],[605,2]]},"183":{"position":[[358,2],[401,1],[441,2],[514,1],[516,2],[563,1],[615,2],[618,1],[630,1],[641,2],[709,2],[712,2],[715,1]]},"186":{"position":[[158,1],[174,1],[194,2],[247,1],[249,1],[290,2],[293,2],[346,1],[348,1],[388,2],[391,2],[518,1]]},"188":{"position":[[187,1],[194,1],[214,2],[261,1],[263,3],[282,1],[298,2],[301,1],[331,2],[373,2],[428,2],[431,2],[470,2],[601,2],[640,1],[686,1],[726,2],[764,2],[890,1],[908,3]]},"190":{"position":[[150,2],[186,1],[216,1],[272,2],[322,1],[324,1],[338,1],[360,2],[363,2],[366,2],[493,1]]},"198":{"position":[[244,1],[264,1],[286,2],[335,1],[337,1],[362,2],[426,2],[532,2],[577,1],[688,1],[698,1],[735,1],[737,2],[776,1],[801,1],[803,1],[816,2],[852,2],[915,2],[980,1]]},"200":{"position":[[151,1],[173,1],[196,1],[206,1],[235,1],[266,1],[355,1],[395,1],[441,1],[457,2],[540,1],[546,2],[549,1],[584,2],[587,2],[626,1],[651,1],[653,1],[666,2],[725,1],[775,1],[806,3],[824,1],[855,2],[918,1],[1054,2],[1109,1],[1117,2],[1120,2],[1123,2],[1133,1],[1135,2],[1255,2],[1258,1],[1421,3],[1585,2],[1670,3],[1674,1],[1676,1],[1963,1],[1981,1],[1999,1],[2079,1],[2092,1],[2141,1],[2157,1],[2235,1],[2250,1],[2330,1],[2347,1],[2418,1],[2433,1],[2482,1]]},"202":{"position":[[215,1],[230,1],[267,1],[269,2],[317,1],[324,1],[326,1],[357,3],[361,2],[416,1],[424,2],[427,2],[430,1],[442,2],[465,3],[480,2],[527,1],[560,1],[627,3],[631,2],[694,1],[745,1],[766,1],[768,1],[802,3],[806,2],[844,3],[851,1],[905,1],[912,1],[935,1],[937,2],[940,1]]},"204":{"position":[[201,1],[221,1],[258,1],[260,2],[311,1],[338,1],[340,1],[376,3],[380,2],[424,2],[427,1],[474,2],[477,1],[561,4],[566,2],[588,1]]},"206":{"position":[[230,1],[268,1],[305,1],[307,2],[352,1],[378,1],[380,1],[415,3],[419,2],[470,1],[497,1],[499,1],[535,3],[539,2],[589,2],[592,1],[612,1],[694,2],[697,1],[781,4],[786,2],[823,1]]},"216":{"position":[[230,1],[327,1]]},"218":{"position":[[382,1],[405,1],[520,1],[546,1],[577,1],[702,1],[714,2],[775,1]]},"232":{"position":[[482,1],[484,3],[488,1],[516,1],[518,3],[522,1],[524,2],[630,1],[665,1],[700,1],[705,1]]},"234":{"position":[[773,1],[849,1],[854,1]]},"252":{"position":[[74,1],[151,1],[406,1],[450,1],[459,2],[528,1],[586,2],[843,1]]},"258":{"position":[[79,1],[125,1]]},"262":{"position":[[208,1],[246,1],[267,1],[352,2],[560,1]]},"264":{"position":[[172,1]]},"288":{"position":[[357,1],[472,1]]},"292":{"position":[[400,1]]},"294":{"position":[[396,1]]},"304":{"position":[[1005,1],[1020,1],[1082,1],[1294,1],[1309,1],[1355,1]]},"306":{"position":[[392,1],[618,1],[702,1],[779,1],[792,1],[819,1],[833,1],[850,1]]},"308":{"position":[[579,1],[606,1],[652,1],[686,1],[744,1],[933,1],[960,1],[1142,1],[1176,1],[1218,1],[1263,1]]},"310":{"position":[[749,1],[763,1],[812,1],[855,1],[910,1],[938,1],[1068,1],[1082,1],[1101,1],[1250,1],[1264,1],[1284,1],[1306,1]]},"312":{"position":[[304,1],[343,1],[535,1],[672,1]]},"316":{"position":[[235,1],[263,1]]},"458":{"position":[[1029,1],[1041,1],[1649,1],[1653,1],[1720,1],[1726,1]]},"460":{"position":[[559,1],[565,1],[722,1],[737,1],[796,1],[800,1]]},"477":{"position":[[769,1],[1775,1]]},"488":{"position":[[588,1]]},"544":{"position":[[2633,1],[2694,1],[2713,1],[2725,1],[2735,1],[2748,1],[2760,1]]},"562":{"position":[[1046,1],[1053,1]]},"564":{"position":[[200,1]]}}}],["0",{"_index":770,"t":{"109":{"position":[[42,1],[410,1]]},"113":{"position":[[1156,1]]},"200":{"position":[[1973,1]]},"202":{"position":[[469,2],[848,2]]},"490":{"position":[[674,1]]}}}],["0.0.0.0",{"_index":933,"t":{"135":{"position":[[357,8]]},"141":{"position":[[531,9]]},"153":{"position":[[399,8]]}}}],["0.01",{"_index":1341,"t":{"240":{"position":[[124,4]]}}}],["0.012",{"_index":2080,"t":{"484":{"position":[[97,5]]},"488":{"position":[[102,5]]},"564":{"position":[[1019,5]]}}}],["0.012*5",{"_index":2102,"t":{"488":{"position":[[580,7]]}}}],["0.06",{"_index":2084,"t":{"484":{"position":[[184,4]]},"488":{"position":[[590,4]]}}}],["0.1",{"_index":1695,"t":{"408":{"position":[[278,3]]}}}],["0.15",{"_index":2079,"t":{"484":{"position":[[34,4]]},"486":{"position":[[178,4]]},"564":{"position":[[1060,4]]},"566":{"position":[[1418,4]]}}}],["0.5",{"_index":1890,"t":{"458":{"position":[[1722,3]]}}}],["0.5gb",{"_index":1099,"t":{"192":{"position":[[440,5]]},"214":{"position":[[240,5]]},"240":{"position":[[309,5]]},"254":{"position":[[591,5]]}}}],["000",{"_index":1187,"t":{"200":{"position":[[2193,5]]},"460":{"position":[[573,3]]}}}],["007bff",{"_index":1195,"t":{"200":{"position":[[2453,8]]}}}],["01.ac",{"_index":1542,"t":{"304":{"position":[[1770,5]]},"312":{"position":[[561,5]]},"314":{"position":[[489,5]]}}}],["01.he",{"_index":2012,"t":{"477":{"position":[[951,5],[2026,5]]},"479":{"position":[[1081,5]]}}}],["06",{"_index":1479,"t":{"288":{"position":[[93,2]]},"292":{"position":[[102,2]]},"294":{"position":[[105,2]]}}}],["1",{"_index":418,"t":{"42":{"position":[[253,2]]},"127":{"position":[[585,1]]},"135":{"position":[[223,2]]},"139":{"position":[[375,2]]},"188":{"position":[[669,3]]},"200":{"position":[[990,2],[2105,2],[2360,2]]},"226":{"position":[[266,2]]},"232":{"position":[[667,2]]},"420":{"position":[[197,2]]},"454":{"position":[[330,1]]},"458":{"position":[[272,1],[499,1],[777,1],[2275,1],[2368,1],[2433,1],[2453,1],[2619,1],[2825,1]]},"462":{"position":[[207,1],[391,1]]},"473":{"position":[[36,1]]},"475":{"position":[[230,2]]},"477":{"position":[[1002,1],[1016,1],[1034,1],[1063,1],[1355,1],[1384,1],[1530,1],[1559,1],[2077,1],[2090,1],[2108,1],[2235,1],[2300,1],[2447,1],[2640,1],[2723,1],[2916,1]]},"492":{"position":[[577,1]]},"542":{"position":[[33,3],[476,3]]},"556":{"position":[[462,2]]},"562":{"position":[[470,2],[1306,1]]},"566":{"position":[[859,1],[1366,1],[1951,1]]}}}],["1%2fproto&pagesize=50&ascending=tru",{"_index":1380,"t":{"252":{"position":[[805,37]]}}}],["1.0.0.1",{"_index":810,"t":{"111":{"position":[[134,10]]},"125":{"position":[[197,10]]},"137":{"position":[[789,8]]}}}],["1.000",{"_index":1888,"t":{"458":{"position":[[1598,5]]}}}],["1.1.1.1",{"_index":809,"t":{"111":{"position":[[122,11]]},"125":{"position":[[185,11]]},"137":{"position":[[777,7]]}}}],["1.2",{"_index":1928,"t":{"460":{"position":[[802,3]]}}}],["1.4",{"_index":1962,"t":{"473":{"position":[[289,3]]}}}],["1/proto",{"_index":1376,"t":{"252":{"position":[[577,8]]}}}],["10",{"_index":911,"t":{"127":{"position":[[398,2]]},"426":{"position":[[305,2]]},"458":{"position":[[288,2],[1090,2],[2463,2]]},"473":{"position":[[1220,3]]},"475":{"position":[[424,2]]},"477":{"position":[[1335,2],[2427,2],[2574,2]]},"479":{"position":[[1469,2],[1576,2],[1847,2]]},"482":{"position":[[409,2]]},"538":{"position":[[286,2]]},"544":{"position":[[2569,2],[2783,2]]},"564":{"position":[[801,2]]},"578":{"position":[[246,2]]}}}],["10,000",{"_index":1331,"t":{"234":{"position":[[747,6],[775,7],[842,6]]}}}],["10.000",{"_index":1871,"t":{"458":{"position":[[720,6],[1009,6],[1666,6]]},"460":{"position":[[412,6],[552,6],[1046,6]]},"482":{"position":[[481,6]]}}}],["100",{"_index":1589,"t":{"310":{"position":[[1227,4]]},"460":{"position":[[878,4]]},"479":{"position":[[1817,3]]},"482":{"position":[[324,3]]},"490":{"position":[[362,3]]},"494":{"position":[[21,3]]},"588":{"position":[[528,3]]}}}],["1000",{"_index":884,"t":{"117":{"position":[[382,4],[479,4]]},"458":{"position":[[1644,4]]},"558":{"position":[[32,4]]},"562":{"position":[[1079,4]]},"566":{"position":[[1725,4]]}}}],["10000",{"_index":1889,"t":{"458":{"position":[[1714,5]]},"566":{"position":[[1758,5]]}}}],["100k/day",{"_index":2124,"t":{"492":{"position":[[677,9]]}}}],["100kb",{"_index":2432,"t":{"566":{"position":[[188,6],[1609,5]]}}}],["100mbit",{"_index":2445,"t":{"566":{"position":[[833,8]]}}}],["100mpb",{"_index":2444,"t":{"566":{"position":[[819,7]]}}}],["100msg/day",{"_index":1938,"t":{"462":{"position":[[393,12]]}}}],["100vh",{"_index":1174,"t":{"200":{"position":[[2048,6]]}}}],["107",{"_index":2294,"t":{"542":{"position":[[559,3]]}}}],["108",{"_index":2317,"t":{"542":{"position":[[671,3]]}}}],["10k",{"_index":2081,"t":{"484":{"position":[[130,3]]},"488":{"position":[[455,3]]},"492":{"position":[[340,3],[400,3]]}}}],["10kb",{"_index":2017,"t":{"477":{"position":[[1092,4],[1413,4],[1588,4],[2329,4],[2669,4],[2945,4]]},"486":{"position":[[139,5]]},"558":{"position":[[330,4]]},"566":{"position":[[182,5],[1071,4],[1258,4]]}}}],["10mbp",{"_index":2350,"t":{"544":{"position":[[2622,6]]}}}],["10msg/sec",{"_index":2016,"t":{"477":{"position":[[1081,10],[1402,10],[1577,10],[2318,10],[2658,10],[2934,10]]}}}],["10px",{"_index":1183,"t":{"200":{"position":[[2135,5],[2208,5],[2229,5],[2276,5],[2392,5],[2412,5]]}}}],["11",{"_index":2043,"t":{"479":{"position":[[410,2]]},"544":{"position":[[2722,2]]}}}],["1100",{"_index":2037,"t":{"477":{"position":[[3782,4]]}}}],["119",{"_index":2308,"t":{"542":{"position":[[621,3]]}}}],["11m",{"_index":2026,"t":{"477":{"position":[[2398,5]]}}}],["12",{"_index":2287,"t":{"542":{"position":[[369,2],[691,2]]},"544":{"position":[[2745,2]]},"566":{"position":[[2049,3]]}}}],["123.123.123.123",{"_index":532,"t":{"62":{"position":[[223,18]]}}}],["1234",{"_index":531,"t":{"62":{"position":[[211,4]]}}}],["127.0.0.1",{"_index":486,"t":{"56":{"position":[[529,10]]},"121":{"position":[[96,9]]},"123":{"position":[[113,9]]},"250":{"position":[[153,9]]},"310":{"position":[[315,10]]}}}],["127.0.0.1:8080",{"_index":899,"t":{"121":{"position":[[712,15]]}}}],["13",{"_index":2303,"t":{"542":{"position":[[599,2]]}}}],["137",{"_index":2295,"t":{"542":{"position":[[563,3]]}}}],["13:18:07.575+00:00",{"_index":2045,"t":{"479":{"position":[[416,18]]}}}],["14",{"_index":2478,"t":{"576":{"position":[[27,2]]}}}],["14400",{"_index":875,"t":{"117":{"position":[[161,5]]},"312":{"position":[[760,5]]}}}],["1459",{"_index":1273,"t":{"220":{"position":[[33,5]]}}}],["15",{"_index":1480,"t":{"288":{"position":[[96,2]]},"292":{"position":[[105,2]]},"294":{"position":[[108,2]]},"542":{"position":[[648,2],[856,2]]}}}],["150",{"_index":1925,"t":{"460":{"position":[[739,3],[781,3]]}}}],["150kb",{"_index":2092,"t":{"486":{"position":[[151,6]]}}}],["15mbp",{"_index":2345,"t":{"544":{"position":[[2152,7]]}}}],["16",{"_index":1333,"t":{"234":{"position":[[851,2]]}}}],["16:09:54.448+01:00",{"_index":1481,"t":{"288":{"position":[[99,18]]},"292":{"position":[[108,18]]},"294":{"position":[[111,18]]}}}],["17",{"_index":2321,"t":{"542":{"position":[[702,2]]},"544":{"position":[[2364,3],[2457,3]]}}}],["1727795042",{"_index":2353,"t":{"544":{"position":[[2890,10]]}}}],["18",{"_index":2351,"t":{"544":{"position":[[2710,2],[2732,2]]}}}],["1:1",{"_index":410,"t":{"40":{"position":[[789,3]]}}}],["1kb",{"_index":2090,"t":{"486":{"position":[[134,4]]}}}],["1lqrcbccb4np93f9",{"_index":1491,"t":{"292":{"position":[[245,16],[478,16]]}}}],["1msg/10",{"_index":2111,"t":{"490":{"position":[[530,7]]}}}],["1px",{"_index":1176,"t":{"200":{"position":[[2063,3]]}}}],["2",{"_index":243,"t":{"16":{"position":[[830,1],[914,1]]},"42":{"position":[[301,2]]},"127":{"position":[[490,1]]},"135":{"position":[[257,2]]},"139":{"position":[[432,2]]},"200":{"position":[[1039,2]]},"218":{"position":[[723,4]]},"232":{"position":[[702,2]]},"280":{"position":[[400,1]]},"460":{"position":[[567,1]]},"462":{"position":[[411,1]]},"477":{"position":[[1321,1],[1747,2],[2413,1]]},"479":{"position":[[1894,2]]},"542":{"position":[[279,3],[714,3]]},"564":{"position":[[614,1]]}}}],["20",{"_index":1915,"t":{"460":{"position":[[116,2]]}}}],["200msg/day",{"_index":1939,"t":{"462":{"position":[[413,12]]}}}],["2023",{"_index":1478,"t":{"288":{"position":[[88,4]]},"292":{"position":[[97,4]]},"294":{"position":[[100,4]]},"477":{"position":[[3840,6]]},"479":{"position":[[405,4]]},"512":{"position":[[127,5]]},"542":{"position":[[376,6]]}}}],["2024",{"_index":1733,"t":{"424":{"position":[[38,4]]},"576":{"position":[[39,4]]}}}],["21",{"_index":2300,"t":{"542":{"position":[[590,2]]}}}],["21600",{"_index":1537,"t":{"304":{"position":[[1251,5]]},"312":{"position":[[492,5]]}}}],["22",{"_index":2322,"t":{"542":{"position":[[705,2]]}}}],["23",{"_index":2311,"t":{"542":{"position":[[639,2]]}}}],["232",{"_index":1977,"t":{"473":{"position":[[1134,3]]}}}],["24*3600/1=86400",{"_index":1906,"t":{"458":{"position":[[2666,15]]}}}],["24*3600/240=360",{"_index":1911,"t":{"458":{"position":[[3070,15]]}}}],["240",{"_index":1910,"t":{"458":{"position":[[3021,3],[3270,3]]}}}],["25",{"_index":2022,"t":{"477":{"position":[[1510,2],[2703,2],[2850,2]]}}}],["250",{"_index":1917,"t":{"460":{"position":[[296,3],[472,3],[561,3],[1082,3]]}}}],["250m",{"_index":2033,"t":{"477":{"position":[[3550,5]]}}}],["256",{"_index":2419,"t":{"564":{"position":[[362,3]]}}}],["25mbp",{"_index":1852,"t":{"456":{"position":[[1500,7]]}}}],["26",{"_index":2320,"t":{"542":{"position":[[694,2]]},"544":{"position":[[2298,3]]}}}],["263",{"_index":2452,"t":{"566":{"position":[[1314,3]]}}}],["27",{"_index":2044,"t":{"479":{"position":[[413,2]]},"542":{"position":[[675,2]]}}}],["286cae9f2990bfc49dafdd3a9e737f56ddba3656e5e427108cef456fb67680e8",{"_index":1553,"t":{"306":{"position":[[394,64],[852,64],[940,64]]}}}],["2gb",{"_index":675,"t":{"91":{"position":[[257,3]]},"192":{"position":[[368,3]]},"214":{"position":[[168,3]]},"240":{"position":[[237,3]]},"254":{"position":[[519,3]]}}}],["2mbyte",{"_index":2118,"t":{"492":{"position":[[358,7]]}}}],["3",{"_index":423,"t":{"42":{"position":[[350,2]]},"155":{"position":[[517,2],[531,2],[542,2]]},"157":{"position":[[547,2],[561,2],[572,2]]},"477":{"position":[[1496,1],[2689,1]]},"542":{"position":[[389,3],[781,3],[827,1]]},"544":{"position":[[2114,4]]}}}],["3.85",{"_index":2405,"t":{"562":{"position":[[1048,4]]}}}],["30",{"_index":892,"t":{"121":{"position":[[228,2]]},"310":{"position":[[565,3]]},"460":{"position":[[691,2],[711,2]]},"465":{"position":[[95,2]]},"473":{"position":[[755,2]]},"542":{"position":[[625,2]]}}}],["300",{"_index":879,"t":{"117":{"position":[[240,3]]},"473":{"position":[[775,3]]}}}],["3000",{"_index":2109,"t":{"490":{"position":[[482,4]]}}}],["32",{"_index":943,"t":{"137":{"position":[[331,2]]},"306":{"position":[[351,2],[389,2],[530,2],[712,2],[802,3],[816,2]]}}}],["33",{"_index":2304,"t":{"542":{"position":[[602,2],[697,2]]}}}],["37",{"_index":2314,"t":{"542":{"position":[[651,2]]}}}],["38",{"_index":2296,"t":{"542":{"position":[[567,2],[772,2]]},"544":{"position":[[2757,2]]}}}],["38.8",{"_index":1976,"t":{"473":{"position":[[1088,7]]}}}],["384",{"_index":2074,"t":{"482":{"position":[[655,3]]}}}],["4",{"_index":876,"t":{"117":{"position":[[169,1]]},"230":{"position":[[434,1]]},"312":{"position":[[774,2]]},"492":{"position":[[418,3]]},"562":{"position":[[1055,2],[1146,1],[1874,1]]},"566":{"position":[[2044,1]]}}}],["4.0",{"_index":2528,"t":{"584":{"position":[[83,3],[116,5]]}}}],["400",{"_index":1922,"t":{"460":{"position":[[632,3]]}}}],["44",{"_index":2305,"t":{"542":{"position":[[605,2],[665,2]]}}}],["479c95bbf74222417abf76c7f9c480a6790e454374dc4f59bbb15ca183ce1abd",{"_index":2057,"t":{"479":{"position":[[741,65]]}}}],["48",{"_index":1529,"t":{"304":{"position":[[694,3]]}}}],["49",{"_index":2306,"t":{"542":{"position":[[615,2]]}}}],["4k",{"_index":2344,"t":{"544":{"position":[[2127,2],[2613,3]]}}}],["4k/uhd",{"_index":2325,"t":{"542":{"position":[[849,6]]}}}],["4px",{"_index":1193,"t":{"200":{"position":[[2378,4],[2477,4]]}}}],["5",{"_index":880,"t":{"117":{"position":[[246,1]]},"458":{"position":[[1476,1],[1621,1],[1651,1],[1655,1],[1728,1]]},"460":{"position":[[500,1],[724,1]]},"542":{"position":[[842,1]]}}}],["50",{"_index":797,"t":{"109":{"position":[[726,2]]},"456":{"position":[[1217,2],[1420,2]]},"458":{"position":[[814,2],[1031,2]]},"479":{"position":[[1440,2],[1547,2]]},"542":{"position":[[654,2],[678,2]]}}}],["500",{"_index":1877,"t":{"458":{"position":[[1043,3],[1690,3]]},"460":{"position":[[211,4],[569,3]]}}}],["5000",{"_index":2121,"t":{"492":{"position":[[505,4]]}}}],["500kb",{"_index":2394,"t":{"558":{"position":[[574,6]]},"566":{"position":[[195,6],[1619,6]]}}}],["508",{"_index":2392,"t":{"558":{"position":[[379,3]]},"566":{"position":[[1109,3]]}}}],["50kb",{"_index":2091,"t":{"486":{"position":[[145,5]]}}}],["520",{"_index":2122,"t":{"492":{"position":[[549,3]]}}}],["53",{"_index":2312,"t":{"542":{"position":[[642,2]]}}}],["54",{"_index":2301,"t":{"542":{"position":[[593,2]]}}}],["56",{"_index":2309,"t":{"542":{"position":[[628,2]]}}}],["58",{"_index":2293,"t":{"542":{"position":[[556,2]]}}}],["6",{"_index":1413,"t":{"266":{"position":[[403,1]]},"304":{"position":[[1265,2]]},"312":{"position":[[506,2]]},"566":{"position":[[2029,1]]}}}],["60",{"_index":2574,"t":{"596":{"position":[[1068,4]]}}}],["60000",{"_index":781,"t":{"109":{"position":[[373,5]]},"169":{"position":[[215,8]]}}}],["60000:60000",{"_index":1255,"t":{"218":{"position":[[325,11]]}}}],["60002",{"_index":934,"t":{"135":{"position":[[382,5]]},"153":{"position":[[424,5]]}}}],["60003",{"_index":935,"t":{"135":{"position":[[392,6]]},"153":{"position":[[434,5]]}}}],["625",{"_index":1334,"t":{"234":{"position":[[856,4]]}}}],["627",{"_index":2450,"t":{"566":{"position":[[1228,4]]}}}],["63",{"_index":2318,"t":{"542":{"position":[[681,2]]}}}],["6300",{"_index":1747,"t":{"426":{"position":[[308,4]]},"578":{"position":[[249,4]]}}}],["64",{"_index":775,"t":{"109":{"position":[[239,2]]},"306":{"position":[[262,3]]},"360":{"position":[[26,3]]}}}],["65000",{"_index":1030,"t":{"167":{"position":[[126,5]]}}}],["68",{"_index":2297,"t":{"542":{"position":[[570,2]]}}}],["7",{"_index":1090,"t":{"190":{"position":[[268,3]]},"477":{"position":[[3837,2]]},"542":{"position":[[700,1]]}}}],["71",{"_index":2313,"t":{"542":{"position":[[645,2]]}}}],["72",{"_index":2302,"t":{"542":{"position":[[596,2],[631,2]]}}}],["7640",{"_index":1961,"t":{"473":{"position":[[250,5]]}}}],["8",{"_index":1563,"t":{"306":{"position":[[789,2]]},"404":{"position":[[339,1]]},"460":{"position":[[798,1]]}}}],["8.8.4.4",{"_index":952,"t":{"137":{"position":[[922,8]]}}}],["8.8.8.8",{"_index":951,"t":{"137":{"position":[[910,7]]}}}],["8000",{"_index":924,"t":{"131":{"position":[[99,4]]},"308":{"position":[[346,5]]}}}],["8001",{"_index":1570,"t":{"308":{"position":[[909,5]]}}}],["8002",{"_index":1574,"t":{"308":{"position":[[1118,5]]}}}],["8008",{"_index":902,"t":{"123":{"position":[[183,4]]}}}],["83",{"_index":2323,"t":{"542":{"position":[[769,2]]}}}],["84",{"_index":2316,"t":{"542":{"position":[[668,2]]}}}],["85",{"_index":2298,"t":{"542":{"position":[[573,2]]}}}],["86",{"_index":1921,"t":{"460":{"position":[[629,2]]}}}],["8645",{"_index":890,"t":{"121":{"position":[[158,4]]},"252":{"position":[[44,4]]},"310":{"position":[[431,5]]}}}],["8997",{"_index":1972,"t":{"473":{"position":[[809,4]]}}}],["9",{"_index":1731,"t":{"424":{"position":[[27,1]]},"544":{"position":[[2692,1]]}}}],["9.6",{"_index":1930,"t":{"460":{"position":[[817,4]]}}}],["9000",{"_index":906,"t":{"127":{"position":[[117,4]]},"310":{"position":[[1044,5]]},"473":{"position":[[852,5]]}}}],["9000:9000/udp",{"_index":1256,"t":{"218":{"position":[[340,13]]}}}],["93",{"_index":2307,"t":{"542":{"position":[[618,2]]}}}],["95",{"_index":1895,"t":{"458":{"position":[[2141,2]]},"566":{"position":[[1196,3]]}}}],["95%/99",{"_index":1934,"t":{"460":{"position":[[1113,7]]}}}],["99",{"_index":1896,"t":{"458":{"position":[[2147,3]]}}}],["9990",{"_index":2429,"t":{"564":{"position":[[841,4]]}}}],["_nwaku",{"_index":1988,"t":{"475":{"position":[[95,6],[156,6],[258,6],[340,6]]}}}],["abil",{"_index":1280,"t":{"220":{"position":[[544,7]]}}}],["abnorm",{"_index":2439,"t":{"566":{"position":[[437,8]]}}}],["abov",{"_index":1168,"t":{"200":{"position":[[1714,6]]},"244":{"position":[[112,5]]},"410":{"position":[[162,6]]},"544":{"position":[[9,5]]},"566":{"position":[[126,5]]},"582":{"position":[[1073,6]]}}}],["absent",{"_index":2246,"t":{"530":{"position":[[256,6]]}}}],["absolut",{"_index":607,"t":{"87":{"position":[[156,8]]}}}],["abus",{"_index":2239,"t":{"526":{"position":[[1006,7]]}}}],["accept",{"_index":1049,"t":{"181":{"position":[[184,7]]},"183":{"position":[[155,7]]},"252":{"position":[[854,8]]},"262":{"position":[[219,8]]},"264":{"position":[[183,8]]},"482":{"position":[[765,6]]},"566":{"position":[[1179,11]]}}}],["access",{"_index":527,"t":{"60":{"position":[[304,11]]},"62":{"position":[[82,11]]},"83":{"position":[[1408,6]]},"91":{"position":[[81,6]]},"121":{"position":[[300,6],[368,6]]},"218":{"position":[[800,10]]},"246":{"position":[[27,6]]},"250":{"position":[[104,6]]},"310":{"position":[[600,6],[681,6]]},"324":{"position":[[177,9]]},"346":{"position":[[186,9]]},"352":{"position":[[84,6]]},"400":{"position":[[28,7],[111,13]]},"404":{"position":[[64,7],[139,10]]},"408":{"position":[[98,6]]},"542":{"position":[[359,9]]},"576":{"position":[[149,6],[519,6]]},"580":{"position":[[773,11],[845,6],[1007,10]]},"582":{"position":[[451,10],[1163,10]]},"586":{"position":[[563,8],[600,6]]}}}],["accident",{"_index":1352,"t":{"244":{"position":[[393,12]]}}}],["accommod",{"_index":1618,"t":{"320":{"position":[[338,11]]},"382":{"position":[[201,11]]}}}],["accompani",{"_index":1511,"t":{"296":{"position":[[1408,11]]}}}],["accord",{"_index":2461,"t":{"568":{"position":[[303,9]]},"596":{"position":[[1290,10],[1937,10]]}}}],["account",{"_index":567,"t":{"75":{"position":[[58,7]]},"522":{"position":[[269,8]]},"544":{"position":[[858,8],[2206,8]]},"564":{"position":[[896,7]]},"566":{"position":[[2246,8]]},"574":{"position":[[429,10],[495,10]]}}}],["accur",{"_index":2458,"t":{"566":{"position":[[2378,9]]},"582":{"position":[[872,9]]},"586":{"position":[[399,9]]}}}],["accuraci",{"_index":2496,"t":{"580":{"position":[[421,9]]},"582":{"position":[[941,9]]}}}],["achiev",{"_index":1408,"t":{"266":{"position":[[120,7]]},"416":{"position":[[82,7]]},"418":{"position":[[197,8]]},"420":{"position":[[97,8]]},"462":{"position":[[295,9]]}}}],["ack/nack",{"_index":2447,"t":{"566":{"position":[[961,8]]}}}],["acknowledg",{"_index":1629,"t":{"328":{"position":[[138,15],[341,12]]},"354":{"position":[[96,16]]}}}],["acquir",{"_index":2368,"t":{"550":{"position":[[395,7]]}}}],["act",{"_index":1992,"t":{"475":{"position":[[292,6],[374,6]]},"477":{"position":[[122,4]]},"484":{"position":[[260,4]]},"486":{"position":[[371,4]]},"516":{"position":[[557,4]]},"522":{"position":[[95,4]]},"544":{"position":[[608,6]]}}}],["action",{"_index":1708,"t":{"414":{"position":[[216,7]]},"416":{"position":[[62,7]]},"510":{"position":[[799,7]]},"596":{"position":[[2234,6]]}}}],["activ",{"_index":333,"t":{"26":{"position":[[2266,6]]},"30":{"position":[[212,6]]},"32":{"position":[[95,6]]},"266":{"position":[[294,8]]},"416":{"position":[[118,10]]},"436":{"position":[[646,10],[687,10],[780,10]]},"438":{"position":[[209,10]]},"512":{"position":[[278,10]]},"586":{"position":[[524,10],[717,10]]}}}],["actor",{"_index":1711,"t":{"414":{"position":[[340,6]]},"416":{"position":[[47,5],[134,6]]}}}],["actual",{"_index":636,"t":{"87":{"position":[[3026,8]]},"414":{"position":[[333,6]]},"486":{"position":[[362,8]]},"582":{"position":[[695,6]]}}}],["ad",{"_index":384,"t":{"34":{"position":[[246,6]]},"42":{"position":[[421,6]]},"69":{"position":[[119,5]]},"234":{"position":[[274,6]]}}}],["adapt",{"_index":284,"t":{"22":{"position":[[283,8]]},"194":{"position":[[198,8]]},"560":{"position":[[51,10]]}}}],["add",{"_index":10,"t":{"2":{"position":[[103,3]]},"4":{"position":[[104,3]]},"6":{"position":[[458,4],[607,3]]},"26":{"position":[[62,3]]},"54":{"position":[[75,3]]},"71":{"position":[[150,3]]},"81":{"position":[[172,3]]},"109":{"position":[[412,3]]},"155":{"position":[[125,3]]},"194":{"position":[[103,3]]},"196":{"position":[[445,3]]},"234":{"position":[[455,3]]},"484":{"position":[[159,3]]},"488":{"position":[[28,4],[555,3]]},"512":{"position":[[216,4]]},"524":{"position":[[0,3],[184,3]]},"562":{"position":[[648,4]]}}}],["add(new",{"_index":416,"t":{"42":{"position":[[216,8],[267,8],[315,8]]},"200":{"position":[[953,8],[1004,8]]}}}],["addit",{"_index":1411,"t":{"266":{"position":[[312,10]]},"278":{"position":[[525,10]]},"330":{"position":[[267,10]]},"430":{"position":[[3,8]]},"479":{"position":[[1405,10],[1512,10],[1782,10]]},"496":{"position":[[474,8]]},"574":{"position":[[381,8]]}}}],["addition",{"_index":1442,"t":{"272":{"position":[[256,13]]},"394":{"position":[[201,13]]},"448":{"position":[[91,13]]},"510":{"position":[[221,13]]},"574":{"position":[[576,13]]}}}],["addr",{"_index":803,"t":{"111":{"position":[[35,5],[104,5]]}}}],["address",{"_index":279,"t":{"22":{"position":[[92,7]]},"109":{"position":[[265,7],[306,7],[497,8]]},"111":{"position":[[299,7]]},"113":{"position":[[626,7],[665,7],[753,7],[761,7]]},"121":{"position":[[88,7],[116,7]]},"123":{"position":[[105,7],[133,7]]},"127":{"position":[[368,7]]},"153":{"position":[[865,7]]},"192":{"position":[[1613,9],[1670,9],[1759,9],[1815,10]]},"222":{"position":[[516,7]]},"254":{"position":[[455,10]]},"262":{"position":[[621,10]]},"282":{"position":[[63,9]]},"286":{"position":[[87,9],[137,9]]},"288":{"position":[[383,7],[494,7]]},"290":{"position":[[28,10]]},"292":{"position":[[415,9]]},"294":{"position":[[411,9],[695,9]]},"302":{"position":[[72,7],[781,7]]},"310":{"position":[[209,7],[239,7],[803,8]]},"360":{"position":[[96,10],[121,9]]},"426":{"position":[[227,7]]},"428":{"position":[[552,8],[623,7],[730,9],[836,7]]},"516":{"position":[[819,8]]},"518":{"position":[[87,7]]},"578":{"position":[[167,7]]}}}],["address=127.0.0.1",{"_index":1588,"t":{"310":{"position":[[1110,17]]}}}],["address=[rest",{"_index":1582,"t":{"310":{"position":[[772,13]]}}}],["adequ",{"_index":1765,"t":{"434":{"position":[[288,8]]}}}],["admin",{"_index":893,"t":{"121":{"position":[[281,5],[320,5]]},"310":{"position":[[574,5],[615,5],[1172,5]]}}}],["admin=[true|fals",{"_index":1585,"t":{"310":{"position":[[919,18]]}}}],["admin=tru",{"_index":1590,"t":{"310":{"position":[[1273,10]]}}}],["administ",{"_index":2576,"t":{"596":{"position":[[1227,12]]}}}],["administr",{"_index":2585,"t":{"596":{"position":[[1891,14]]}}}],["adopt",{"_index":1946,"t":{"465":{"position":[[423,8]]}}}],["advanc",{"_index":1338,"t":{"236":{"position":[[280,8]]},"252":{"position":[[1166,8]]},"572":{"position":[[122,8]]}}}],["adversari",{"_index":1315,"t":{"230":{"position":[[659,12]]},"416":{"position":[[19,9]]},"418":{"position":[[53,9]]},"574":{"position":[[46,11]]}}}],["advertis",{"_index":793,"t":{"109":{"position":[[596,9]]},"516":{"position":[[107,13],[462,13]]},"520":{"position":[[144,13]]}}}],["advic",{"_index":2506,"t":{"580":{"position":[[1586,6]]}}}],["advis",{"_index":2547,"t":{"588":{"position":[[412,7]]}}}],["affect",{"_index":1783,"t":{"436":{"position":[[668,7],[741,6]]},"488":{"position":[[373,6]]},"558":{"position":[[235,8],[456,8]]},"566":{"position":[[1431,7]]},"598":{"position":[[412,6]]}}}],["africa",{"_index":2319,"t":{"542":{"position":[[684,6]]},"544":{"position":[[2291,6],[2357,6],[2750,6]]}}}],["again",{"_index":2230,"t":{"526":{"position":[[387,6]]}}}],["against",{"_index":1616,"t":{"320":{"position":[[283,7]]},"526":{"position":[[934,7]]},"532":{"position":[[27,7]]},"574":{"position":[[555,7]]},"590":{"position":[[53,7]]},"596":{"position":[[102,7],[2276,7]]}}}],["agent",{"_index":771,"t":{"109":{"position":[[131,5],[155,5]]}}}],["aggreg",{"_index":218,"t":{"16":{"position":[[200,10],[898,9]]},"588":{"position":[[474,9]]}}}],["agnost",{"_index":2460,"t":{"568":{"position":[[220,8]]}}}],["agnostic",{"_index":1813,"t":{"450":{"position":[[122,12]]}}}],["agre",{"_index":2481,"t":{"576":{"position":[[390,6],[467,5]]}}}],["agreement",{"_index":2591,"t":{"598":{"position":[[44,9],[155,11]]}}}],["aim",{"_index":552,"t":{"71":{"position":[[10,4]]},"412":{"position":[[177,6]]},"428":{"position":[[3,3]]},"456":{"position":[[338,3]]},"479":{"position":[[11,4],[879,5]]},"538":{"position":[[17,4]]},"560":{"position":[[830,4]]},"572":{"position":[[3,3]]},"582":{"position":[[1205,3]]}}}],["aka",{"_index":1836,"t":{"456":{"position":[[614,3]]}}}],["alert",{"_index":500,"t":{"56":{"position":[[931,7]]}}}],["alic",{"_index":432,"t":{"44":{"position":[[241,8]]},"87":{"position":[[541,5],[998,5],[2883,5],[3054,5],[3228,8],[3290,8]]},"210":{"position":[[36,5],[102,5],[233,6],[240,5],[337,5],[472,6],[479,5],[571,5],[616,5]]},"280":{"position":[[36,5],[95,5],[135,5],[219,6],[226,5],[300,5],[329,5],[390,5]]},"284":{"position":[[0,5]]}}}],["alice'",{"_index":637,"t":{"87":{"position":[[3063,7]]},"284":{"position":[[114,7]]}}}],["aliceprivatekey",{"_index":617,"t":{"87":{"position":[[1010,15],[1332,16],[1627,16]]}}}],["alicepublickey",{"_index":618,"t":{"87":{"position":[[1056,14]]}}}],["align",{"_index":1189,"t":{"200":{"position":[[2309,5]]}}}],["aliv",{"_index":850,"t":{"113":{"position":[[1353,5],[1377,5]]}}}],["allmessag",{"_index":1210,"t":{"206":{"position":[[600,11]]}}}],["alloc",{"_index":1842,"t":{"456":{"position":[[995,9],[1062,8]]},"544":{"position":[[997,8]]}}}],["allow",{"_index":65,"t":{"6":{"position":[[304,6]]},"12":{"position":[[148,8]]},"16":{"position":[[581,5]]},"22":{"position":[[38,8]]},"38":{"position":[[244,6]]},"40":{"position":[[381,6],[562,6]]},"56":{"position":[[433,8]]},"87":{"position":[[427,6]]},"109":{"position":[[737,7],[798,7]]},"121":{"position":[[417,5],[430,5],[731,5]]},"141":{"position":[[916,8]]},"169":{"position":[[381,8]]},"220":{"position":[[77,6],[294,6]]},"226":{"position":[[577,6]]},"230":{"position":[[77,8]]},"232":{"position":[[182,8]]},"246":{"position":[[94,8]]},"266":{"position":[[828,6]]},"270":{"position":[[198,5]]},"296":{"position":[[1525,8],[1662,7]]},"302":{"position":[[130,6]]},"304":{"position":[[1478,6]]},"312":{"position":[[217,6]]},"314":{"position":[[218,6]]},"324":{"position":[[16,6]]},"328":{"position":[[108,6]]},"342":{"position":[[49,6]]},"350":{"position":[[58,6]]},"370":{"position":[[131,8]]},"376":{"position":[[165,8]]},"390":{"position":[[81,8]]},"450":{"position":[[135,8]]},"458":{"position":[[680,6],[2427,5],[2636,5],[2741,6],[3040,5],[3151,5],[3373,5]]},"460":{"position":[[455,5]]},"462":{"position":[[371,5]]},"482":{"position":[[914,7]]},"492":{"position":[[265,7],[671,5]]},"554":{"position":[[587,5]]},"564":{"position":[[54,6]]},"568":{"position":[[244,6]]},"584":{"position":[[146,6]]}}}],["along",{"_index":748,"t":{"103":{"position":[[51,5]]},"200":{"position":[[1824,5]]},"574":{"position":[[590,5]]}}}],["alongsid",{"_index":144,"t":{"8":{"position":[[1432,9]]},"149":{"position":[[331,9]]},"206":{"position":[[176,9]]},"516":{"position":[[874,9]]}}}],["alreadi",{"_index":2058,"t":{"479":{"position":[[835,7]]},"540":{"position":[[1253,7]]},"564":{"position":[[219,7]]}}}],["altern",{"_index":1624,"t":{"324":{"position":[[161,11]]},"346":{"position":[[170,11]]},"458":{"position":[[1865,12]]},"544":{"position":[[1724,12]]}}}],["although",{"_index":1502,"t":{"296":{"position":[[1088,8]]},"500":{"position":[[798,8]]}}}],["altruist",{"_index":2190,"t":{"512":{"position":[[891,15]]}}}],["alway",{"_index":975,"t":{"145":{"position":[[338,6]]},"181":{"position":[[738,6]]},"183":{"position":[[752,6]]},"434":{"position":[[662,6]]},"477":{"position":[[1284,6]]}}}],["amazon",{"_index":1390,"t":{"256":{"position":[[927,6]]}}}],["ambient",{"_index":1421,"t":{"266":{"position":[[1037,7]]}}}],["amend",{"_index":2525,"t":{"582":{"position":[[1347,7]]}}}],["america",{"_index":2292,"t":{"542":{"position":[[548,7],[582,7]]},"544":{"position":[[2684,7],[2702,7]]}}}],["amic",{"_index":2570,"t":{"596":{"position":[[755,8]]}}}],["amongst",{"_index":2067,"t":{"479":{"position":[[1687,7]]}}}],["amount",{"_index":912,"t":{"127":{"position":[[409,6],[500,6]]},"428":{"position":[[403,6]]},"458":{"position":[[655,6],[1542,6],[2920,6]]},"516":{"position":[[796,6],[1011,7]]},"522":{"position":[[246,6]]},"526":{"position":[[927,6]]},"538":{"position":[[117,6]]},"540":{"position":[[557,7]]},"560":{"position":[[651,6]]},"562":{"position":[[899,6]]},"564":{"position":[[331,6],[710,6]]}}}],["analysi",{"_index":1806,"t":{"444":{"position":[[59,8]]},"460":{"position":[[1101,8]]},"479":{"position":[[193,9]]},"540":{"position":[[1219,8]]}}}],["analyz",{"_index":2001,"t":{"477":{"position":[[53,9]]},"536":{"position":[[13,7],[89,7],[245,7]]}}}],["and/or",{"_index":856,"t":{"113":{"position":[[1546,6]]}}}],["announc",{"_index":795,"t":{"109":{"position":[[677,8]]},"302":{"position":[[157,9]]},"316":{"position":[[75,8]]}}}],["anonym",{"_index":1309,"t":{"230":{"position":[[187,10],[524,9],[582,9]]},"232":{"position":[[19,9]]},"234":{"position":[[597,9]]},"252":{"position":[[512,9]]},"278":{"position":[[506,10]]},"318":{"position":[[129,9],[251,10]]},"380":{"position":[[145,10]]},"414":{"position":[[205,10]]},"416":{"position":[[0,9],[90,10],[227,9]]},"422":{"position":[[102,9]]}}}],["anoth",{"_index":529,"t":{"62":{"position":[[14,7]]},"85":{"position":[[1556,7]]},"436":{"position":[[509,7]]},"477":{"position":[[171,7]]},"544":{"position":[[1516,7]]},"560":{"position":[[796,7]]},"574":{"position":[[72,7]]}}}],["anyon",{"_index":270,"t":{"20":{"position":[[53,6]]},"220":{"position":[[301,6]]},"540":{"position":[[803,6],[864,6]]}}}],["anyth",{"_index":275,"t":{"20":{"position":[[316,9]]},"218":{"position":[[952,9]]},"252":{"position":[[954,9]]},"264":{"position":[[293,9]]}}}],["api",{"_index":286,"t":{"24":{"position":[[31,3],[40,3],[133,3]]},"26":{"position":[[1869,3]]},"67":{"position":[[61,4],[124,3],[197,4]]},"75":{"position":[[188,4]]},"121":{"position":[[258,3],[326,4],[396,4],[505,3]]},"192":{"position":[[573,3],[1726,4]]},"218":{"position":[[865,3]]},"252":{"position":[[32,3]]},"262":{"position":[[60,4]]},"264":{"position":[[103,4]]},"286":{"position":[[235,4]]},"310":{"position":[[22,3],[89,4],[158,3],[259,3],[375,3],[502,3],[621,3],[704,3],[1025,3],[1190,3]]},"554":{"position":[[98,3],[204,5]]}}}],["app",{"_index":69,"t":{"6":{"position":[[356,3]]},"8":{"position":[[723,3],[761,3]]},"16":{"position":[[71,4]]},"24":{"position":[[160,3],[282,3],[311,4]]},"143":{"position":[[130,3]]},"145":{"position":[[98,3],[207,3],[267,3]]},"147":{"position":[[78,3]]},"198":{"position":[[66,4],[527,4],[729,5]]},"200":{"position":[[349,5],[1693,3]]},"202":{"position":[[261,5]]},"204":{"position":[[252,5]]},"206":{"position":[[299,5]]},"234":{"position":[[252,3]]},"456":{"position":[[1692,4]]},"477":{"position":[[187,3],[369,4],[406,3],[504,3]]}}}],["app%2f2%2fchatroom",{"_index":1379,"t":{"252":{"position":[[786,18]]}}}],["app.css",{"_index":1139,"t":{"200":{"position":[[328,11],[1901,7]]}}}],["app.jsx",{"_index":1128,"t":{"198":{"position":[[655,7]]},"200":{"position":[[88,7]]}}}],["app/0/a/proto",{"_index":1327,"t":{"234":{"position":[[327,14]]}}}],["app/2/chatroom",{"_index":1375,"t":{"252":{"position":[[562,14]]}}}],["appear",{"_index":517,"t":{"58":{"position":[[445,8]]}}}],["appli",{"_index":483,"t":{"56":{"position":[[468,5]]},"79":{"position":[[280,7]]},"296":{"position":[[393,7]]},"424":{"position":[[227,7]]},"430":{"position":[[309,6]]},"477":{"position":[[1877,8],[3432,8]]},"544":{"position":[[147,5]]},"562":{"position":[[1717,7]]},"580":{"position":[[656,5]]},"588":{"position":[[587,5]]}}}],["applic",{"_index":25,"t":{"2":{"position":[[346,13]]},"6":{"position":[[51,11],[276,12]]},"8":{"position":[[87,12],[677,11],[997,11],[1086,11],[1345,11]]},"12":{"position":[[134,13]]},"14":{"position":[[166,13],[219,12]]},"26":{"position":[[966,12],[1189,12],[1257,13],[1698,12],[1885,12]]},"28":{"position":[[105,12]]},"30":{"position":[[129,12]]},"32":{"position":[[1176,12]]},"40":{"position":[[32,11],[706,12]]},"46":{"position":[[364,11]]},"64":{"position":[[103,12]]},"73":{"position":[[176,11],[474,13]]},"77":{"position":[[126,13]]},"87":{"position":[[243,11]]},"89":{"position":[[108,12],[403,12]]},"181":{"position":[[564,11]]},"183":{"position":[[679,11]]},"194":{"position":[[241,12]]},"196":{"position":[[88,12]]},"198":{"position":[[144,11]]},"200":{"position":[[1839,11]]},"202":{"position":[[24,12]]},"204":{"position":[[27,12]]},"206":{"position":[[131,11],[1001,11]]},"226":{"position":[[51,13],[113,11],[177,11]]},"232":{"position":[[99,11],[319,12]]},"234":{"position":[[8,11],[730,11]]},"282":{"position":[[5,12]]},"296":{"position":[[28,11]]},"318":{"position":[[74,12],[175,12]]},"330":{"position":[[311,11]]},"338":{"position":[[96,12]]},"350":{"position":[[113,12]]},"364":{"position":[[49,11],[144,12]]},"388":{"position":[[134,13]]},"394":{"position":[[184,11]]},"396":{"position":[[123,11]]},"406":{"position":[[0,12]]},"428":{"position":[[226,10]]},"434":{"position":[[694,10]]},"456":{"position":[[895,12]]},"544":{"position":[[2542,13]]},"546":{"position":[[209,13]]},"552":{"position":[[435,12]]},"556":{"position":[[17,11]]},"566":{"position":[[1138,12]]},"580":{"position":[[697,10],[959,10]]},"588":{"position":[[628,10]]},"596":{"position":[[2017,10]]}}}],["application'",{"_index":300,"t":{"26":{"position":[[218,13],[368,13]]},"42":{"position":[[12,13]]}}}],["application/json",{"_index":1372,"t":{"252":{"position":[[432,17],[863,17]]},"262":{"position":[[228,17]]}}}],["appoint",{"_index":2365,"t":{"550":{"position":[[293,7]]}}}],["appreci",{"_index":977,"t":{"147":{"position":[[15,10]]},"477":{"position":[[2353,11]]}}}],["approach",{"_index":126,"t":{"8":{"position":[[1029,8]]},"220":{"position":[[166,8]]},"234":{"position":[[347,8]]},"318":{"position":[[21,9]]},"424":{"position":[[98,8]]},"432":{"position":[[13,9]]},"454":{"position":[[314,8]]},"458":{"position":[[1882,8],[2249,8]]},"462":{"position":[[181,8],[243,8]]},"477":{"position":[[293,9]]},"496":{"position":[[277,8]]},"500":{"position":[[821,10]]},"504":{"position":[[56,10]]},"540":{"position":[[514,9],[672,10]]},"544":{"position":[[789,9]]}}}],["appropri",{"_index":1246,"t":{"214":{"position":[[52,11]]},"516":{"position":[[784,11]]},"580":{"position":[[806,11]]}}}],["approv",{"_index":992,"t":{"147":{"position":[[516,9]]}}}],["apt",{"_index":696,"t":{"93":{"position":[[197,3]]}}}],["arbitr",{"_index":2558,"t":{"594":{"position":[[102,12]]},"596":{"position":[[260,11],[427,11],[549,11],[1215,11],[1263,11],[1339,11],[1447,8],[1499,11],[1656,11],[1781,11],[1860,12],[1910,10],[1986,12],[2264,11]]}}}],["arch",{"_index":693,"t":{"93":{"position":[[164,4]]}}}],["architectur",{"_index":1614,"t":{"320":{"position":[[33,12]]},"540":{"position":[[733,14],[784,12]]},"560":{"position":[[128,13]]}}}],["archiv",{"_index":1940,"t":{"465":{"position":[[48,9],[229,7]]},"477":{"position":[[754,7],[1760,7]]},"479":{"position":[[473,8]]}}}],["area",{"_index":2364,"t":{"550":{"position":[[240,4]]}}}],["arg",{"_index":1252,"t":{"218":{"position":[[66,8],[189,6]]}}}],["arguabl",{"_index":2218,"t":{"522":{"position":[[1120,8]]}}}],["argument",{"_index":755,"t":{"105":{"position":[[235,8]]},"109":{"position":[[622,8]]},"111":{"position":[[205,8]]},"113":{"position":[[1323,8],[1484,8],[1626,8],[1704,8]]},"125":{"position":[[238,8]]},"127":{"position":[[259,8]]},"218":{"position":[[211,9]]}}}],["aris",{"_index":2546,"t":{"588":{"position":[[251,7]]},"590":{"position":[[130,7]]},"596":{"position":[[690,7]]}}}],["aros",{"_index":2587,"t":{"596":{"position":[[2110,5]]}}}],["around",{"_index":1898,"t":{"458":{"position":[[2186,6]]},"556":{"position":[[117,6]]},"562":{"position":[[871,6]]}}}],["array",{"_index":77,"t":{"6":{"position":[[432,7]]},"159":{"position":[[21,5],[294,5]]}}}],["arriv",{"_index":1455,"t":{"276":{"position":[[898,7]]},"566":{"position":[[1216,8]]}}}],["articl",{"_index":1684,"t":{"404":{"position":[[609,7]]}}}],["asia",{"_index":2310,"t":{"542":{"position":[[634,4]]},"544":{"position":[[2727,4]]}}}],["ask",{"_index":1777,"t":{"436":{"position":[[305,3],[381,3],[435,3],[623,5]]}}}],["assign",{"_index":1719,"t":{"418":{"position":[[261,6]]},"500":{"position":[[650,7]]},"506":{"position":[[118,8]]},"526":{"position":[[494,9]]}}}],["assist",{"_index":153,"t":{"10":{"position":[[39,11]]},"20":{"position":[[300,10]]},"218":{"position":[[936,10]]},"252":{"position":[[938,10]]},"264":{"position":[[277,10]]}}}],["associ",{"_index":1737,"t":{"426":{"position":[[152,12],[255,11],[434,12]]},"578":{"position":[[92,12],[196,11],[385,12]]}}}],["assum",{"_index":1860,"t":{"458":{"position":[[304,6],[1938,6]]},"460":{"position":[[509,8],[763,8]]},"488":{"position":[[422,8]]},"492":{"position":[[446,9],[618,9]]},"518":{"position":[[12,6],[113,7]]},"562":{"position":[[1840,8]]}}}],["assumpt",{"_index":1882,"t":{"458":{"position":[[1168,10]]},"544":{"position":[[1790,12]]},"582":{"position":[[118,11]]}}}],["async",{"_index":368,"t":{"32":{"position":[[457,5]]},"183":{"position":[[134,5]]},"200":{"position":[[1111,5]]},"202":{"position":[[418,5]]},"477":{"position":[[3305,5]]}}}],["asynchron",{"_index":1660,"t":{"376":{"position":[[34,12]]},"477":{"position":[[3098,12]]}}}],["atom",{"_index":2186,"t":{"512":{"position":[[340,10],[521,9]]},"522":{"position":[[601,10],[638,9],[660,6],[1064,9]]}}}],["attach",{"_index":605,"t":{"87":{"position":[[75,9]]},"336":{"position":[[28,8]]},"482":{"position":[[705,8]]}}}],["attack",{"_index":1867,"t":{"458":{"position":[[435,9]]},"490":{"position":[[709,7]]},"526":{"position":[[560,8],[1045,6],[1171,8]]},"574":{"position":[[212,6],[455,7],[567,8]]}}}],["attempt",{"_index":503,"t":{"58":{"position":[[0,7]]},"137":{"position":[[739,7]]},"139":{"position":[[873,7]]}}}],["attorney",{"_index":2554,"t":{"590":{"position":[[113,10]]}}}],["attribut",{"_index":1634,"t":{"330":{"position":[[107,11],[133,9],[180,9],[243,9],[354,9],[444,9]]},"584":{"position":[[71,11],[299,11]]}}}],["aur",{"_index":711,"t":{"93":{"position":[[469,3],[485,4]]}}}],["authent",{"_index":604,"t":{"87":{"position":[[37,12]]},"398":{"position":[[228,13]]},"402":{"position":[[178,13]]},"420":{"position":[[80,12]]}}}],["author",{"_index":491,"t":{"56":{"position":[[708,9]]}}}],["auto",{"_index":908,"t":{"127":{"position":[[295,4]]},"200":{"position":[[1975,5],[2120,5]]}}}],["automat",{"_index":909,"t":{"127":{"position":[[327,13]]},"236":{"position":[[83,14]]},"404":{"position":[[356,9]]},"506":{"position":[[104,13]]},"512":{"position":[[496,14]]}}}],["avail",{"_index":612,"t":{"87":{"position":[[378,9]]},"91":{"position":[[305,9]]},"99":{"position":[[123,9]]},"103":{"position":[[13,9]]},"169":{"position":[[588,9]]},"192":{"position":[[788,9],[1124,9],[1329,9]]},"206":{"position":[[845,9]]},"216":{"position":[[28,9]]},"254":{"position":[[263,9]]},"266":{"position":[[566,9]]},"296":{"position":[[760,12]]},"326":{"position":[[343,13]]},"384":{"position":[[63,9]]},"420":{"position":[[162,9]]},"456":{"position":[[717,10]]},"504":{"position":[[196,9]]},"540":{"position":[[1527,9]]},"542":{"position":[[98,9],[145,9]]},"580":{"position":[[478,12],[1062,9]]},"584":{"position":[[38,9]]}}}],["averag",{"_index":2025,"t":{"477":{"position":[[2373,7]]},"479":{"position":[[1753,8]]},"486":{"position":[[161,7]]},"488":{"position":[[85,7],[394,7]]},"540":{"position":[[80,7]]},"542":{"position":[[54,7],[514,7],[530,7]]},"544":{"position":[[2247,7],[2315,7],[2638,7]]},"558":{"position":[[339,7]]},"562":{"position":[[2141,7]]},"564":{"position":[[445,7]]},"566":{"position":[[296,7],[1080,7],[2017,8]]}}}],["avoid",{"_index":240,"t":{"16":{"position":[[787,8]]},"67":{"position":[[45,8]]},"416":{"position":[[101,8]]},"518":{"position":[[192,8]]}}}],["await",{"_index":360,"t":{"32":{"position":[[207,5],[303,5],[502,5],[750,5],[868,5]]},"36":{"position":[[185,5],[236,5],[309,5]]},"38":{"position":[[189,5],[434,5]]},"44":{"position":[[426,5]]},"46":{"position":[[517,5],[613,5],[765,5]]},"83":{"position":[[710,5],[1094,5],[1183,5]]},"85":{"position":[[861,5],[1254,5],[1343,5]]},"87":{"position":[[1772,5],[1832,5],[1890,5],[1946,5],[3304,5]]},"151":{"position":[[246,5]]},"153":{"position":[[242,5],[759,5]]},"155":{"position":[[599,5],[911,5]]},"157":{"position":[[646,5]]},"159":{"position":[[200,5],[251,5]]},"173":{"position":[[185,5],[236,5]]},"175":{"position":[[186,5]]},"181":{"position":[[629,5]]},"183":{"position":[[469,5],[565,5],[632,5]]},"186":{"position":[[428,5]]},"188":{"position":[[537,5],[688,5],[827,5]]},"190":{"position":[[403,5]]},"202":{"position":[[770,5]]},"526":{"position":[[1101,8]]}}}],["award",{"_index":2567,"t":{"596":{"position":[[561,5]]}}}],["away",{"_index":2145,"t":{"500":{"position":[[253,4]]},"526":{"position":[[626,4]]},"562":{"position":[[536,5]]},"566":{"position":[[1957,4]]}}}],["awesom",{"_index":268,"t":{"16":{"position":[[1324,7]]},"24":{"position":[[433,7]]}}}],["awk",{"_index":1265,"t":{"218":{"position":[[704,3]]}}}],["azur",{"_index":1389,"t":{"256":{"position":[[920,6]]}}}],["b",{"_index":919,"t":{"127":{"position":[[598,1]]},"276":{"position":[[697,1]]},"530":{"position":[[193,2]]}}}],["b452ed8",{"_index":2023,"t":{"477":{"position":[[1807,8]]}}}],["b6dd6899",{"_index":2006,"t":{"477":{"position":[[801,9]]}}}],["baarerstrass",{"_index":1746,"t":{"426":{"position":[[291,13]]},"578":{"position":[[232,13]]}}}],["back",{"_index":2195,"t":{"514":{"position":[[459,4]]},"536":{"position":[[157,4]]}}}],["backbon",{"_index":2179,"t":{"510":{"position":[[138,8]]}}}],["background",{"_index":1184,"t":{"200":{"position":[[2159,10],[2282,10],[2435,10]]}}}],["backup",{"_index":1415,"t":{"266":{"position":[[515,7],[608,7]]}}}],["backward",{"_index":301,"t":{"26":{"position":[[336,8]]},"113":{"position":[[1172,9]]},"186":{"position":[[79,8]]}}}],["badli",{"_index":2148,"t":{"500":{"position":[[426,6]]}}}],["balanc",{"_index":555,"t":{"71":{"position":[[70,7]]},"318":{"position":[[235,7]]}}}],["ban",{"_index":2238,"t":{"526":{"position":[[971,3],[1126,3]]}}}],["band",{"_index":591,"t":{"83":{"position":[[1321,4]]},"85":{"position":[[1475,4]]},"87":{"position":[[3124,4]]},"362":{"position":[[7,4]]}}}],["bandwidth",{"_index":843,"t":{"113":{"position":[[1136,9]]},"274":{"position":[[103,9],[278,10],[355,9]]},"324":{"position":[[253,10],[300,9]]},"328":{"position":[[65,9]]},"384":{"position":[[94,10]]},"410":{"position":[[500,9]]},"454":{"position":[[62,9]]},"456":{"position":[[94,10],[141,10],[465,9],[642,9],[982,9],[1041,9],[1126,9],[1652,9],[1765,10],[1817,10]]},"458":{"position":[[852,9],[1463,9],[2089,10],[2166,9]]},"460":{"position":[[895,10],[1144,9]]},"462":{"position":[[31,9],[310,9]]},"504":{"position":[[186,9]]},"538":{"position":[[41,9]]},"540":{"position":[[592,10],[935,9],[1054,9],[1414,9],[1537,9],[1597,9]]},"542":{"position":[[62,9],[301,9],[402,9],[814,9]]},"544":{"position":[[77,9],[282,9],[359,10],[550,10],[888,9],[957,9],[1012,9],[1162,9],[1258,9],[1331,9],[1400,9],[1620,9],[1850,10],[1963,10],[2010,9],[2392,9],[2503,10],[2646,9]]},"558":{"position":[[115,9]]},"562":{"position":[[294,9],[1541,10],[1566,9],[1598,10]]},"566":{"position":[[605,11],[2079,9],[2156,9]]}}}],["bandwidth/hardwar",{"_index":2261,"t":{"540":{"position":[[420,18]]}}}],["barrier",{"_index":2034,"t":{"477":{"position":[[3556,8]]}}}],["base",{"_index":570,"t":{"77":{"position":[[44,5]]},"93":{"position":[[501,4]]},"230":{"position":[[415,5]]},"234":{"position":[[541,5]]},"254":{"position":[[224,5]]},"266":{"position":[[888,5]]},"330":{"position":[[155,5]]},"336":{"position":[[131,5]]},"380":{"position":[[44,5]]},"404":{"position":[[382,5]]},"410":{"position":[[254,5]]},"418":{"position":[[296,5]]},"436":{"position":[[707,5]]},"477":{"position":[[511,5]]},"500":{"position":[[538,5]]},"504":{"position":[[50,5]]},"512":{"position":[[169,5],[698,5]]},"516":{"position":[[409,5],[719,5]]},"566":{"position":[[952,5]]},"582":{"position":[[65,5],[590,5]]}}}],["base32",{"_index":941,"t":{"137":{"position":[[297,6]]}}}],["base64",{"_index":1368,"t":{"252":{"position":[[335,7],[530,10]]}}}],["bash",{"_index":685,"t":{"93":{"position":[[89,5]]}}}],["basi",{"_index":1751,"t":{"428":{"position":[[205,5]]},"526":{"position":[[899,6]]},"580":{"position":[[44,5],[1177,5]]}}}],["batteri",{"_index":1666,"t":{"384":{"position":[[128,7]]}}}],["be",{"_index":349,"t":{"30":{"position":[[106,5]]},"198":{"position":[[966,5]]},"220":{"position":[[773,5]]},"226":{"position":[[492,5]]},"418":{"position":[[375,5]]},"422":{"position":[[453,5]]},"452":{"position":[[80,5]]},"456":{"position":[[908,5],[1259,5]]},"458":{"position":[[2893,5]]},"477":{"position":[[47,5],[3613,5]]},"562":{"position":[[115,5]]},"596":{"position":[[1364,5]]}}}],["bear",{"_index":2521,"t":{"582":{"position":[[910,4]]}}}],["becom",{"_index":1417,"t":{"266":{"position":[[639,6]]},"456":{"position":[[1550,8]]}}}],["befor",{"_index":565,"t":{"75":{"position":[[0,6]]},"87":{"position":[[495,6],[1385,6],[1680,6]]},"192":{"position":[[1057,6]]},"260":{"position":[[66,6]]},"300":{"position":[[66,6]]},"436":{"position":[[791,6]]},"504":{"position":[[292,6]]},"522":{"position":[[364,6]]},"526":{"position":[[270,6]]},"576":{"position":[[316,6]]}}}],["begin",{"_index":358,"t":{"32":{"position":[[117,6]]},"188":{"position":[[1001,9]]},"288":{"position":[[28,6]]},"292":{"position":[[28,6]]},"294":{"position":[[28,6]]},"456":{"position":[[19,5]]},"566":{"position":[[891,10]]}}}],["behav",{"_index":1968,"t":{"473":{"position":[[553,7]]},"500":{"position":[[343,7],[418,7]]}}}],["behaviour",{"_index":1720,"t":{"418":{"position":[[311,9]]},"496":{"position":[[204,10]]},"512":{"position":[[374,10],[446,9]]},"550":{"position":[[421,10]]}}}],["behind",{"_index":191,"t":{"12":{"position":[[355,6]]},"218":{"position":[[594,6]]}}}],["believ",{"_index":1790,"t":{"436":{"position":[[978,7]]},"586":{"position":[[338,8]]},"596":{"position":[[294,7]]}}}],["below",{"_index":1021,"t":{"161":{"position":[[290,5]]},"477":{"position":[[3540,5],[3776,5]]},"516":{"position":[[623,7]]},"526":{"position":[[340,5]]},"542":{"position":[[222,5]]},"546":{"position":[[235,5]]}}}],["benchmark",{"_index":1807,"t":{"444":{"position":[[164,11],[227,10]]},"482":{"position":[[216,10]]}}}],["beneficiary'",{"_index":1729,"t":{"422":{"position":[[300,13]]}}}],["benefit",{"_index":560,"t":{"73":{"position":[[192,7]]},"326":{"position":[[147,8]]},"477":{"position":[[3052,7]]},"500":{"position":[[490,9]]},"512":{"position":[[387,7]]},"548":{"position":[[431,8]]}}}],["besid",{"_index":1646,"t":{"344":{"position":[[145,7]]},"488":{"position":[[261,7]]}}}],["best",{"_index":2451,"t":{"566":{"position":[[1283,4],[1809,4]]}}}],["best/worst",{"_index":2434,"t":{"566":{"position":[[238,10]]}}}],["better",{"_index":546,"t":{"67":{"position":[[234,6]]},"456":{"position":[[111,6]]},"460":{"position":[[943,6]]},"462":{"position":[[236,6]]},"473":{"position":[[561,6]]},"475":{"position":[[737,7]]},"477":{"position":[[1159,6],[1479,7],[3020,6],[3176,6]]}}}],["between",{"_index":62,"t":{"6":{"position":[[244,7],[332,7]]},"71":{"position":[[78,7]]},"83":{"position":[[1278,7]]},"276":{"position":[[47,7]]},"296":{"position":[[1116,7]]},"318":{"position":[[243,7]]},"364":{"position":[[117,7]]},"392":{"position":[[64,7]]},"446":{"position":[[85,7],[134,7]]},"458":{"position":[[2834,7]]},"471":{"position":[[81,7]]},"482":{"position":[[173,7]]},"544":{"position":[[2587,7]]},"562":{"position":[[1384,7],[2044,7]]},"568":{"position":[[79,7]]},"594":{"position":[[62,7]]},"596":{"position":[[1714,7]]},"598":{"position":[[54,7]]}}}],["beyond",{"_index":257,"t":{"16":{"position":[[1021,6]]},"512":{"position":[[845,6]]},"566":{"position":[[1767,7]]}}}],["bid",{"_index":222,"t":{"16":{"position":[[289,4]]}}}],["big",{"_index":2407,"t":{"562":{"position":[[1635,3]]},"566":{"position":[[779,3],[1595,3],[1679,3]]}}}],["bigger",{"_index":1913,"t":{"460":{"position":[[30,6]]},"477":{"position":[[1681,6]]},"562":{"position":[[1479,6]]}}}],["biggest",{"_index":2457,"t":{"566":{"position":[[2309,7]]}}}],["binari",{"_index":672,"t":{"91":{"position":[[223,6]]},"97":{"position":[[16,7]]},"99":{"position":[[32,6]]},"101":{"position":[[89,6]]},"163":{"position":[[168,6]]},"165":{"position":[[215,6]]},"192":{"position":[[232,8]]},"256":{"position":[[39,7],[459,7],[505,6],[535,6],[575,6],[649,8],[693,7],[837,8]]},"258":{"position":[[31,7],[146,6]]}}}],["binaries.yml",{"_index":2008,"t":{"477":{"position":[[879,12],[1954,12]]}}}],["bind",{"_index":1198,"t":{"202":{"position":[[272,4]]},"580":{"position":[[1214,7]]}}}],["bit",{"_index":916,"t":{"127":{"position":[[572,4]]},"458":{"position":[[2945,3]]},"488":{"position":[[222,4]]}}}],["bitcoin",{"_index":2161,"t":{"506":{"position":[[0,7]]},"508":{"position":[[5,7]]}}}],["bittorr",{"_index":2156,"t":{"504":{"position":[[106,10]]}}}],["block",{"_index":1136,"t":{"200":{"position":[[125,6],[1938,6]]},"220":{"position":[[697,7]]},"282":{"position":[[270,7]]},"477":{"position":[[1246,8],[3361,5]]},"492":{"position":[[490,5],[510,6]]},"506":{"position":[[160,7],[220,6],[234,5],[510,6]]}}}],["blockchain",{"_index":193,"t":{"14":{"position":[[14,10]]},"16":{"position":[[226,11],[509,10]]},"338":{"position":[[113,10]]},"348":{"position":[[120,10]]},"482":{"position":[[845,11]]},"492":{"position":[[54,10]]},"502":{"position":[[74,12]]},"508":{"position":[[158,10]]},"512":{"position":[[398,11],[783,12]]},"518":{"position":[[76,10]]}}}],["blog",{"_index":188,"t":{"12":{"position":[[322,4]]},"322":{"position":[[350,4]]},"572":{"position":[[320,4]]}}}],["bob",{"_index":632,"t":{"87":{"position":[[2206,3],[2473,3]]},"210":{"position":[[142,3],[185,3]]},"280":{"position":[[107,3],[175,4],[180,3],[368,3]]},"284":{"position":[[35,3]]}}}],["bob'",{"_index":1232,"t":{"210":{"position":[[52,5]]},"280":{"position":[[52,5]]}}}],["bobprivatekey",{"_index":633,"t":{"87":{"position":[[2483,13],[2656,14]]}}}],["bodi",{"_index":1152,"t":{"200":{"position":[[1217,6],[2087,4]]}}}],["boilerpl",{"_index":1112,"t":{"196":{"position":[[134,11]]}}}],["boot",{"_index":1546,"t":{"306":{"position":[[44,5]]}}}],["bootstrap",{"_index":112,"t":{"8":{"position":[[776,9],[845,9],[893,9]]},"24":{"position":[[179,9]]},"26":{"position":[[1381,9],[1482,9],[1573,9]]},"36":{"position":[[403,12],[434,9],[471,9],[537,9]]},"127":{"position":[[170,9],[206,9]]},"139":{"position":[[150,9],[195,9],[258,9],[332,9],[359,9],[389,9],[416,9],[494,10],[598,9],[884,9]]},"141":{"position":[[214,9],[645,13]]},"143":{"position":[[38,9]]},"149":{"position":[[38,9],[170,9]]},"151":{"position":[[42,13],[183,9],[216,9]]},"153":{"position":[[44,9],[195,9],[502,9],[708,9]]},"155":{"position":[[3,9],[551,9],[863,9]]},"157":{"position":[[13,9],[140,9],[281,9],[581,9]]},"208":{"position":[[295,9]]},"220":{"position":[[273,13],[452,9]]},"260":{"position":[[37,9],[201,9],[323,9]]},"266":{"position":[[231,14]]},"280":{"position":[[372,10]]},"282":{"position":[[48,9]]},"300":{"position":[[37,9]]},"334":{"position":[[0,13]]},"370":{"position":[[148,9]]}}}],["bootstrapp",{"_index":1002,"t":{"153":{"position":[[87,14],[266,15],[783,15]]},"157":{"position":[[680,15]]}}}],["border",{"_index":1175,"t":{"200":{"position":[[2055,7],[2363,6],[2462,6]]}}}],["both",{"_index":148,"t":{"8":{"position":[[1584,4]]},"52":{"position":[[176,4]]},"87":{"position":[[920,4]]},"149":{"position":[[483,4]]},"206":{"position":[[549,4]]},"458":{"position":[[1742,4]]},"473":{"position":[[486,4],[861,4],[1420,4]]},"475":{"position":[[197,4]]},"477":{"position":[[2985,4]]},"534":{"position":[[118,4]]},"598":{"position":[[199,4]]}}}],["bottleneck",{"_index":1984,"t":{"473":{"position":[[1319,10]]},"566":{"position":[[2317,11]]}}}],["bottom",{"_index":1188,"t":{"200":{"position":[[2221,7]]}}}],["bound",{"_index":2482,"t":{"576":{"position":[[403,5]]},"596":{"position":[[404,5]]}}}],["boundari",{"_index":1855,"t":{"456":{"position":[[1629,8]]}}}],["bounti",{"_index":993,"t":{"147":{"position":[[545,8],[654,6]]}}}],["box",{"_index":1689,"t":{"406":{"position":[[165,3]]},"450":{"position":[[211,3]]},"566":{"position":[[264,3]]}}}],["branch",{"_index":729,"t":{"95":{"position":[[60,6]]},"222":{"position":[[252,6],[418,7]]},"564":{"position":[[136,7]]}}}],["break",{"_index":1298,"t":{"226":{"position":[[292,8]]},"572":{"position":[[260,5]]}}}],["brew",{"_index":715,"t":{"93":{"position":[[595,4]]}}}],["briefli",{"_index":1754,"t":{"428":{"position":[[599,7]]}}}],["bring",{"_index":1999,"t":{"475":{"position":[[635,6]]},"500":{"position":[[474,6]]},"512":{"position":[[49,6]]},"596":{"position":[[2061,5]]}}}],["broadcast",{"_index":249,"t":{"16":{"position":[[884,9]]},"40":{"position":[[734,12]]},"85":{"position":[[1452,12]]},"87":{"position":[[3101,12]]},"113":{"position":[[857,12]]}}}],["broadest",{"_index":2560,"t":{"596":{"position":[[34,8]]}}}],["browser",{"_index":19,"t":{"2":{"position":[[258,7]]},"22":{"position":[[206,7]]},"26":{"position":[[1434,7]]},"48":{"position":[[119,7]]},"54":{"position":[[129,9]]},"56":{"position":[[166,9],[204,8],[802,8]]},"64":{"position":[[54,7]]},"67":{"position":[[22,7],[116,7],[189,7]]},"71":{"position":[[50,8],[86,7]]},"73":{"position":[[47,8],[150,8],[435,7]]},"121":{"position":[[514,8]]},"208":{"position":[[688,9]]},"260":{"position":[[695,7]]},"270":{"position":[[338,9]]},"302":{"position":[[390,7]]},"308":{"position":[[39,7],[116,7]]},"356":{"position":[[179,8]]},"568":{"position":[[552,7],[692,8]]}}}],["browser'",{"_index":459,"t":{"54":{"position":[[27,9]]},"56":{"position":[[974,9]]},"73":{"position":[[287,9]]}}}],["bucket",{"_index":915,"t":{"127":{"position":[[474,6],[557,7]]},"230":{"position":[[400,7]]},"234":{"position":[[175,7]]}}}],["buffer",{"_index":49,"t":{"6":{"position":[[78,7]]},"26":{"position":[[203,7],[276,7]]},"226":{"position":[[476,7],[870,7]]},"232":{"position":[[275,6]]}}}],["bug",{"_index":163,"t":{"10":{"position":[[178,4]]},"554":{"position":[[109,4],[214,4]]},"556":{"position":[[137,4]]}}}],["build",{"_index":93,"t":{"8":{"position":[[81,5],[556,5]]},"16":{"position":[[37,5],[1181,5]]},"22":{"position":[[341,5]]},"26":{"position":[[1242,8],[1285,5]]},"91":{"position":[[38,5],[283,5]]},"93":{"position":[[3,5],[213,5]]},"97":{"position":[[0,5]]},"99":{"position":[[46,8]]},"192":{"position":[[245,8]]},"200":{"position":[[6,5]]},"206":{"position":[[1107,8]]},"212":{"position":[[38,5]]},"216":{"position":[[198,5],[329,5]]},"254":{"position":[[332,6]]},"256":{"position":[[683,5],[727,5],[745,5],[787,5]]},"296":{"position":[[16,8]]},"350":{"position":[[79,5]]},"402":{"position":[[69,5]]},"406":{"position":[[29,5]]},"550":{"position":[[82,8]]},"552":{"position":[[69,5]]},"554":{"position":[[23,8]]}}}],["build/wakunode2",{"_index":745,"t":{"99":{"position":[[99,17],[154,17]]},"135":{"position":[[174,17],[399,17]]},"137":{"position":[[522,17],[931,17]]},"139":{"position":[[277,17],[543,17]]},"141":{"position":[[270,17],[587,17],[678,17]]},"163":{"position":[[181,17]]},"165":{"position":[[280,17]]},"167":{"position":[[278,17],[485,17]]},"169":{"position":[[544,17]]},"258":{"position":[[153,17]]},"302":{"position":[[203,17],[339,17]]},"304":{"position":[[987,17],[1276,17],[1567,17],[1729,17]]},"306":{"position":[[173,17],[1030,17]]},"308":{"position":[[561,17],[915,17],[1124,17]]},"310":{"position":[[731,17],[1050,17],[1232,17]]},"312":{"position":[[88,17],[286,17],[517,17]]},"314":{"position":[[99,17],[289,17],[444,17]]},"316":{"position":[[217,17]]}}}],["built",{"_index":293,"t":{"24":{"position":[[316,5]]},"101":{"position":[[73,5]]},"151":{"position":[[33,5]]},"218":{"position":[[175,5],[1053,5]]},"220":{"position":[[0,5]]},"410":{"position":[[447,5]]},"446":{"position":[[14,5]]}}}],["bunch",{"_index":2030,"t":{"477":{"position":[[3296,5]]}}}],["bundl",{"_index":541,"t":{"67":{"position":[[78,9]]}}}],["burst",{"_index":1879,"t":{"458":{"position":[[1078,5]]},"460":{"position":[[77,7]]}}}],["busi",{"_index":1656,"t":{"364":{"position":[[82,8]]},"477":{"position":[[3709,4]]}}}],["button",{"_index":1165,"t":{"200":{"position":[[1588,7],[1612,7],[2426,6]]}}}],["buy",{"_index":2508,"t":{"580":{"position":[[1694,3],[1734,3]]}}}],["byte",{"_index":76,"t":{"6":{"position":[[427,4]]},"26":{"position":[[2560,5]]},"137":{"position":[[334,4]]},"230":{"position":[[436,5]]},"234":{"position":[[291,4],[470,5]]},"306":{"position":[[354,4],[533,4],[715,4]]},"458":{"position":[[1694,5]]},"482":{"position":[[665,6]]}}}],["bytes/sec",{"_index":846,"t":{"113":{"position":[[1212,9]]}}}],["bytestohex",{"_index":651,"t":{"89":{"position":[[462,11]]}}}],["bytestohex(privatekey",{"_index":657,"t":{"89":{"position":[[757,23]]}}}],["bytestohex(symmetrickey",{"_index":655,"t":{"89":{"position":[[709,25]]}}}],["c",{"_index":682,"t":{"93":{"position":[[67,1]]},"276":{"position":[[837,2]]},"306":{"position":[[787,1],[800,1],[814,1]]}}}],["c.waku.sandbox.status.im/tcp/30303/p2p/16uiu2hamsjvsjphxrdbniguv5bjrrzfbhttwftsyikaqbycjwmpv",{"_index":1545,"t":{"304":{"position":[[1788,92]]},"312":{"position":[[579,92]]},"314":{"position":[[507,92]]}}}],["c/o",{"_index":1742,"t":{"426":{"position":[[267,3]]},"578":{"position":[[208,3]]}}}],["c078075",{"_index":2009,"t":{"477":{"position":[[913,7],[1988,7]]}}}],["ca",{"_index":492,"t":{"56":{"position":[[718,5]]}}}],["cach",{"_index":891,"t":{"121":{"position":[[213,5],[270,5]]},"304":{"position":[[18,7]]},"310":{"position":[[448,5],[514,6],[870,5],[894,5],[1209,5],[1321,5]]}}}],["calcul",{"_index":2093,"t":{"486":{"position":[[194,9]]},"516":{"position":[[89,11],[394,11],[698,10]]},"520":{"position":[[73,11]]},"562":{"position":[[966,10],[1932,9]]}}}],["calendar",{"_index":2575,"t":{"596":{"position":[[1073,8]]}}}],["call",{"_index":616,"t":{"87":{"position":[[967,4],[2440,4]]},"165":{"position":[[232,6]]},"226":{"position":[[551,6]]},"264":{"position":[[47,7]]},"286":{"position":[[188,7]]},"458":{"position":[[2391,7]]},"479":{"position":[[564,7]]},"548":{"position":[[59,5]]}}}],["callback",{"_index":366,"t":{"32":{"position":[[343,10],[790,10]]},"46":{"position":[[56,8],[186,8],[210,8],[653,10]]},"83":{"position":[[1134,10],[1236,10]]},"85":{"position":[[1294,10],[1396,10]]},"87":{"position":[[1821,10],[1935,10],[2689,8],[2741,8],[3344,10]]},"181":{"position":[[162,8],[319,9],[333,8],[472,8],[496,8],[682,10]]},"186":{"position":[[481,9]]},"188":{"position":[[228,8],[273,8],[590,10],[880,9]]},"190":{"position":[[456,9]]}}}],["can't",{"_index":1840,"t":{"456":{"position":[[961,5]]},"458":{"position":[[420,5]]},"544":{"position":[[981,5],[1202,5],[1831,5]]}}}],["candid",{"_index":731,"t":{"95":{"position":[[90,9]]}}}],["cap",{"_index":1819,"t":{"454":{"position":[[55,6]]},"456":{"position":[[132,8],[244,7],[269,6],[618,7]]},"458":{"position":[[578,3],[607,3],[647,3],[1447,3],[1756,3],[2082,6]]},"462":{"position":[[24,6]]}}}],["capabl",{"_index":1420,"t":{"266":{"position":[[718,13],[771,13],[909,13]]},"465":{"position":[[34,10]]},"568":{"position":[[897,12]]}}}],["capac",{"_index":800,"t":{"109":{"position":[[839,8]]},"115":{"position":[[241,8]]},"121":{"position":[[219,8],[231,8]]},"304":{"position":[[428,8]]},"310":{"position":[[454,8],[475,8],[900,9],[1215,8]]},"574":{"position":[[95,8]]}}}],["capacity:25000",{"_index":1524,"t":{"304":{"position":[[487,15]]}}}],["capacity:@waku",{"_index":1150,"t":{"200":{"position":[[1171,8]]}}}],["hackathon",{"_index":299,"t":{"24":{"position":[[419,10]]}}}],["hammer",{"_index":2060,"t":{"479":{"position":[[869,6],[1455,6],[1562,6],[1833,6]]}}}],["hand",{"_index":2003,"t":{"477":{"position":[[157,5]]},"488":{"position":[[13,5]]}}}],["handl",{"_index":136,"t":{"8":{"position":[[1310,6]]},"16":{"position":[[268,6]]},"28":{"position":[[70,6]]},"32":{"position":[[1141,6]]},"50":{"position":[[124,6]]},"60":{"position":[[74,6]]},"89":{"position":[[196,8]]}}}],["handleinputchang",{"_index":1144,"t":{"200":{"position":[[522,17]]}}}],["happen",{"_index":590,"t":{"83":{"position":[[1296,6]]},"113":{"position":[[1264,6]]},"458":{"position":[[1322,7]]},"477":{"position":[[3406,7]]},"548":{"position":[[39,6]]}}}],["hard",{"_index":1475,"t":{"284":{"position":[[96,5]]}}}],["hardcod",{"_index":609,"t":{"87":{"position":[[325,9]]}}}],["harm",{"_index":2536,"t":{"586":{"position":[[423,8]]}}}],["harmless",{"_index":2553,"t":{"590":{"position":[[35,8]]}}}],["harry'",{"_index":1240,"t":{"210":{"position":[[456,7],[531,7]]}}}],["hash",{"_index":1217,"t":{"208":{"position":[[109,4]]},"222":{"position":[[139,4],[291,6]]},"230":{"position":[[460,6]]},"234":{"position":[[186,7],[669,4],[802,4]]},"340":{"position":[[57,4]]},"372":{"position":[[95,4]]},"522":{"position":[[83,4]]}}}],["have",{"_index":1874,"t":{"458":{"position":[[824,6],[2868,6]]},"479":{"position":[[49,6]]},"504":{"position":[[299,6]]}}}],["haven't",{"_index":2273,"t":{"540":{"position":[[1442,7]]}}}],["hd",{"_index":2324,"t":{"542":{"position":[[824,2],[839,2]]},"544":{"position":[[2600,2]]}}}],["head",{"_index":999,"t":{"147":{"position":[[670,4]]},"306":{"position":[[794,4]]},"598":{"position":[[268,8]]}}}],["header",{"_index":1370,"t":{"252":{"position":[[410,6],[847,6]]},"262":{"position":[[212,6]]},"264":{"position":[[176,6]]}}}],["health",{"_index":1403,"t":{"264":{"position":[[18,6],[68,6]]}}}],["healthi",{"_index":1407,"t":{"264":{"position":[[212,7]]}}}],["heard",{"_index":2565,"t":{"596":{"position":[[495,5]]}}}],["heavi",{"_index":1325,"t":{"234":{"position":[[138,5]]}}}],["height",{"_index":1173,"t":{"200":{"position":[[2040,7]]}}}],["hel1.wakudev.misc",{"_index":2061,"t":{"479":{"position":[[1090,18]]}}}],["hel1.wakudev.misc.statusim.net",{"_index":2014,"t":{"477":{"position":[[960,32],[2035,32]]}}}],["held",{"_index":2538,"t":{"588":{"position":[[15,4]]},"596":{"position":[[1519,4]]},"598":{"position":[[532,4]]}}}],["hello",{"_index":433,"t":{"44":{"position":[[259,7]]},"252":{"position":[[485,6]]}}}],["help",{"_index":173,"t":{"10":{"position":[[335,4]]},"20":{"position":[[349,4]]},"50":{"position":[[59,8],[150,4]]},"87":{"position":[[16,5]]},"99":{"position":[[174,4]]},"169":{"position":[[538,5],[564,4]]},"218":{"position":[[985,4]]},"226":{"position":[[280,5]]},"252":{"position":[[987,4]]},"264":{"position":[[326,4]]},"324":{"position":[[285,5]]},"462":{"position":[[289,5]]},"467":{"position":[[276,4]]},"530":{"position":[[131,5]]},"546":{"position":[[145,4]]},"548":{"position":[[407,4]]},"554":{"position":[[369,4],[788,4]]},"564":{"position":[[268,5]]},"568":{"position":[[11,4]]}}}],["helper",{"_index":712,"t":{"93":{"position":[[473,6],[490,7]]}}}],["henc",{"_index":2334,"t":{"544":{"position":[[1314,5]]},"546":{"position":[[83,6]]}}}],["here",{"_index":464,"t":{"54":{"position":[[94,4]]},"77":{"position":[[179,5]]},"103":{"position":[[0,4]]},"188":{"position":[[376,5]]},"226":{"position":[[0,4]]},"228":{"position":[[85,4]]},"276":{"position":[[0,4]]},"318":{"position":[[288,4]]},"542":{"position":[[155,4]]},"566":{"position":[[340,5],[1031,5]]},"574":{"position":[[247,5],[724,5],[869,5]]}}}],["herein",{"_index":2502,"t":{"580":{"position":[[994,6],[1257,6],[1493,7],[1527,6]]},"582":{"position":[[825,6],[1004,7]]},"596":{"position":[[1422,6]]}}}],["hesit",{"_index":166,"t":{"10":{"position":[[223,8]]}}}],["hex",{"_index":777,"t":{"109":{"position":[[247,3]]},"113":{"position":[[516,3],[594,3]]},"306":{"position":[[271,3],[359,3],[385,3],[553,3]]},"360":{"position":[[35,3]]}}}],["hexadecim",{"_index":650,"t":{"89":{"position":[[372,11],[666,11],[806,11]]}}}],["hextobyt",{"_index":652,"t":{"89":{"position":[[474,10]]}}}],["hextobytes(privatekeyhex",{"_index":662,"t":{"89":{"position":[[910,26]]}}}],["hextobytes(symmetrickeyhex",{"_index":660,"t":{"89":{"position":[[854,28]]}}}],["hide",{"_index":1313,"t":{"230":{"position":[[624,4]]},"402":{"position":[[240,6]]}}}],["high",{"_index":966,"t":{"141":{"position":[[1071,4]]},"232":{"position":[[345,4]]},"458":{"position":[[3001,4]]},"486":{"position":[[461,4]]},"500":{"position":[[458,4]]},"562":{"position":[[59,4]]},"566":{"position":[[711,4]]},"582":{"position":[[500,4],[1027,4]]}}}],["higher",{"_index":1837,"t":{"456":{"position":[[687,6]]},"473":{"position":[[967,6]]},"475":{"position":[[644,6]]},"562":{"position":[[227,6],[272,6]]}}}],["highli",{"_index":171,"t":{"10":{"position":[[312,6]]},"226":{"position":[[838,6]]},"254":{"position":[[139,6]]}}}],["highlight",{"_index":2361,"t":{"548":{"position":[[456,11]]},"552":{"position":[[233,9]]},"556":{"position":[[252,9]]}}}],["hinder",{"_index":1909,"t":{"458":{"position":[[2978,7]]}}}],["histor",{"_index":103,"t":{"8":{"position":[[357,10]]},"26":{"position":[[537,10],[661,10]]},"169":{"position":[[412,10]]},"171":{"position":[[87,10]]},"179":{"position":[[121,10]]},"190":{"position":[[791,10]]},"224":{"position":[[192,10]]},"274":{"position":[[195,10]]},"304":{"position":[[1513,10],[1708,10]]},"404":{"position":[[456,10]]},"492":{"position":[[587,10]]},"496":{"position":[[423,10]]},"514":{"position":[[44,8]]}}}],["histori",{"_index":1081,"t":{"188":{"position":[[1025,8]]},"465":{"position":[[154,7]]},"516":{"position":[[755,8]]},"518":{"position":[[48,8]]},"530":{"position":[[229,8]]}}}],["historyqueri",{"_index":2191,"t":{"514":{"position":[[104,12]]},"516":{"position":[[847,12]]}}}],["historyrespons",{"_index":2192,"t":{"514":{"position":[[151,15]]},"516":{"position":[[1038,15]]}}}],["hold",{"_index":2552,"t":{"590":{"position":[[27,4]]}}}],["home/.cargo/env",{"_index":706,"t":{"93":{"position":[[313,18]]}}}],["homebrew",{"_index":694,"t":{"93":{"position":[[181,10]]}}}],["hongkong",{"_index":1544,"t":{"304":{"position":[[1779,8]]},"312":{"position":[[570,8]]},"314":{"position":[[498,8]]}}}],["honour",{"_index":2227,"t":{"526":{"position":[[199,7]]}}}],["hood",{"_index":1359,"t":{"248":{"position":[[172,5]]},"404":{"position":[[653,5]]}}}],["hop",{"_index":917,"t":{"127":{"position":[[581,3],[628,4]]},"488":{"position":[[518,5]]},"560":{"position":[[614,4],[661,4]]},"562":{"position":[[175,4],[242,5],[473,4],[608,4],[644,3],[909,4],[1148,4],[1308,4],[1352,4],[1876,4]]},"566":{"position":[[1368,3],[1953,3]]}}}],["hopr",{"_index":2214,"t":{"522":{"position":[[688,6]]}}}],["host",{"_index":895,"t":{"121":{"position":[[542,4]]},"135":{"position":[[347,4]]},"141":{"position":[[521,4]]},"153":{"position":[[389,4]]},"218":{"position":[[828,4]]},"338":{"position":[[56,7]]}}}],["host]:[websocket",{"_index":510,"t":{"58":{"position":[[142,16]]}}}],["hour",{"_index":877,"t":{"117":{"position":[[171,5]]},"304":{"position":[[698,7],[1268,7]]},"312":{"position":[[509,7],[777,7]]},"516":{"position":[[747,4]]},"518":{"position":[[40,4]]}}}],["http",{"_index":479,"t":{"56":{"position":[[350,8],[612,5]]},"93":{"position":[[256,8],[397,8],[545,8]]},"121":{"position":[[59,4],[136,4],[190,4],[315,4],[383,4],[590,4]]},"123":{"position":[[198,4]]}}}],["http://127.0.0.1:8645/debug/v1/info",{"_index":1367,"t":{"252":{"position":[[184,37]]},"262":{"position":[[170,37]]}}}],["http://127.0.0.1:8645/debug/v1/vers",{"_index":1366,"t":{"252":{"position":[[110,40]]}}}],["http://127.0.0.1:8645/health",{"_index":1405,"t":{"264":{"position":[[141,30]]}}}],["http://127.0.0.1:8645/relay/v1/auto/messag",{"_index":1369,"t":{"252":{"position":[[359,46]]}}}],["http://127.0.0.1:8645/store/v1/messages?contenttopics=%2fmi",{"_index":1378,"t":{"252":{"position":[[725,60]]}}}],["http://localhost:3000/d/yns_4vfvk/nwaku",{"_index":1363,"t":{"250":{"position":[[6,39]]}}}],["https://cdn.jsdelivr.net/npm/protobufjs@latest/dist/protobuf.min.j",{"_index":83,"t":{"6":{"position":[[735,70]]}}}],["https://creativecommons.org/licenses/by/4.0",{"_index":2533,"t":{"584":{"position":[[390,45]]}}}],["https://examples.waku.org",{"_index":294,"t":{"24":{"position":[[336,26]]}}}],["https://examples.waku.org/rln",{"_index":2467,"t":{"572":{"position":[[391,29]]}}}],["https://github.com/spacejam/sl",{"_index":842,"t":{"113":{"position":[[1091,34]]}}}],["https://github.com/vacp2p/research/issues/148",{"_index":1724,"t":{"418":{"position":[[476,46]]},"574":{"position":[[253,46]]}}}],["https://github.com/waku",{"_index":574,"t":{"77":{"position":[[185,23]]},"95":{"position":[[129,23]]},"147":{"position":[[678,23]]},"216":{"position":[[284,23]]},"242":{"position":[[10,23]]},"465":{"position":[[459,23]]},"469":{"position":[[0,23],[42,23]]},"471":{"position":[[122,23]]},"479":{"position":[[1141,23],[1264,23]]},"520":{"position":[[21,23],[91,23],[164,23],[235,23]]},"524":{"position":[[31,23],[137,23],[225,23],[321,23]]},"528":{"position":[[70,23],[141,23]]},"532":{"position":[[52,23],[145,23]]},"536":{"position":[[42,23],[198,23],[362,23],[504,23]]},"538":{"position":[[172,23]]},"540":{"position":[[1080,23],[1169,23],[1321,23]]},"544":{"position":[[181,23],[2830,23]]},"564":{"position":[[962,23]]},"574":{"position":[[875,23]]}}}],["https://ideas.waku.org",{"_index":267,"t":{"16":{"position":[[1296,23]]}}}],["https://sh.rustup.r",{"_index":704,"t":{"93":{"position":[[280,20],[421,20],[569,20]]}}}],["https://unpkg.com/@waku/sdk@latest/bundle/index.j",{"_index":44,"t":{"4":{"position":[[227,53]]}}}],["https://vac.dev/build",{"_index":2476,"t":{"574":{"position":[[730,24]]}}}],["hub",{"_index":1247,"t":{"216":{"position":[[52,3]]}}}],["huge",{"_index":2456,"t":{"566":{"position":[[2060,4]]}}}],["hundr",{"_index":2549,"t":{"588":{"position":[[537,7]]}}}],["i.",{"_index":2002,"t":{"477":{"position":[[63,4]]},"526":{"position":[[805,5]]}}}],["i13n",{"_index":2132,"t":{"496":{"position":[[176,5],[293,5],[502,5]]},"504":{"position":[[346,4]]},"508":{"position":[[93,4]]},"516":{"position":[[280,4],[1165,4]]}}}],["id",{"_index":769,"t":{"109":{"position":[[39,2],[52,2],[112,2]]},"113":{"position":[[474,2],[537,2]]},"234":{"position":[[233,3],[628,3]]},"479":{"position":[[702,3]]}}}],["id'",{"_index":1332,"t":{"234":{"position":[[807,4]]}}}],["id=\"messag",{"_index":1161,"t":{"200":{"position":[[1481,11]]}}}],["idea",{"_index":263,"t":{"16":{"position":[[1230,5]]},"558":{"position":[[537,4]]},"566":{"position":[[593,4],[1653,4]]}}}],["ideal",{"_index":2185,"t":{"512":{"position":[[329,7]]}}}],["ident",{"_index":826,"t":{"113":{"position":[[491,8],[565,8]]},"402":{"position":[[231,8]]},"414":{"position":[[116,11]]},"458":{"position":[[151,8]]},"494":{"position":[[99,9]]},"522":{"position":[[838,11]]},"526":{"position":[[594,10]]}}}],["identif",{"_index":1710,"t":{"414":{"position":[[311,14]]}}}],["identifi",{"_index":772,"t":{"109":{"position":[[185,10]]},"230":{"position":[[311,12]]},"234":{"position":[[203,10]]},"296":{"position":[[931,12]]},"344":{"position":[[68,8]]},"372":{"position":[[21,10]]},"378":{"position":[[46,10]]},"414":{"position":[[77,11]]},"416":{"position":[[161,12]]},"422":{"position":[[190,8],[344,12]]},"428":{"position":[[653,11]]},"552":{"position":[[172,8]]},"598":{"position":[[277,11]]}}}],["idl",{"_index":851,"t":{"113":{"position":[[1387,4]]}}}],["ii",{"_index":1820,"t":{"454":{"position":[[86,3]]},"456":{"position":[[583,3]]},"458":{"position":[[1572,3],[2013,3]]},"460":{"position":[[335,3]]},"540":{"position":[[1130,3],[1574,3]]},"558":{"position":[[258,3]]},"560":{"position":[[926,3]]},"596":{"position":[[965,4]]}}}],["illustr",{"_index":1451,"t":{"276":{"position":[[18,12]]}}}],["imag",{"_index":337,"t":{"26":{"position":[[2465,6],[2550,6]]},"163":{"position":[[295,5]]},"216":{"position":[[17,6],[156,6],[215,5],[342,5],[360,5]]},"218":{"position":[[58,7],[116,5],[129,5]]},"256":{"position":[[857,6]]}}}],["immedi",{"_index":1796,"t":{"440":{"position":[[185,11]]},"572":{"position":[[203,9]]},"592":{"position":[[217,11]]}}}],["impact",{"_index":1943,"t":{"465":{"position":[[262,6],[343,7]]},"484":{"position":[[356,6]]},"524":{"position":[[285,6]]},"540":{"position":[[1235,6]]},"566":{"position":[[2065,6]]}}}],["implement",{"_index":15,"t":{"2":{"position":[[205,14]]},"16":{"position":[[707,9]]},"22":{"position":[[8,11]]},"69":{"position":[[137,9]]},"358":{"position":[[34,10]]},"398":{"position":[[56,12]]},"432":{"position":[[67,11]]},"444":{"position":[[187,15]]},"490":{"position":[[50,11],[105,11],[165,11]]},"570":{"position":[[81,15]]},"572":{"position":[[354,14]]}}}],["impli",{"_index":2114,"t":{"492":{"position":[[10,7]]},"562":{"position":[[281,7]]},"580":{"position":[[163,8],[1385,7]]},"586":{"position":[[246,5]]}}}],["implic",{"_index":1305,"t":{"228":{"position":[[71,13]]},"482":{"position":[[106,12],[961,12]]}}}],["implicit",{"_index":2170,"t":{"506":{"position":[[287,9]]}}}],["import",{"_index":42,"t":{"4":{"position":[[205,6]]},"6":{"position":[[713,6],[728,6]]},"36":{"position":[[94,6]]},"38":{"position":[[101,6],[323,6]]},"40":{"position":[[86,6]]},"42":{"position":[[83,6]]},"56":{"position":[[181,9]]},"83":{"position":[[162,6],[415,6],[882,6]]},"85":{"position":[[162,6],[570,6],[1051,6]]},"87":{"position":[[563,6],[640,6],[734,6],[2228,6],[2291,6]]},"89":{"position":[[453,6]]},"151":{"position":[[135,6]]},"153":{"position":[[147,6]]},"155":{"position":[[273,6],[318,6],[813,6]]},"157":{"position":[[86,6],[131,6],[178,6]]},"159":{"position":[[123,6]]},"173":{"position":[[94,6]]},"175":{"position":[[87,6]]},"177":{"position":[[92,6]]},"186":{"position":[[151,6]]},"188":{"position":[[180,6]]},"198":{"position":[[182,6],[237,6],[681,6]]},"200":{"position":[[144,6],[189,6],[228,6],[286,6],[321,6]]},"202":{"position":[[208,6]]},"204":{"position":[[194,6]]},"206":{"position":[[223,6]]},"414":{"position":[[143,9]]},"456":{"position":[[445,10]]},"522":{"position":[[861,9]]},"562":{"position":[[139,9],[1614,9]]},"566":{"position":[[346,9]]}}}],["impos",{"_index":474,"t":{"56":{"position":[[213,6]]},"278":{"position":[[517,7]]},"296":{"position":[[902,7]]},"322":{"position":[[245,7]]},"386":{"position":[[164,8]]}}}],["imposs",{"_index":1894,"t":{"458":{"position":[[2054,10]]}}}],["improv",{"_index":174,"t":{"10":{"position":[[340,7]]},"208":{"position":[[544,9]]},"234":{"position":[[510,7]]},"458":{"position":[[114,12]]},"540":{"position":[[690,11]]},"554":{"position":[[196,7]]},"568":{"position":[[874,8]]}}}],["in/out",{"_index":1856,"t":{"456":{"position":[[1645,6]]}}}],["incent",{"_index":2188,"t":{"512":{"position":[[704,10],[734,10]]},"574":{"position":[[679,9]]}}}],["incentiv",{"_index":2153,"t":{"502":{"position":[[13,12]]}}}],["incentivis",{"_index":140,"t":{"8":{"position":[[1372,15]]},"149":{"position":[[271,15]]},"406":{"position":[[383,15]]},"448":{"position":[[16,11]]},"496":{"position":[[146,15]]},"500":{"position":[[16,15]]},"512":{"position":[[80,12]]},"516":{"position":[[16,12]]},"534":{"position":[[67,12]]},"536":{"position":[[420,15]]},"572":{"position":[[20,12]]},"574":{"position":[[393,13]]}}}],["incident",{"_index":2543,"t":{"588":{"position":[[202,11]]}}}],["includ",{"_index":84,"t":{"6":{"position":[[814,7]]},"32":{"position":[[582,8]]},"93":{"position":[[55,9]]},"220":{"position":[[233,9],[591,9]]},"244":{"position":[[335,7]]},"254":{"position":[[404,8]]},"270":{"position":[[305,9]]},"330":{"position":[[84,8]]},"338":{"position":[[131,9]]},"344":{"position":[[182,8]]},"356":{"position":[[171,7]]},"384":{"position":[[84,9]]},"396":{"position":[[68,9]]},"404":{"position":[[223,8],[446,9]]},"412":{"position":[[364,7]]},"418":{"position":[[392,9]]},"450":{"position":[[5,8]]},"508":{"position":[[44,7]]},"556":{"position":[[98,7]]},"576":{"position":[[181,9]]},"580":{"position":[[172,9]]},"582":{"position":[[243,7],[727,9],[1259,9]]},"584":{"position":[[233,9]]},"586":{"position":[[104,9]]},"590":{"position":[[103,9],[210,9]]},"596":{"position":[[74,8],[1873,9]]}}}],["incom",{"_index":1036,"t":{"169":{"position":[[163,8]]},"204":{"position":[[129,8]]},"224":{"position":[[141,8]]},"568":{"position":[[666,8]]}}}],["incorpor",{"_index":1432,"t":{"270":{"position":[[104,12]]},"596":{"position":[[1409,12]]}}}],["increas",{"_index":920,"t":{"127":{"position":[[610,8]]},"220":{"position":[[373,9]]},"232":{"position":[[8,8]]},"486":{"position":[[118,9]]},"488":{"position":[[159,8],[211,8]]},"500":{"position":[[327,9]]},"558":{"position":[[470,10]]},"566":{"position":[[926,10],[1580,9],[2170,8]]}}}],["incur",{"_index":2377,"t":{"552":{"position":[[554,5]]}}}],["inde",{"_index":1868,"t":{"458":{"position":[[525,6]]}}}],["indemnifi",{"_index":2551,"t":{"590":{"position":[[10,9]]}}}],["independ",{"_index":1793,"t":{"438":{"position":[[110,11]]},"496":{"position":[[94,11]]}}}],["index",{"_index":822,"t":{"113":{"position":[[318,5],[328,5]]},"188":{"position":[[41,5],[793,5]]},"200":{"position":[[1248,6]]}}}],["indic",{"_index":352,"t":{"30":{"position":[[277,9]]},"198":{"position":[[930,9]]},"276":{"position":[[216,9]]},"328":{"position":[[177,10]]},"428":{"position":[[433,9]]},"475":{"position":[[687,9]]},"477":{"position":[[3670,9]]},"558":{"position":[[505,9]]},"566":{"position":[[225,8]]}}}],["individu",{"_index":2401,"t":{"562":{"position":[[542,10],[714,10],[2016,10]]}}}],["industri",{"_index":2514,"t":{"582":{"position":[[168,8]]}}}],["inf",{"_index":1477,"t":{"288":{"position":[[84,3]]},"292":{"position":[[93,3]]},"294":{"position":[[96,3]]}}}],["info",{"_index":375,"t":{"32":{"position":[[907,4]]},"36":{"position":[[328,4]]},"40":{"position":[[611,4]]},"42":{"position":[[365,4]]},"58":{"position":[[311,5],[387,5]]},"79":{"position":[[170,4]]},"87":{"position":[[176,4]]},"91":{"position":[[239,4]]},"107":{"position":[[127,5]]},"133":{"position":[[117,4]]},"137":{"position":[[673,4]]},"139":{"position":[[796,4]]},"141":{"position":[[837,4]]},"149":{"position":[[142,4]]},"161":{"position":[[206,4]]},"165":{"position":[[439,4]]},"167":{"position":[[629,4]]},"181":{"position":[[693,4]]},"183":{"position":[[717,4]]},"188":{"position":[[935,4]]},"190":{"position":[[542,4]]},"200":{"position":[[1697,4]]},"206":{"position":[[825,4]]},"214":{"position":[[115,4]]},"218":{"position":[[728,4]]},"230":{"position":[[467,4]]},"234":{"position":[[575,4]]},"240":{"position":[[184,4]]},"246":{"position":[[361,4]]},"252":{"position":[[163,4]]},"254":{"position":[[466,4]]},"262":{"position":[[122,4],[562,4]]},"278":{"position":[[231,4]]},"286":{"position":[[0,4],[104,4],[209,4]]},"302":{"position":[[695,4]]},"312":{"position":[[697,4]]},"316":{"position":[[304,4]]},"324":{"position":[[264,4]]},"326":{"position":[[234,4]]},"328":{"position":[[306,4]]},"410":{"position":[[169,4]]},"568":{"position":[[838,4]]}}}],["inform",{"_index":611,"t":{"87":{"position":[[366,11]]},"89":{"position":[[273,11]]},"230":{"position":[[257,12],[324,11]]},"262":{"position":[[91,11]]},"276":{"position":[[875,9]]},"278":{"position":[[325,11]]},"290":{"position":[[39,11]]},"296":{"position":[[1573,11]]},"318":{"position":[[196,8]]},"344":{"position":[[210,11]]},"348":{"position":[[51,11]]},"362":{"position":[[33,11]]},"368":{"position":[[47,11]]},"416":{"position":[[174,11]]},"422":{"position":[[357,11]]},"424":{"position":[[78,6]]},"432":{"position":[[191,11]]},"436":{"position":[[937,11]]},"544":{"position":[[34,8]]},"566":{"position":[[986,11]]},"580":{"position":[[1076,13],[1245,11],[1505,11]]},"582":{"position":[[803,11],[982,11],[1246,12]]}}}],["infrastructur",{"_index":242,"t":{"16":{"position":[[808,15]]},"406":{"position":[[134,15],[301,14]]},"448":{"position":[[153,14]]},"574":{"position":[[774,14]]}}}],["infring",{"_index":2491,"t":{"580":{"position":[[278,12]]}}}],["infura",{"_index":1694,"t":{"408":{"position":[[126,6],[150,6]]}}}],["init",{"_index":718,"t":{"93":{"position":[[639,4]]}}}],["initi",{"_index":1641,"t":{"334":{"position":[[21,7]]},"490":{"position":[[8,7]]},"512":{"position":[[856,7]]},"548":{"position":[[17,7],[144,7]]},"570":{"position":[[73,7]]}}}],["initialis",{"_index":968,"t":{"145":{"position":[[0,10],[191,10]]},"206":{"position":[[143,11]]},"266":{"position":[[5,12]]}}}],["inject",{"_index":2127,"t":{"494":{"position":[[211,9]]},"530":{"position":[[200,9]]}}}],["innov",{"_index":1274,"t":{"220":{"position":[[155,10]]}}}],["input",{"_index":1143,"t":{"200":{"position":[[502,5],[1462,6],[1493,6],[2341,5]]},"202":{"position":[[100,5]]}}}],["inputmessag",{"_index":1140,"t":{"200":{"position":[[363,14],[471,12]]},"202":{"position":[[614,12]]}}}],["inputmessage.length",{"_index":1199,"t":{"202":{"position":[[445,19]]}}}],["insecur",{"_index":476,"t":{"56":{"position":[[288,8]]},"60":{"position":[[57,8]]}}}],["insert",{"_index":1956,"t":{"473":{"position":[[8,6],[473,7],[1469,6]]},"479":{"position":[[106,6],[445,6],[1416,9],[1523,9],[1617,6],[1658,6],[1793,9]]},"532":{"position":[[129,9]]}}}],["inspir",{"_index":265,"t":{"16":{"position":[[1254,12]]},"508":{"position":[[169,8]]}}}],["instal",{"_index":33,"t":{"4":{"position":[[0,7],[81,7],[175,10]]},"6":{"position":[[501,7],[583,7],[680,10]]},"26":{"position":[[9,7],[142,12],[445,12],[1347,12]]},"34":{"position":[[214,12]]},"42":{"position":[[398,12]]},"81":{"position":[[0,7],[122,7]]},"93":{"position":[[205,7],[341,7],[600,7]]},"145":{"position":[[244,9]]},"155":{"position":[[47,7],[92,7]]},"196":{"position":[[292,7],[399,7]]},"214":{"position":[[17,9]]}}}],["instanc",{"_index":2041,"t":{"479":{"position":[[342,9]]},"504":{"position":[[92,9]]},"526":{"position":[[1018,9]]}}}],["instanceof",{"_index":372,"t":{"32":{"position":[[625,10]]}}}],["instead",{"_index":673,"t":{"91":{"position":[[230,8]]},"113":{"position":[[1567,7]]},"153":{"position":[[873,7]]},"230":{"position":[[283,7]]},"316":{"position":[[453,8]]},"414":{"position":[[89,7]]},"454":{"position":[[150,8]]},"484":{"position":[[283,8]]},"490":{"position":[[240,8]]}}}],["institut",{"_index":2578,"t":{"596":{"position":[[1275,11]]}}}],["instruct",{"_index":315,"t":{"26":{"position":[[1331,12],[2436,13]]},"214":{"position":[[64,12]]},"304":{"position":[[856,8]]},"410":{"position":[[59,12]]}}}],["instrument",{"_index":2416,"t":{"564":{"position":[[154,10]]}}}],["integ",{"_index":2284,"t":{"542":{"position":[[264,8]]}}}],["integr",{"_index":23,"t":{"2":{"position":[[306,9]]},"8":{"position":[[644,9]]},"12":{"position":[[164,9]]},"16":{"position":[[329,9]]},"22":{"position":[[53,9],[314,11]]},"26":{"position":[[1161,9],[1669,9]]},"81":{"position":[[34,11]]},"87":{"position":[[141,9]]},"194":{"position":[[210,9]]},"196":{"position":[[326,11]]},"206":{"position":[[967,10]]},"388":{"position":[[44,9]]},"398":{"position":[[242,10]]},"402":{"position":[[192,10]]},"420":{"position":[[66,9]]},"552":{"position":[[418,10]]},"568":{"position":[[825,12]]}}}],["intellectu",{"_index":2492,"t":{"580":{"position":[[294,12]]}}}],["intend",{"_index":1734,"t":{"424":{"position":[[66,8]]},"448":{"position":[[5,7]]},"580":{"position":[[1042,8]]}}}],["intention",{"_index":1714,"t":{"418":{"position":[[104,13]]}}}],["inter",{"_index":2453,"t":{"566":{"position":[[1471,5]]}}}],["interact",{"_index":225,"t":{"16":{"position":[[346,12],[520,12]]},"24":{"position":[[87,8]]},"36":{"position":[[62,8]]},"58":{"position":[[56,13]]},"173":{"position":[[62,8]]},"192":{"position":[[478,8],[523,8]]},"236":{"position":[[180,8]]},"238":{"position":[[89,8]]},"252":{"position":[[53,11]]},"254":{"position":[[413,11]]},"262":{"position":[[8,8]]},"266":{"position":[[848,12]]},"268":{"position":[[95,11]]},"276":{"position":[[35,11]]},"310":{"position":[[29,8]]},"366":{"position":[[94,11]]},"408":{"position":[[186,8]]},"430":{"position":[[218,8]]},"518":{"position":[[179,12]]},"546":{"position":[[348,11]]},"548":{"position":[[152,12],[291,12]]}}}],["interconnect",{"_index":2107,"t":{"490":{"position":[[372,14]]}}}],["interest",{"_index":1308,"t":{"230":{"position":[[120,10]]},"376":{"position":[[155,9]]},"378":{"position":[[74,8],[112,10]]},"428":{"position":[[699,8]]},"560":{"position":[[531,10]]}}}],["interfac",{"_index":287,"t":{"24":{"position":[[44,9]]},"192":{"position":[[577,9]]},"200":{"position":[[19,9],[1159,11],[1989,9]]},"204":{"position":[[171,10]]}}}],["intern",{"_index":2529,"t":{"584":{"position":[[87,13]]},"596":{"position":[[1325,13],[1972,13]]}}}],["internet",{"_index":1654,"t":{"356":{"position":[[97,8],[135,8]]},"456":{"position":[[542,8]]},"540":{"position":[[114,8]]}}}],["interoper",{"_index":59,"t":{"6":{"position":[[190,17]]},"26":{"position":[[314,17]]}}}],["interpret",{"_index":2596,"t":{"598":{"position":[[423,14]]}}}],["interv",{"_index":1935,"t":{"460":{"position":[[1121,8]]}}}],["introduc",{"_index":1443,"t":{"272":{"position":[[275,10]]},"496":{"position":[[447,9]]},"506":{"position":[[12,10],[391,10]]}}}],["invalid",{"_index":523,"t":{"60":{"position":[[81,7],[188,10]]},"506":{"position":[[243,8]]},"598":{"position":[[537,7]]}}}],["invest",{"_index":2027,"t":{"477":{"position":[[3183,8]]}}}],["investig",{"_index":525,"t":{"60":{"position":[[230,11]]},"554":{"position":[[462,14],[610,14],[696,11],[802,14]]}}}],["invoc",{"_index":740,"t":{"97":{"position":[[54,10]]}}}],["involv",{"_index":1227,"t":{"208":{"position":[[593,8]]},"282":{"position":[[478,8]]},"296":{"position":[[236,8]]},"318":{"position":[[113,8]]},"500":{"position":[[766,8]]},"522":{"position":[[1045,9]]},"562":{"position":[[786,8]]}}}],["io4qdxtotg86ppck2kvmevcxc2advzwrxxsvnzeaoa0jhshbm5qed69rqz1s1mweeqj3aoklo_7eu9iibcpmveklcqbgmlkgny0ixnly3ayntzrmaeddbhk1gx6y_zv5dvw5qb3dtsommvhtzo1wsorrf2lol2ddwrwgimohxdha3uyaw",{"_index":958,"t":{"139":{"position":[[618,177]]},"294":{"position":[[218,177],[441,177]]}}}],["ip",{"_index":811,"t":{"111":{"position":[[161,3]]},"125":{"position":[[224,3]]},"127":{"position":[[365,2],[389,2],[439,2],[481,2],[530,2]]},"135":{"position":[[352,4]]},"137":{"position":[[443,3],[669,3],[906,3]]},"141":{"position":[[526,4]]},"153":{"position":[[394,4]]},"218":{"position":[[573,3],[638,3]]},"220":{"position":[[243,3]]},"222":{"position":[[513,2]]},"230":{"position":[[99,2]]},"282":{"position":[[259,3]]},"302":{"position":[[778,2]]},"316":{"position":[[103,2]]},"428":{"position":[[549,2],[620,2],[727,2],[833,2]]}}}],["ip4/0.0.0.0/tcp/60000/p2p/16uiu2hamqcsh9v81xoqtwgut3qwkzwbwy1tttqwpr3djhu2tswmn",{"_index":1486,"t":{"288":{"position":[[391,80]]}}}],["ip4/0.0.0.0/tcp/60000/p2p/16uiu2hamubpqufqqje3jiqob5yoiubbya59nb4qqezeitnghea6w",{"_index":1397,"t":{"262":{"position":[[269,82]]}}}],["ip4/0.0.0.0/tcp/60002/ws/p2p/16uiu2hakzjwwgeaxfegnmkfpspc6vgbrqcdtlg5q3gmk2v4pqw7h",{"_index":1003,"t":{"153":{"position":[[528,86]]},"157":{"position":[[307,86]]}}}],["ip4/0.0.0.0/tcp/60003/ws/p2p/16uiu2hamfba7lgtwy5wvvikdmxvo3cklqkmvvtudu63fe8safeqj",{"_index":1004,"t":{"153":{"position":[[615,86]]},"157":{"position":[[394,86]]}}}],["ip4/0.0.0.0/tcp/8000/ws/p2p/16uiu2hamqcsh9v81xoqtwgut3qwkzwbwy1tttqwpr3djhu2tswmn",{"_index":1487,"t":{"288":{"position":[[502,82]]}}}],["ipf",{"_index":345,"t":{"26":{"position":[[2640,4]]},"296":{"position":[[970,5],[1041,4]]},"508":{"position":[[81,5]]}}}],["ipt",{"_index":2412,"t":{"562":{"position":[[2005,3]]}}}],["ipv4",{"_index":814,"t":{"111":{"position":[[294,4]]},"302":{"position":[[18,4],[67,4]]}}}],["ish",{"_index":2078,"t":{"484":{"position":[[29,4],[92,4]]}}}],["isload",{"_index":1130,"t":{"198":{"position":[[791,9],[918,11]]},"200":{"position":[[641,9]]}}}],["isn't",{"_index":321,"t":{"26":{"position":[[1737,5]]}}}],["issu",{"_index":168,"t":{"10":{"position":[[243,5]]},"20":{"position":[[264,6]]},"26":{"position":[[2103,6]]},"32":{"position":[[990,7]]},"50":{"position":[[15,6]]},"56":{"position":[[673,6],[909,6]]},"62":{"position":[[322,5],[397,6]]},"218":{"position":[[900,6]]},"252":{"position":[[902,6]]},"264":{"position":[[241,6]]},"454":{"position":[[5,5]]},"479":{"position":[[37,6]]},"482":{"position":[[137,5]]},"526":{"position":[[549,7]]},"536":{"position":[[29,6]]},"538":{"position":[[11,5]]},"540":{"position":[[1034,5],[1307,6],[1495,5]]},"550":{"position":[[485,6],[621,7]]},"554":{"position":[[480,7],[880,6],[912,5]]},"560":{"position":[[824,5]]}}}],["it'",{"_index":339,"t":{"26":{"position":[[2510,4]]},"56":{"position":[[176,4]]},"256":{"position":[[190,4]]},"492":{"position":[[462,4]]},"512":{"position":[[875,4]]},"544":{"position":[[802,4]]},"558":{"position":[[230,4]]},"566":{"position":[[740,4],[2255,4]]}}}],["item",{"_index":1190,"t":{"200":{"position":[[2315,6]]},"556":{"position":[[262,5]]}}}],["itself",{"_index":1038,"t":{"169":{"position":[[458,7]]},"304":{"position":[[1559,7]]},"473":{"position":[[1359,6]]},"488":{"position":[[273,6]]},"494":{"position":[[255,7]]},"516":{"position":[[156,6]]},"566":{"position":[[1526,7]]}}}],["iu4qbkyj8ovxwz4fialxz_1a8docu2wc",{"_index":1490,"t":{"292":{"position":[[212,32],[445,32]]}}}],["iu4qcqzxzdb_jsymloyor0f5e_95hbiywgo_wgx2riddbmcjzktzmlcr0wmmzv47lgik_tvwww5ming90ris83tismbgmlkgny0gmlwhaaaaacjc2vjcdi1nmsxoqpszztg",{"_index":1399,"t":{"262":{"position":[[371,131]]}}}],["javascript",{"_index":2,"t":{"2":{"position":[[23,10],[151,10]]},"22":{"position":[[227,10]]},"26":{"position":[[70,10],[1453,10],[1722,10]]},"54":{"position":[[161,10]]},"192":{"position":[[594,10]]},"194":{"position":[[23,10]]}}}],["javascript/typescript",{"_index":281,"t":{"22":{"position":[[167,21]]}}}],["jmeter",{"_index":1995,"t":{"475":{"position":[[416,7],[584,6],[787,6]]}}}],["join",{"_index":1395,"t":{"260":{"position":[[3,4]]},"300":{"position":[[3,4]]}}}],["jq",{"_index":699,"t":{"93":{"position":[[240,2]]}}}],["js",{"_index":159,"t":{"10":{"position":[[112,3],[256,2]]},"46":{"position":[[969,2]]},"147":{"position":[[266,2],[425,2]]},"190":{"position":[[878,2]]},"572":{"position":[[387,3],[421,3]]}}}],["json",{"_index":79,"t":{"6":{"position":[[447,4]]},"26":{"position":[[425,5]]},"107":{"position":[[278,4]]}}}],["judg",{"_index":2566,"t":{"596":{"position":[[506,6]]}}}],["jump",{"_index":2406,"t":{"562":{"position":[[1342,4]]}}}],["juri",{"_index":2568,"t":{"596":{"position":[[615,4]]}}}],["jurisdict",{"_index":2501,"t":{"580":{"position":[[826,13]]},"596":{"position":[[650,14]]}}}],["k",{"_index":521,"t":{"60":{"position":[[50,1],[128,1]]},"232":{"position":[[17,1]]},"234":{"position":[[584,1],[595,1],[771,1],[829,1]]},"526":{"position":[[346,1],[404,1]]}}}],["kademlia'",{"_index":918,"t":{"127":{"position":[[587,10]]}}}],["kb",{"_index":1963,"t":{"473":{"position":[[293,3]]}}}],["kbyte",{"_index":1873,"t":{"458":{"position":[[817,6],[1034,6],[1623,6]]},"460":{"position":[[502,6]]}}}],["kbytes/msg",{"_index":1924,"t":{"460":{"position":[[726,10]]}}}],["kbytes/sec",{"_index":1926,"t":{"460":{"position":[[743,10],[785,10]]}}}],["keen",{"_index":2356,"t":{"546":{"position":[[107,4]]},"554":{"position":[[361,4]]},"556":{"position":[[55,4],[180,4]]}}}],["keep",{"_index":309,"t":{"26":{"position":[[866,7]]},"64":{"position":[[177,4]]},"85":{"position":[[279,4]]},"97":{"position":[[136,4]]},"113":{"position":[[1348,4],[1372,4]]},"228":{"position":[[113,4]]},"477":{"position":[[1711,5]]},"482":{"position":[[888,4]]},"526":{"position":[[98,5]]},"540":{"position":[[411,4]]}}}],["kept",{"_index":2583,"t":{"596":{"position":[[1742,4]]}}}],["key",{"_index":463,"t":{"54":{"position":[[89,4],[172,3]]},"83":{"position":[[43,3],[157,4],[258,3],[641,3],[1265,3],[1357,3]]},"85":{"position":[[31,3],[64,3],[157,4],[274,4],[353,3],[374,4],[521,3],[792,3],[996,3],[1440,3]]},"87":{"position":[[313,3],[536,4],[855,3],[935,4],[1292,3],[1360,3],[1587,3],[1655,3],[2045,3],[2134,3],[2388,3],[2815,3],[2896,3],[3078,3]]},"89":{"position":[[27,4],[140,4],[187,3],[269,3],[364,4],[554,4],[658,4],[796,4]]},"105":{"position":[[182,3]]},"109":{"position":[[232,3]]},"113":{"position":[[477,3],[507,3],[551,3],[585,3],[837,3],[849,3]]},"131":{"position":[[213,3],[239,3]]},"137":{"position":[[284,5],[346,3]]},"169":{"position":[[136,3]]},"230":{"position":[[379,5],[456,3]]},"234":{"position":[[244,4]]},"246":{"position":[[34,3]]},"306":{"position":[[26,3],[144,3],[215,4],[258,3],[495,3],[546,3],[629,3],[728,3],[829,3],[846,3],[1015,3]]},"308":{"position":[[461,3],[488,3],[707,3],[734,3],[1058,3],[1197,3]]},"360":{"position":[[7,3],[55,3]]},"372":{"position":[[121,4]]},"402":{"position":[[104,3]]},"446":{"position":[[118,3]]},"479":{"position":[[624,3],[687,3]]}}}],["key={index",{"_index":1154,"t":{"200":{"position":[[1265,11]]}}}],["key]@[domain",{"_index":947,"t":{"137":{"position":[[603,12]]},"155":{"position":[[433,12]]}}}],["keystore/keystore.json",{"_index":1355,"t":{"246":{"position":[[314,22]]}}}],["kind",{"_index":764,"t":{"107":{"position":[[211,4]]},"580":{"position":[[146,5]]}}}],["kit",{"_index":291,"t":{"24":{"position":[[172,3]]}}}],["knowledg",{"_index":1508,"t":{"296":{"position":[[1285,9]]},"380":{"position":[[58,9]]},"516":{"position":[[427,9]]},"518":{"position":[[134,10]]}}}],["known",{"_index":1410,"t":{"266":{"position":[[222,5]]},"516":{"position":[[732,5]]},"544":{"position":[[2080,5]]},"596":{"position":[[2160,5]]}}}],["l",{"_index":737,"t":{"95":{"position":[[197,1]]}}}],["laid",{"_index":1776,"t":{"436":{"position":[[240,4]]}}}],["languag",{"_index":278,"t":{"22":{"position":[[78,9]]},"596":{"position":[[1765,8]]}}}],["laptop",{"_index":2258,"t":{"540":{"position":[[88,6]]},"544":{"position":[[600,7]]}}}],["larg",{"_index":1501,"t":{"296":{"position":[[1057,6],[1178,5]]},"574":{"position":[[123,5]]}}}],["larger",{"_index":1281,"t":{"220":{"position":[[567,6]]}}}],["last",{"_index":1094,"t":{"190":{"position":[[710,4]]},"304":{"position":[[1246,4]]},"424":{"position":[[13,4]]},"576":{"position":[[13,4]]}}}],["lastmessag",{"_index":1075,"t":{"188":{"position":[[628,11]]}}}],["late",{"_index":2184,"t":{"512":{"position":[[122,4]]}}}],["latenc",{"_index":1278,"t":{"220":{"position":[[411,8]]},"282":{"position":[[186,8]]},"318":{"position":[[279,8]]},"488":{"position":[[569,7]]},"562":{"position":[[1376,7]]},"564":{"position":[[453,7]]},"566":{"position":[[1482,7]]}}}],["latency=100m",{"_index":2421,"t":{"564":{"position":[[430,14]]}}}],["later",{"_index":1456,"t":{"276":{"position":[[929,5]]},"326":{"position":[[121,6]]},"530":{"position":[[292,6]]}}}],["latest",{"_index":156,"t":{"10":{"position":[[76,6]]},"91":{"position":[[92,6]]},"145":{"position":[[354,6]]},"256":{"position":[[606,6]]},"492":{"position":[[140,6]]}}}],["latitud",{"_index":1960,"t":{"473":{"position":[[241,8]]}}}],["launch",{"_index":1358,"t":{"248":{"position":[[0,6]]}}}],["law",{"_index":2498,"t":{"580":{"position":[[708,4],[976,5]]},"588":{"position":[[639,4]]},"594":{"position":[[6,3],[145,4]]},"596":{"position":[[66,3]]}}}],["lawsuit",{"_index":2589,"t":{"596":{"position":[[2241,7]]}}}],["layer",{"_index":239,"t":{"16":{"position":[[741,5],[824,5],[908,5]]},"410":{"position":[[248,5]]},"412":{"position":[[16,6]]},"414":{"position":[[46,7]]}}}],["lead",{"_index":1547,"t":{"306":{"position":[[50,7]]},"414":{"position":[[283,7]]},"526":{"position":[[722,5]]}}}],["leaf",{"_index":1289,"t":{"222":{"position":[[402,4]]}}}],["leak",{"_index":1512,"t":{"296":{"position":[[1556,4]]}}}],["learn",{"_index":92,"t":{"8":{"position":[[68,5],[189,5],[324,5],[458,5],[592,5],[727,5],[880,5],[1009,5],[1133,5],[1265,5]]},"12":{"position":[[286,5]]},"26":{"position":[[494,5],[628,5]]},"36":{"position":[[515,5]]},"99":{"position":[[182,5]]},"101":{"position":[[174,5]]},"192":{"position":[[80,5]]},"206":{"position":[[1157,5]]},"208":{"position":[[443,5]]},"218":{"position":[[1163,5]]},"222":{"position":[[537,8]]},"224":{"position":[[308,5]]},"238":{"position":[[51,5]]},"252":{"position":[[1199,5]]},"258":{"position":[[178,5]]},"264":{"position":[[519,5]]},"294":{"position":[[815,5]]},"296":{"position":[[121,5]]},"404":{"position":[[533,5]]}}}],["leav",{"_index":1881,"t":{"458":{"position":[[1116,5]]},"490":{"position":[[658,7]]},"544":{"position":[[2514,7]]}}}],["led",{"_index":2428,"t":{"564":{"position":[[834,3]]}}}],["legal",{"_index":1740,"t":{"426":{"position":[[212,5]]},"428":{"position":[[199,5]]},"578":{"position":[[152,5]]},"580":{"position":[[431,9],[785,7],[1565,6]]},"588":{"position":[[93,5]]}}}],["legal@free.technolog",{"_index":1799,"t":{"442":{"position":[[89,22]]},"598":{"position":[[902,22]]}}}],["legisl",{"_index":1752,"t":{"428":{"position":[[245,12]]},"434":{"position":[[713,12]]},"436":{"position":[[269,12]]}}}],["legitim",{"_index":1755,"t":{"428":{"position":[[688,10]]}}}],["leobago",{"_index":2280,"t":{"542":{"position":[[175,8]]}}}],["less",{"_index":921,"t":{"127":{"position":[[623,4]]},"240":{"position":[[113,5]]},"408":{"position":[[267,5]]},"544":{"position":[[437,5],[1085,4],[1803,4]]},"562":{"position":[[237,4],[248,4]]}}}],["let",{"_index":1031,"t":{"167":{"position":[[232,4]]},"456":{"position":[[14,4]]},"458":{"position":[[687,4]]},"460":{"position":[[202,4]]}}}],["let'",{"_index":1134,"t":{"200":{"position":[[0,5]]},"308":{"position":[[1303,5]]},"562":{"position":[[0,5]]}}}],["level",{"_index":757,"t":{"107":{"position":[[35,5],[76,5],[105,7]]},"167":{"position":[[99,5]]},"224":{"position":[[98,5]]},"286":{"position":[[113,6]]},"336":{"position":[[68,5]]},"434":{"position":[[297,5]]},"477":{"position":[[1726,5]]},"562":{"position":[[64,6]]}}}],["leverag",{"_index":1652,"t":{"352":{"position":[[57,9]]},"358":{"position":[[64,9]]},"546":{"position":[[150,8]]}}}],["liabil",{"_index":1795,"t":{"438":{"position":[[179,9]]},"458":{"position":[[2954,9]]},"588":{"position":[[73,10],[484,9],[572,9]]}}}],["liabl",{"_index":2537,"t":{"586":{"position":[[498,6]]},"588":{"position":[[20,6]]}}}],["lib",{"_index":714,"t":{"93":{"position":[[527,4]]}}}],["libp2p",{"_index":452,"t":{"50":{"position":[[86,6]]},"52":{"position":[[195,7]]},"54":{"position":[[277,6]]},"79":{"position":[[185,6]]},"109":{"position":[[318,6],[755,6]]},"141":{"position":[[890,6]]},"155":{"position":[[623,7],[935,7]]},"157":{"position":[[670,7]]},"169":{"position":[[172,6]]},"210":{"position":[[655,6]]},"280":{"position":[[117,6]]},"296":{"position":[[298,6]]},"320":{"position":[[126,6]]},"350":{"position":[[0,6]]},"414":{"position":[[60,6]]},"446":{"position":[[30,7]]},"452":{"position":[[0,6]]},"473":{"position":[[723,8]]}}}],["libp2p'",{"_index":1810,"t":{"448":{"position":[[75,8]]}}}],["libp2p.getp",{"_index":1017,"t":{"159":{"position":[[66,17]]}}}],["libp2p/bootstrap",{"_index":1016,"t":{"157":{"position":[[157,20]]}}}],["libpq",{"_index":708,"t":{"93":{"position":[[372,5]]}}}],["libpq.5.dylib",{"_index":721,"t":{"93":{"position":[[672,13]]}}}],["libpq5",{"_index":698,"t":{"93":{"position":[[233,6]]}}}],["libpqisbusi",{"_index":2035,"t":{"477":{"position":[[3647,13]]}}}],["librari",{"_index":689,"t":{"93":{"position":[[130,8]]},"388":{"position":[[16,10]]},"550":{"position":[[47,9]]},"554":{"position":[[392,8]]}}}],["licenc",{"_index":2531,"t":{"584":{"position":[[138,7],[342,8]]}}}],["licens",{"_index":1800,"t":{"442":{"position":[[129,8]]},"584":{"position":[[101,7]]},"598":{"position":[[942,8]]}}}],["light",{"_index":97,"t":{"8":{"position":[[167,5],[231,5],[253,5],[380,5]]},"28":{"position":[[169,5],[211,5]]},"34":{"position":[[88,5],[126,5]]},"36":{"position":[[47,5],[161,5]]},"40":{"position":[[191,7]]},"44":{"position":[[49,5],[415,5]]},"46":{"position":[[911,5],[963,5],[976,5]]},"83":{"position":[[699,5]]},"85":{"position":[[850,5]]},"87":{"position":[[1750,5]]},"171":{"position":[[47,5]]},"173":{"position":[[47,5],[161,5]]},"190":{"position":[[816,5]]},"198":{"position":[[297,5],[437,5],[604,5],[759,5],[841,5]]},"200":{"position":[[609,5],[1080,5]]},"202":{"position":[[387,5]]},"230":{"position":[[23,5]]},"260":{"position":[[527,5]]},"266":{"position":[[800,5]]},"274":{"position":[[289,5]]},"278":{"position":[[165,5]]},"312":{"position":[[25,5]]},"314":{"position":[[25,5],[51,5],[163,5]]},"324":{"position":[[23,5]]},"328":{"position":[[0,5],[321,5]]},"346":{"position":[[34,5]]},"352":{"position":[[2,5]]},"354":{"position":[[0,5],[34,5]]},"370":{"position":[[57,5]]},"422":{"position":[[522,5]]},"482":{"position":[[549,5]]},"510":{"position":[[245,5],[292,5],[455,5],[526,5],[615,5],[677,5],[717,5]]},"514":{"position":[[16,5]]},"522":{"position":[[934,5]]},"536":{"position":[[459,5]]},"544":{"position":[[723,5],[1573,5],[1689,5]]}}}],["lightn",{"_index":2213,"t":{"522":{"position":[[674,10]]}}}],["lightnodeprovid",{"_index":1118,"t":{"198":{"position":[[90,17],[246,17],[484,18],[535,20]]}}}],["lightpush",{"_index":887,"t":{"119":{"position":[[31,9],[54,9],[125,9]]},"155":{"position":[[520,10]]},"157":{"position":[[550,10]]},"314":{"position":[[81,9],[245,9],[400,9]]},"510":{"position":[[281,10],[990,10]]},"536":{"position":[[475,10]]}}}],["lightpush.send",{"_index":426,"t":{"44":{"position":[[110,16]]}}}],["lightpush=tru",{"_index":1598,"t":{"314":{"position":[[119,14]]}}}],["lightpushnod",{"_index":888,"t":{"119":{"position":[[85,13]]},"314":{"position":[[191,13]]}}}],["lightpushnode=/dns4/nod",{"_index":1600,"t":{"314":{"position":[[464,24]]}}}],["lightpushnode=[light",{"_index":1599,"t":{"314":{"position":[[309,20]]}}}],["lightweight",{"_index":1304,"t":{"226":{"position":[[924,11]]},"254":{"position":[[11,11]]},"324":{"position":[[149,11]]},"346":{"position":[[158,11]]}}}],["like",{"_index":226,"t":{"16":{"position":[[364,5]]}}}],["limit",{"_index":326,"t":{"26":{"position":[[1784,12]]},"56":{"position":[[228,11]]},"64":{"position":[[143,11]]},"75":{"position":[[72,12]]},"127":{"position":[[392,5],[484,5]]},"220":{"position":[[720,7]]},"246":{"position":[[186,7],[248,6]]},"274":{"position":[[73,7],[347,7]]},"278":{"position":[[87,7]]},"282":{"position":[[293,7]]},"296":{"position":[[1224,8],[1256,8]]},"322":{"position":[[60,5],[153,5]]},"324":{"position":[[245,7]]},"328":{"position":[[57,7]]},"352":{"position":[[27,7]]},"380":{"position":[[5,5],[93,8]]},"384":{"position":[[9,7]]},"386":{"position":[[63,5],[135,5]]},"394":{"position":[[130,7]]},"400":{"position":[[137,7]]},"404":{"position":[[281,8]]},"412":{"position":[[314,12]]},"418":{"position":[[418,5]]},"428":{"position":[[10,5]]},"430":{"position":[[19,7]]},"436":{"position":[[40,5]]},"450":{"position":[[259,7]]},"454":{"position":[[114,8],[301,8],[323,6]]},"456":{"position":[[587,7]]},"458":{"position":[[202,5],[227,5],[450,8],[711,5],[761,7],[2266,8],[2340,11],[3129,6]]},"460":{"position":[[917,5]]},"462":{"position":[[162,6],[201,5],[320,6]]},"465":{"position":[[83,5]]},"473":{"position":[[676,11]]},"490":{"position":[[519,7]]},"532":{"position":[[110,5]]},"538":{"position":[[277,5]]},"540":{"position":[[917,8],[994,7],[1396,5]]},"544":{"position":[[2435,7],[2774,5]]},"552":{"position":[[533,11]]},"558":{"position":[[125,11]]},"572":{"position":[[90,5],[149,7]]},"580":{"position":[[190,10]]},"588":{"position":[[513,7],[558,10]]},"590":{"position":[[228,10]]},"596":{"position":[[570,8],[2039,12]]},"598":{"position":[[402,6]]}}}],["line",{"_index":747,"t":{"99":{"position":[[141,4]]},"105":{"position":[[85,4]]},"161":{"position":[[83,4],[314,4]]},"163":{"position":[[51,4],[272,4]]},"165":{"position":[[516,4]]},"167":{"position":[[705,4]]},"192":{"position":[[859,4]]},"544":{"position":[[832,5]]}}}],["link",{"_index":720,"t":{"93":{"position":[[664,4]]},"230":{"position":[[94,4]]},"414":{"position":[[275,7]]},"416":{"position":[[110,7],[364,6],[502,6]]},"422":{"position":[[407,4],[501,4]]},"438":{"position":[[37,5]]},"512":{"position":[[351,6]]},"566":{"position":[[827,5]]},"580":{"position":[[613,6]]},"586":{"position":[[39,5],[182,7]]}}}],["linkabl",{"_index":1728,"t":{"422":{"position":[[284,8]]}}}],["linux",{"_index":677,"t":{"91":{"position":[[319,5]]},"93":{"position":[[169,5]]},"306":{"position":[[287,6],[462,6]]}}}],["list",{"_index":296,"t":{"24":{"position":[[374,4]]},"125":{"position":[[119,4]]},"137":{"position":[[190,4],[366,4],[884,5]]},"153":{"position":[[23,4],[478,4]]},"155":{"position":[[204,4],[230,4],[393,4]]},"157":{"position":[[257,4]]},"181":{"position":[[220,4]]},"183":{"position":[[191,4]]},"204":{"position":[[394,4]]},"218":{"position":[[203,4]]},"220":{"position":[[462,4],[574,4],[745,6],[880,8]]},"282":{"position":[[416,4]]},"496":{"position":[[512,4]]},"516":{"position":[[1096,4]]}}}],["listen",{"_index":409,"t":{"40":{"position":[[769,6]]},"109":{"position":[[258,6],[296,9],[383,9]]},"121":{"position":[[106,9],[163,9]]},"123":{"position":[[123,9],[188,9]]},"127":{"position":[[122,9]]},"131":{"position":[[114,9]]},"169":{"position":[[152,6]]},"192":{"position":[[1652,9]]},"218":{"position":[[833,10]]},"262":{"position":[[611,9]]},"286":{"position":[[63,9]]},"288":{"position":[[40,9],[118,9],[359,9],[474,9]]},"294":{"position":[[668,9]]},"308":{"position":[[286,9],[636,9]]},"310":{"position":[[229,9],[348,9],[793,9],[839,9]]},"360":{"position":[[86,9]]},"568":{"position":[[485,9]]}}}],["listenaddress",{"_index":1396,"t":{"262":{"position":[[248,18],[571,15]]}}}],["litig",{"_index":2562,"t":{"596":{"position":[[277,10],[474,10]]}}}],["live",{"_index":2216,"t":{"522":{"position":[[832,5]]},"534":{"position":[[162,4]]},"556":{"position":[[32,5]]},"564":{"position":[[541,4]]}}}],["ln",{"_index":725,"t":{"93":{"position":[[740,2]]}}}],["load",{"_index":254,"t":{"16":{"position":[[991,5]]},"105":{"position":[[43,5]]},"208":{"position":[[268,4]]},"248":{"position":[[144,6]]},"278":{"position":[[536,4]]},"340":{"position":[[129,4]]}}}],["local",{"_index":462,"t":{"54":{"position":[[57,5]]},"56":{"position":[[499,8]]},"89":{"position":[[290,5]]},"135":{"position":[[341,5]]},"141":{"position":[[515,5]]},"153":{"position":[[383,5],[818,5],[965,8]]},"216":{"position":[[221,8]]},"218":{"position":[[181,7]]},"308":{"position":[[887,5]]},"473":{"position":[[223,7]]},"477":{"position":[[735,8]]},"492":{"position":[[214,7]]},"500":{"position":[[636,5]]},"528":{"position":[[47,5]]},"580":{"position":[[970,5]]}}}],["localhost",{"_index":485,"t":{"56":{"position":[[516,9]]},"121":{"position":[[699,12]]}}}],["locat",{"_index":944,"t":{"137":{"position":[[379,9]]},"151":{"position":[[90,6]]},"192":{"position":[[1798,6]]},"252":{"position":[[101,8],[175,8],[350,8],[716,8]]},"262":{"position":[[161,8]]},"264":{"position":[[132,8]]},"266":{"position":[[171,6]]},"270":{"position":[[35,8]]},"334":{"position":[[136,6]]},"368":{"position":[[30,7]]},"540":{"position":[[1560,9]]}}}],["lock",{"_index":2173,"t":{"506":{"position":[[448,4]]}}}],["log",{"_index":131,"t":{"8":{"position":[[1186,4]]},"26":{"position":[[2044,4]]},"48":{"position":[[59,4]]},"50":{"position":[[47,4],[140,4]]},"52":{"position":[[16,4],[112,4],[167,4],[246,4]]},"54":{"position":[[14,4],[230,4],[290,4],[321,4]]},"58":{"position":[[435,3]]},"107":{"position":[[31,3],[72,3],[162,3],[219,4]]},"123":{"position":[[238,7],[266,8]]},"167":{"position":[[95,3],[179,7]]},"192":{"position":[[634,4],[693,4],[742,4],[1712,4]]},"248":{"position":[[208,4],[281,4]]},"286":{"position":[[109,3],[177,4]]},"288":{"position":[[13,3],[73,3]]},"292":{"position":[[13,3],[82,3]]},"294":{"position":[[13,3],[85,3]]}}}],["log(1000)/log(6",{"_index":2404,"t":{"562":{"position":[[1029,16]]}}}],["log(total_nodes)/log(d)=5",{"_index":2101,"t":{"488":{"position":[[492,25]]}}}],["logging.logformat.text",{"_index":763,"t":{"107":{"position":[[173,22]]}}}],["logging.loglevel.info",{"_index":758,"t":{"107":{"position":[[41,21]]}}}],["logic",{"_index":1657,"t":{"364":{"position":[[91,5]]}}}],["logo",{"_index":1736,"t":{"426":{"position":[[135,5],[238,5],[350,8],[417,5]]},"578":{"position":[[75,5],[179,5],[291,8],[368,5]]}}}],["long",{"_index":203,"t":{"14":{"position":[[297,4]]},"296":{"position":[[804,4],[1064,4]]},"304":{"position":[[278,4]]},"456":{"position":[[232,4]]},"460":{"position":[[146,4]]},"522":{"position":[[827,4]]},"554":{"position":[[721,4]]},"562":{"position":[[1321,4]]}}}],["longer",{"_index":2098,"t":{"488":{"position":[[321,8]]}}}],["look",{"_index":87,"t":{"8":{"position":[[7,4]]},"16":{"position":[[1161,7]]},"28":{"position":[[125,4]]},"34":{"position":[[202,4]]},"36":{"position":[[459,4]]},"42":{"position":[[377,4]]},"46":{"position":[[951,4]]},"89":{"position":[[175,4],[1076,4]]},"99":{"position":[[221,4]]},"101":{"position":[[125,4]]},"131":{"position":[[426,4]]},"169":{"position":[[633,4]]},"190":{"position":[[860,4]]},"206":{"position":[[883,4],[1051,4]]},"208":{"position":[[407,4]]},"218":{"position":[[1114,4]]},"224":{"position":[[266,4]]},"252":{"position":[[1122,4]]},"258":{"position":[[243,4]]},"264":{"position":[[470,4]]},"288":{"position":[[0,4]]},"292":{"position":[[0,4]]},"294":{"position":[[0,4],[733,4]]},"404":{"position":[[638,4]]},"408":{"position":[[86,4],[303,4]]},"410":{"position":[[7,4]]},"460":{"position":[[962,7]]},"479":{"position":[[19,4]]},"582":{"position":[[37,7],[213,7],[549,7]]}}}],["lookup",{"_index":922,"t":{"127":{"position":[[637,6]]},"222":{"position":[[4,6],[169,6],[320,6]]}}}],["lose",{"_index":1838,"t":{"456":{"position":[[747,6],[1533,6]]}}}],["loss",{"_index":1971,"t":{"473":{"position":[[661,4]]}}}],["lost",{"_index":1970,"t":{"473":{"position":[[612,4],[930,4]]},"588":{"position":[[127,4]]}}}],["lot",{"_index":1226,"t":{"208":{"position":[[569,4]]},"446":{"position":[[51,3]]}}}],["low",{"_index":1277,"t":{"220":{"position":[[407,3],[420,3]]},"274":{"position":[[99,3]]},"278":{"position":[[386,3]]},"282":{"position":[[182,3],[195,3]]},"418":{"position":[[343,3]]},"500":{"position":[[559,3]]},"540":{"position":[[475,4]]},"544":{"position":[[355,3],[546,3]]}}}],["lower",{"_index":2400,"t":{"562":{"position":[[487,5]]},"566":{"position":[[678,5],[1836,6],[2129,5]]}}}],["lowest",{"_index":2347,"t":{"544":{"position":[[2240,6],[2308,6],[2450,6]]}}}],["luckili",{"_index":2104,"t":{"490":{"position":[[132,8]]}}}],["m",{"_index":2228,"t":{"526":{"position":[[297,1],[397,2]]},"560":{"position":[[210,1],[284,2]]},"562":{"position":[[1859,1]]}}}],["machin",{"_index":1364,"t":{"250":{"position":[[137,8]]},"477":{"position":[[936,7],[2011,7]]},"479":{"position":[[1066,7]]}}}],["maco",{"_index":678,"t":{"91":{"position":[[329,6]]},"93":{"position":[[175,5]]}}}],["made",{"_index":1377,"t":{"252":{"position":[[666,4]]},"540":{"position":[[1261,5]]},"580":{"position":[[1057,4]]},"584":{"position":[[33,4]]}}}],["magnitud",{"_index":2346,"t":{"544":{"position":[[2183,9],[3022,9]]}}}],["main",{"_index":1613,"t":{"318":{"position":[[301,4]]},"362":{"position":[[98,4]]},"456":{"position":[[936,4]]},"482":{"position":[[156,4],[579,4]]},"540":{"position":[[912,4]]}}}],["main.jsx",{"_index":1116,"t":{"198":{"position":[[7,8]]}}}],["mainli",{"_index":2269,"t":{"540":{"position":[[986,7]]},"564":{"position":[[144,6]]}}}],["maintain",{"_index":230,"t":{"16":{"position":[[414,8]]},"113":{"position":[[1163,8]]},"254":{"position":[[105,8]]},"306":{"position":[[86,8]]},"378":{"position":[[155,8]]},"432":{"position":[[128,8]]},"512":{"position":[[880,10]]},"556":{"position":[[63,8]]}}}],["mainten",{"_index":1470,"t":{"282":{"position":[[374,11]]}}}],["major",{"_index":732,"t":{"95":{"position":[[104,5]]},"458":{"position":[[1130,8]]}}}],["make",{"_index":684,"t":{"93":{"position":[[83,5]]},"97":{"position":[[24,4],[49,4],[121,4],[179,4]]},"101":{"position":[[24,4]]},"216":{"position":[[348,4]]},"244":{"position":[[236,4]]},"318":{"position":[[191,4]]},"326":{"position":[[75,6]]},"422":{"position":[[237,6]]},"430":{"position":[[138,6]]},"467":{"position":[[178,5]]},"475":{"position":[[433,4]]},"479":{"position":[[1462,6],[1569,6],[1840,6]]},"574":{"position":[[114,6],[153,5],[445,5]]},"580":{"position":[[367,4],[716,4]]},"596":{"position":[[97,4],[953,7]]}}}],["malici",{"_index":2475,"t":{"574":{"position":[[474,9]]}}}],["manag",{"_index":35,"t":{"4":{"position":[[59,8]]},"6":{"position":[[561,8]]},"8":{"position":[[1232,6],[1278,6]]},"26":{"position":[[2143,6],[2353,6]]},"28":{"position":[[38,6]]},"30":{"position":[[145,6]]},"32":{"position":[[1104,7]]},"73":{"position":[[262,10]]},"81":{"position":[[100,8]]},"113":{"position":[[441,11]]},"196":{"position":[[377,8]]},"338":{"position":[[68,10]]}}}],["mani",{"_index":545,"t":{"67":{"position":[[184,4]]},"320":{"position":[[350,4]]},"376":{"position":[[191,4]]},"382":{"position":[[213,4]]},"418":{"position":[[89,4]]},"506":{"position":[[362,4]]}}}],["manner",{"_index":2397,"t":{"560":{"position":[[429,7]]},"596":{"position":[[388,7]]}}}],["manual",{"_index":2007,"t":{"477":{"position":[[872,6],[1947,6]]}}}],["map",{"_index":1268,"t":{"218":{"position":[[766,8]]}}}],["margin",{"_index":1170,"t":{"200":{"position":[[1965,7],[2214,6],[2398,6]]}}}],["market",{"_index":245,"t":{"16":{"position":[[851,7]]},"582":{"position":[[181,7],[620,6]]}}}],["marketplac",{"_index":221,"t":{"16":{"position":[[242,13]]}}}],["massiv",{"_index":1891,"t":{"458":{"position":[[1834,9]]}}}],["master",{"_index":730,"t":{"95":{"position":[[70,7]]}}}],["match",{"_index":493,"t":{"56":{"position":[[728,5]]},"276":{"position":[[588,5],[983,8],[1095,5]]},"510":{"position":[[885,5]]},"514":{"position":[[329,7]]}}}],["math",{"_index":1920,"t":{"460":{"position":[[384,4]]}}}],["matrix",{"_index":2139,"t":{"500":{"position":[[54,7]]}}}],["matter",{"_index":2089,"t":{"486":{"position":[[51,6]]},"550":{"position":[[330,6]]},"562":{"position":[[1102,6]]},"580":{"position":[[1475,7]]},"582":{"position":[[437,7],[1123,7]]}}}],["max",{"_index":796,"t":{"109":{"position":[[710,3],[774,3]]},"117":{"position":[[363,3],[466,3]]},"460":{"position":[[614,4],[706,4],[758,4]]}}}],["maximum",{"_index":798,"t":{"109":{"position":[[729,7],[790,7],[848,7]]},"117":{"position":[[387,7],[484,7]]},"127":{"position":[[401,7],[492,7]]},"456":{"position":[[1033,7]]},"458":{"position":[[973,7],[1455,7],[1531,7],[1576,7],[2215,7]]},"460":{"position":[[887,7]]},"473":{"position":[[0,7],[444,7],[1461,7]]},"538":{"position":[[33,7],[109,7],[239,7]]},"540":{"position":[[1406,7],[1589,7]]},"544":{"position":[[69,7]]},"562":{"position":[[891,7]]},"580":{"position":[[669,7]]},"588":{"position":[[600,7]]}}}],["mb/gb",{"_index":1526,"t":{"304":{"position":[[543,6]]}}}],["mbits/sec",{"_index":1931,"t":{"460":{"position":[[822,10]]}}}],["mbp",{"_index":1844,"t":{"456":{"position":[[1220,4],[1423,5],[1662,6]]},"538":{"position":[[56,4],[289,4]]},"540":{"position":[[960,4],[1484,5],[1610,4]]},"542":{"position":[[93,4],[332,5],[428,4],[489,6],[503,6],[734,6],[755,6],[829,4],[844,4],[859,4]]},"544":{"position":[[1993,4],[2302,5],[2368,5],[2572,5],[2786,4]]}}}],["mbytes/",{"_index":1887,"t":{"458":{"position":[[1478,8],[1657,8],[1730,8]]}}}],["mbytes/sec",{"_index":1929,"t":{"460":{"position":[[806,10]]}}}],["mbytes/second",{"_index":1878,"t":{"458":{"position":[[1047,14]]}}}],["mean",{"_index":379,"t":{"32":{"position":[[1012,4]]},"276":{"position":[[140,5]]},"416":{"position":[[10,5]]},"434":{"position":[[197,5]]},"458":{"position":[[3215,7]]},"475":{"position":[[52,5]]},"486":{"position":[[228,5]]},"544":{"position":[[1367,7],[1484,7]]},"560":{"position":[[573,5]]},"576":{"position":[[375,5]]},"596":{"position":[[43,7]]},"598":{"position":[[760,4]]}}}],["meant",{"_index":2338,"t":{"544":{"position":[[1869,5]]}}}],["measur",{"_index":1726,"t":{"420":{"position":[[149,8]]},"428":{"position":[[803,8]]},"432":{"position":[[101,8]]},"475":{"position":[[769,8]]},"534":{"position":[[105,7]]},"560":{"position":[[716,8]]},"562":{"position":[[1406,8]]},"564":{"position":[[182,7],[514,13]]}}}],["mechan",{"_index":238,"t":{"16":{"position":[[682,9]]},"73":{"position":[[416,10]]},"133":{"position":[[184,10]]},"149":{"position":[[198,10]]},"192":{"position":[[1314,10]]},"208":{"position":[[55,9]]},"260":{"position":[[136,11],[363,9],[452,9]]},"266":{"position":[[146,9],[961,11]]},"270":{"position":[[135,11],[187,10]]},"272":{"position":[[313,9]]},"300":{"position":[[136,11]]},"340":{"position":[[27,9]]},"342":{"position":[[34,9]]},"370":{"position":[[34,9]]},"392":{"position":[[25,9]]},"402":{"position":[[117,10]]},"418":{"position":[[226,9]]},"448":{"position":[[28,10]]},"482":{"position":[[53,9]]},"508":{"position":[[185,11]]},"516":{"position":[[1170,10]]},"522":{"position":[[1084,10]]},"526":{"position":[[975,9]]}}}],["media",{"_index":255,"t":{"16":{"position":[[1004,5],[1101,5]]},"26":{"position":[[2536,5],[2603,5]]}}}],["median",{"_index":2285,"t":{"542":{"position":[[287,6],[718,6],[741,6]]},"564":{"position":[[637,6]]}}}],["meet",{"_index":1292,"t":{"224":{"position":[[225,4]]},"544":{"position":[[1208,4],[1544,7],[1608,7]]},"596":{"position":[[305,5]]}}}],["member",{"_index":994,"t":{"147":{"position":[[577,7]]},"296":{"position":[[1636,7]]},"482":{"position":[[906,7]]},"492":{"position":[[257,7],[344,7],[404,7]]}}}],["membership",{"_index":821,"t":{"113":{"position":[[307,10],[772,10]]},"240":{"position":[[173,10]]},"246":{"position":[[8,10],[283,10],[476,11]]},"248":{"position":[[130,10]]},"408":{"position":[[217,10],[499,11]]},"458":{"position":[[165,11],[344,10],[665,11],[731,11],[917,11],[1556,11],[1608,12],[1677,12],[2644,10],[2882,10],[3048,10]]},"460":{"position":[[273,10],[423,11],[444,10]]},"462":{"position":[[354,12]]},"482":{"position":[[367,10],[488,11]]}}}],["memori",{"_index":1533,"t":{"304":{"position":[[897,6]]},"384":{"position":[[110,7]]},"456":{"position":[[1726,7]]},"484":{"position":[[366,6]]},"494":{"position":[[70,6]]},"540":{"position":[[584,7]]}}}],["mempool",{"_index":248,"t":{"16":{"position":[[874,9]]}}}],["menduist",{"_index":2418,"t":{"564":{"position":[[250,9]]}}}],["mention",{"_index":1839,"t":{"456":{"position":[[836,7]]}}}],["merchant",{"_index":2489,"t":{"580":{"position":[[219,16]]}}}],["merg",{"_index":989,"t":{"147":{"position":[[489,5]]},"530":{"position":[[93,5]]}}}],["merkl",{"_index":839,"t":{"113":{"position":[[1071,6]]}}}],["mesh",{"_index":1221,"t":{"208":{"position":[[384,4]]},"266":{"position":[[368,5],[418,5]]},"564":{"position":[[237,5]]}}}],["messag",{"_index":47,"t":{"6":{"position":[[24,7],[142,7]]},"8":{"position":[[152,8],[219,8],[294,8],[368,8],[449,8],[547,8]]},"12":{"position":[[115,9]]},"14":{"position":[[156,9],[371,10]]},"16":{"position":[[471,7]]},"26":{"position":[[232,7],[382,9],[548,8],[589,8],[672,8],[753,9],[782,7],[879,8],[946,8],[1012,8],[1121,8]]},"28":{"position":[[154,8]]},"30":{"position":[[93,8],[241,7]]},"32":{"position":[[294,8],[574,7]]},"34":{"position":[[107,8],[159,8]]},"40":{"position":[[57,7],[235,7],[411,8],[520,7],[569,8],[656,8],[747,8]]},"42":{"position":[[26,7],[67,7],[130,7]]},"44":{"position":[[8,8],[83,7],[153,7],[250,8],[297,7],[401,7]]},"46":{"position":[[11,8],[78,7],[278,7],[604,8],[734,8],[870,8]]},"79":{"position":[[114,8],[134,7],[444,7]]},"83":{"position":[[51,7],[325,9],[354,7],[383,7],[505,7],[584,7],[660,8],[685,7],[774,8],[815,7],[847,8],[972,7],[1058,8],[1157,8]]},"85":{"position":[[463,9],[489,7],[538,7],[653,7],[732,7],[811,8],[836,7],[925,8],[963,7],[1016,8],[1134,7],[1218,8],[1317,8],[1545,7]]},"87":{"position":[[0,7],[62,9],[102,8],[189,8],[458,7],[487,7],[871,8],[904,7],[990,7],[1145,8],[1235,7],[1311,8],[1376,8],[1445,8],[1527,7],[1606,8],[1671,8],[1727,8],[2190,7],[2404,8],[2465,7],[2553,8],[2717,7],[2786,7],[3014,7],[3206,7],[3264,7]]},"89":{"position":[[51,7],[1014,8]]},"105":{"position":[[201,7]]},"113":{"position":[[1196,7]]},"115":{"position":[[133,7],[170,7],[354,7],[449,7],[556,7]]},"117":{"position":[[137,8]]},"119":{"position":[[148,8]]},"121":{"position":[[262,7]]},"147":{"position":[[338,7]]},"169":{"position":[[332,9],[423,8],[450,7]]},"171":{"position":[[98,8]]},"177":{"position":[[41,8],[75,7],[226,7]]},"179":{"position":[[142,9]]},"181":{"position":[[120,8],[291,7],[380,9],[448,9],[769,8]]},"183":{"position":[[90,8],[262,7],[348,9],[456,8],[530,8],[554,8],[778,8]]},"186":{"position":[[213,8],[312,8]]},"188":{"position":[[62,9],[132,8],[252,8],[461,8],[496,8],[755,8],[771,7]]},"190":{"position":[[57,8],[117,8],[294,8],[591,7],[656,7],[720,8],[802,8]]},"200":{"position":[[41,8],[67,9],[417,10],[678,7],[867,7],[1066,7],[1293,9],[1573,11],[1739,7],[1851,7],[2143,8],[2332,8]]},"202":{"position":[[8,8],[373,7],[496,7],[605,8],[648,7]]},"204":{"position":[[11,8],[138,9],[271,8],[313,9],[402,8]]},"206":{"position":[[11,8],[201,9],[337,8],[354,9],[430,8],[472,9],[567,8],[904,8]]},"224":{"position":[[66,8],[150,8],[203,8]]},"226":{"position":[[317,9],[420,7],[632,9]]},"232":{"position":[[172,9],[290,7],[454,7],[490,7],[614,7]]},"234":{"position":[[124,9],[407,8],[550,8]]},"236":{"position":[[240,9]]},"246":{"position":[[127,8],[218,8],[416,8]]},"248":{"position":[[59,9]]},"252":{"position":[[229,7],[598,8]]},"266":{"position":[[74,7],[460,8]]},"272":{"position":[[98,8],[150,7],[227,8]]},"274":{"position":[[206,9],[257,8],[312,7]]},"276":{"position":[[157,8],[251,8],[343,9],[444,8],[574,8],[661,7],[769,7],[915,8],[974,8],[1081,8]]},"296":{"position":[[156,9],[219,8],[550,7],[619,9],[684,8],[866,10],[1025,9],[1392,7],[1502,8],[1591,7],[1701,8]]},"304":{"position":[[10,7],[151,8],[212,7],[283,8],[712,7],[764,8],[904,7],[1030,7],[1092,7],[1221,8],[1319,7],[1365,7],[1524,8],[1551,7],[1675,8],[1719,9]]},"310":{"position":[[506,7],[1201,7]]},"312":{"position":[[265,8],[454,8]]},"314":{"position":[[268,8],[423,8]]},"320":{"position":[[89,8],[193,9]]},"322":{"position":[[162,8]]},"324":{"position":[[72,8],[416,9]]},"326":{"position":[[42,8],[206,8],[403,8]]},"328":{"position":[[167,9],[275,8]]},"330":{"position":[[5,7],[51,8],[205,7],[397,7],[506,8]]},"336":{"position":[[40,8],[98,7]]},"346":{"position":[[83,8]]},"354":{"position":[[54,8]]},"364":{"position":[[28,7],[97,7],[228,7]]},"374":{"position":[[115,7]]},"376":{"position":[[47,9],[87,8],[131,8]]},"378":{"position":[[189,8]]},"382":{"position":[[98,7]]},"386":{"position":[[144,8]]},"390":{"position":[[56,8],[123,8]]},"396":{"position":[[5,7],[38,8]]},"398":{"position":[[5,7],[181,7]]},"400":{"position":[[58,9]]},"404":{"position":[[33,9],[95,10],[467,7]]},"416":{"position":[[270,7],[323,8],[390,9]]},"418":{"position":[[94,9]]},"420":{"position":[[180,7]]},"454":{"position":[[332,7]]},"456":{"position":[[754,8],[815,9],[1250,8],[1540,9]]},"458":{"position":[[260,7],[274,7],[501,7],[798,7],[937,8],[1247,8],[1584,7],[1630,7],[1700,7],[2017,7],[2277,7],[2370,7],[2682,8],[2766,8],[2842,9],[2930,9],[3086,8],[3179,8],[3245,8],[3388,8]]},"460":{"position":[[119,8],[484,7],[577,8]]},"462":{"position":[[209,7],[263,8]]},"465":{"position":[[58,8],[146,7],[237,8]]},"467":{"position":[[48,7]]},"473":{"position":[[161,8],[271,7],[381,9],[599,8],[653,7],[779,8],[916,8],[950,7],[1031,8]]},"477":{"position":[[219,8],[428,8]]},"479":{"position":[[310,8],[452,7],[1426,8],[1533,8],[1803,8]]},"482":{"position":[[395,7],[722,8],[786,8]]},"486":{"position":[[74,8],[208,7],[267,8],[476,8]]},"488":{"position":[[172,7],[302,7],[413,8]]},"490":{"position":[[473,8]]},"492":{"position":[[304,9]]},"494":{"position":[[180,8]]},"496":{"position":[[434,9]]},"510":{"position":[[863,8],[947,8],[1035,7]]},"514":{"position":[[53,8],[303,7],[316,7],[508,9]]},"518":{"position":[[377,8]]},"530":{"position":[[35,9],[183,9],[215,8]]},"532":{"position":[[121,7]]},"536":{"position":[[265,7],[347,8]]},"540":{"position":[[289,9]]},"558":{"position":[[77,7],[182,7],[262,7],[318,8],[416,7],[485,7],[558,8]]},"560":{"position":[[86,8],[166,8],[202,7],[339,8],[480,8],[586,7],[681,7],[779,7],[886,7],[1009,7]]},"562":{"position":[[17,7],[187,7],[391,7],[580,7],[683,7],[921,7],[1134,8],[1290,7],[1465,9],[1490,8],[1639,7],[1654,7],[1705,8],[1758,7],[1851,7],[1946,7],[2094,7]]},"564":{"position":[[73,7],[804,8],[855,9]]},"566":{"position":[[31,7],[167,7],[372,8],[783,7],[1062,8],[1207,8],[1518,7],[1554,7],[1599,9],[1683,9],[2179,7]]},"572":{"position":[[170,9]]}}}],["message'",{"_index":1499,"t":{"296":{"position":[[750,9]]}}}],["message/10",{"_index":1872,"t":{"458":{"position":[[779,10]]}}}],["message/payload",{"_index":1050,"t":{"181":{"position":[[540,15]]},"183":{"position":[[655,15]]}}}],["message/proto",{"_index":1303,"t":{"226":{"position":[[752,13]]}}}],["messageindex\\\"\\ndetail",{"_index":2054,"t":{"479":{"position":[[661,25]]}}}],["messageobj",{"_index":444,"t":{"46":{"position":[[334,10],[382,10]]}}}],["messages.map((messag",{"_index":1153,"t":{"200":{"position":[[1224,23]]}}}],["messages.push(wakumessag",{"_index":1073,"t":{"188":{"position":[[303,27]]}}}],["messages/minut",{"_index":2110,"t":{"490":{"position":[[487,16]]}}}],["messages/sec",{"_index":1876,"t":{"458":{"position":[[1016,12]]}}}],["messages[messages.length",{"_index":1076,"t":{"188":{"position":[[642,24]]}}}],["messagespromis",{"_index":1057,"t":{"183":{"position":[[482,16]]}}}],["messagespromises.map(async",{"_index":1061,"t":{"183":{"position":[[584,26]]}}}],["messeng",{"_index":211,"t":{"16":{"position":[[5,11],[1033,11]]}}}],["meta",{"_index":1636,"t":{"330":{"position":[[238,4]]}}}],["metadata",{"_index":1290,"t":{"224":{"position":[[19,8]]},"396":{"position":[[110,8]]}}}],["metal",{"_index":2011,"t":{"477":{"position":[[944,6],[2019,6]]},"479":{"position":[[1074,6]]}}}],["method",{"_index":313,"t":{"26":{"position":[[1066,8],[1492,6]]},"36":{"position":[[444,7],[526,7]]},"73":{"position":[[221,7]]},"79":{"position":[[161,8],[270,6],[471,8]]},"83":{"position":[[1326,7]]},"85":{"position":[[1480,8]]},"87":{"position":[[352,7],[3129,7]]},"89":{"position":[[1060,8]]},"99":{"position":[[341,7]]},"109":{"position":[[460,6]]},"131":{"position":[[457,7]]},"145":{"position":[[63,8]]},"151":{"position":[[56,6],[226,6]]},"161":{"position":[[66,8],[265,6]]},"163":{"position":[[86,8]]},"165":{"position":[[477,6]]},"167":{"position":[[666,6]]},"181":{"position":[[73,6],[310,8]]},"183":{"position":[[281,8]]},"192":{"position":[[776,7],[969,7]]},"202":{"position":[[282,6]]},"220":{"position":[[287,6]]},"258":{"position":[[274,7]]},"296":{"position":[[383,6],[577,7]]},"308":{"position":[[32,6]]},"334":{"position":[[109,7]]},"362":{"position":[[117,6]]},"364":{"position":[[202,7]]},"398":{"position":[[169,7]]},"508":{"position":[[98,7]]},"524":{"position":[[17,7]]},"572":{"position":[[131,7],[377,6]]},"596":{"position":[[1602,7]]}}}],["metric",{"_index":901,"t":{"123":{"position":[[31,7],[63,7],[90,7],[148,7],[163,7],[215,7],[230,7],[258,7]]},"167":{"position":[[171,7]]},"236":{"position":[[258,7]]},"248":{"position":[[85,7]]},"250":{"position":[[75,7]]},"494":{"position":[[151,7]]},"534":{"position":[[52,7]]}}}],["microsoft",{"_index":1388,"t":{"256":{"position":[[910,9]]}}}],["migrat",{"_index":871,"t":{"115":{"position":[[567,9],[598,9]]},"410":{"position":[[407,7]]}}}],["million",{"_index":1990,"t":{"475":{"position":[[233,7]]}}}],["mind",{"_index":537,"t":{"64":{"position":[[185,5]]},"228":{"position":[[121,5]]}}}],["mine",{"_index":2164,"t":{"506":{"position":[[133,5]]}}}],["miner",{"_index":2163,"t":{"506":{"position":[[93,6],[168,6]]},"512":{"position":[[459,6]]}}}],["mini",{"_index":2094,"t":{"486":{"position":[[381,4]]}}}],["minim",{"_index":73,"t":{"6":{"position":[[384,9]]},"496":{"position":[[459,7]]},"554":{"position":[[545,7]]}}}],["minimum",{"_index":674,"t":{"91":{"position":[[246,7]]}}}],["minor",{"_index":2126,"t":{"494":{"position":[[159,5]]},"564":{"position":[[771,5]]}}}],["minut",{"_index":881,"t":{"117":{"position":[[248,7]]},"492":{"position":[[422,7]]}}}],["misbehav",{"_index":2146,"t":{"500":{"position":[[274,11]]}}}],["misbehaviour",{"_index":2175,"t":{"506":{"position":[[532,13]]}}}],["miss",{"_index":1042,"t":{"179":{"position":[[135,6]]},"326":{"position":[[199,6]]},"390":{"position":[[116,6]]},"500":{"position":[[580,4]]}}}],["mitig",{"_index":2472,"t":{"574":{"position":[[219,10]]}}}],["mkdir",{"_index":723,"t":{"93":{"position":[[710,5]]}}}],["mobil",{"_index":1435,"t":{"270":{"position":[[315,6]]},"356":{"position":[[192,6]]},"544":{"position":[[1751,7]]}}}],["model",{"_index":1702,"t":{"412":{"position":[[140,6]]},"524":{"position":[[100,5]]},"574":{"position":[[506,5]]}}}],["modern",{"_index":465,"t":{"54":{"position":[[122,6]]}}}],["modif",{"_index":1824,"t":{"454":{"position":[[216,13]]},"544":{"position":[[2957,14]]},"564":{"position":[[777,12]]}}}],["modifi",{"_index":461,"t":{"54":{"position":[[46,6]]},"87":{"position":[[2678,6]]},"200":{"position":[[77,6],[1890,6]]},"202":{"position":[[48,6]]},"220":{"position":[[478,9]]},"282":{"position":[[430,9]]},"440":{"position":[[7,6]]},"458":{"position":[[2482,9]]},"564":{"position":[[127,8]]},"584":{"position":[[168,6]]},"592":{"position":[[7,6]]},"598":{"position":[[386,7]]}}}],["modular",{"_index":1431,"t":{"270":{"position":[[81,7]]},"318":{"position":[[13,7]]},"350":{"position":[[12,7]]},"510":{"position":[[49,7]]}}}],["monetari",{"_index":2140,"t":{"500":{"position":[[85,8],[151,8],[192,8]]},"504":{"position":[[337,8]]},"506":{"position":[[54,8],[297,8],[411,8]]},"512":{"position":[[221,8],[289,8],[674,8],[725,8]]}}}],["money",{"_index":2234,"t":{"526":{"position":[[645,6]]}}}],["monitor",{"_index":1244,"t":{"212":{"position":[[132,10]]},"236":{"position":[[317,7]]},"238":{"position":[[76,8]]},"250":{"position":[[46,10]]},"254":{"position":[[93,7]]}}}],["more",{"_index":304,"t":{"26":{"position":[[500,5]]},"36":{"position":[[521,4]]},"75":{"position":[[91,4]]},"99":{"position":[[188,4]]},"183":{"position":[[45,4]]},"206":{"position":[[1163,5]]},"208":{"position":[[449,5]]},"224":{"position":[[314,5]]},"234":{"position":[[459,4]]},"260":{"position":[[85,4]]},"270":{"position":[[361,5]]},"296":{"position":[[1497,4]]},"300":{"position":[[85,4]]},"322":{"position":[[320,4]]},"374":{"position":[[178,5]]},"404":{"position":[[539,4]]},"406":{"position":[[420,4]]},"458":{"position":[[3113,4]]},"460":{"position":[[191,4]]},"467":{"position":[[295,4]]},"473":{"position":[[1162,4]]},"477":{"position":[[278,4],[1441,4],[2202,4],[2541,4],[2817,4]]},"479":{"position":[[1634,4],[1700,4],[1911,4]]},"512":{"position":[[561,4]]},"522":{"position":[[773,4],[807,4],[856,4],[1129,4]]},"524":{"position":[[4,4]]},"526":{"position":[[837,4]]},"528":{"position":[[9,4]]},"544":{"position":[[370,4]]},"562":{"position":[[289,4],[1503,4],[1609,4]]},"566":{"position":[[745,4],[981,4],[2373,4]]},"572":{"position":[[290,4]]},"574":{"position":[[719,4],[807,4]]}}}],["moreov",{"_index":2158,"t":{"504":{"position":[[253,9]]},"522":{"position":[[1095,9]]}}}],["mostli",{"_index":1445,"t":{"274":{"position":[[116,6]]},"356":{"position":[[0,6]]},"450":{"position":[[235,6]]},"544":{"position":[[935,6]]}}}],["motiv",{"_index":1383,"t":{"254":{"position":[[246,12]]}}}],["mount",{"_index":1951,"t":{"467":{"position":[[226,7]]},"473":{"position":[[96,8]]}}}],["move",{"_index":2459,"t":{"568":{"position":[[16,4]]}}}],["mpb",{"_index":2341,"t":{"544":{"position":[[2025,5],[2461,5]]}}}],["mpt=ipt_1+ipt_2+ipt_3+ipt_4",{"_index":2411,"t":{"562":{"position":[[1971,27]]}}}],["ms",{"_index":2393,"t":{"558":{"position":[[383,3]]},"566":{"position":[[1113,3],[1233,3],[1318,3]]}}}],["msg",{"_index":1062,"t":{"183":{"position":[[626,3]]},"458":{"position":[[2435,3],[2455,3]]}}}],["msg/day",{"_index":1918,"t":{"460":{"position":[[300,8],[476,7],[1086,8]]}}}],["msg/sec",{"_index":1923,"t":{"460":{"position":[[694,7],[714,7]]}}}],["msg1",{"_index":1453,"t":{"276":{"position":[[382,4],[638,4],[752,5],[859,4],[1054,4]]}}}],["msgs/sec",{"_index":1978,"t":{"473":{"position":[[1138,9],[1224,8]]}}}],["mu",{"_index":2437,"t":{"566":{"position":[[304,2]]}}}],["much",{"_index":1908,"t":{"458":{"position":[[2717,5]]},"473":{"position":[[1157,4]]},"477":{"position":[[3015,4]]},"488":{"position":[[385,4]]},"504":{"position":[[231,4]]}}}],["multi",{"_index":233,"t":{"16":{"position":[[556,5],[587,5]]}}}],["multiaddr",{"_index":512,"t":{"58":{"position":[[209,9]]},"62":{"position":[[114,9]]},"109":{"position":[[559,9],[651,9]]},"111":{"position":[[89,10],[182,10]]},"113":{"position":[[1287,9]]},"117":{"position":[[95,9]]},"119":{"position":[[104,9]]},"129":{"position":[[139,9]]},"135":{"position":[[213,9],[247,9]]},"141":{"position":[[200,9],[340,9]]},"153":{"position":[[31,9],[290,13]]},"220":{"position":[[257,10]]},"280":{"position":[[68,9],[288,11]]},"302":{"position":[[167,10],[550,9]]},"304":{"position":[[1609,10]]},"306":{"position":[[71,11]]},"312":{"position":[[332,10]]},"314":{"position":[[340,10]]},"316":{"position":[[140,9],[163,9],[206,10],[243,9],[317,9],[436,9]]}}}],["multiaddr=[multiaddr",{"_index":1606,"t":{"316":{"position":[[271,20]]}}}],["multiaddress",{"_index":792,"t":{"109":{"position":[[578,14],[695,14]]},"115":{"position":[[93,12]]}}}],["multimedia",{"_index":259,"t":{"16":{"position":[[1137,10]]}}}],["multipl",{"_index":277,"t":{"22":{"position":[[23,8]]},"133":{"position":[[160,8]]},"135":{"position":[[117,8]]},"137":{"position":[[495,8]]},"139":{"position":[[249,8]]},"232":{"position":[[191,8]]},"234":{"position":[[377,8]]},"256":{"position":[[62,8]]},"260":{"position":[[112,8]]},"266":{"position":[[937,8]]},"274":{"position":[[145,8]]},"300":{"position":[[112,8]]},"458":{"position":[[3379,8]]},"473":{"position":[[355,8]]},"490":{"position":[[454,8]]},"514":{"position":[[213,8]]},"518":{"position":[[317,8]]},"530":{"position":[[72,8]]},"540":{"position":[[380,8]]},"560":{"position":[[605,8]]},"562":{"position":[[599,8]]},"568":{"position":[[284,8]]}}}],["multipli",{"_index":1846,"t":{"456":{"position":[[1270,10]]}}}],["mvp",{"_index":2379,"t":{"554":{"position":[[38,3],[334,4]]}}}],["my_private_key.pem",{"_index":1558,"t":{"306":{"position":[[683,18],[747,18]]}}}],["n",{"_index":1374,"t":{"252":{"position":[[483,1]]},"473":{"position":[[105,3]]},"479":{"position":[[951,1]]},"526":{"position":[[228,2],[394,2]]}}}],["n1",{"_index":2409,"t":{"562":{"position":[[1891,2]]}}}],["n5",{"_index":2410,"t":{"562":{"position":[[1909,2]]}}}],["n_1...n_i",{"_index":2396,"t":{"560":{"position":[[249,9]]}}}],["naiv",{"_index":1886,"t":{"458":{"position":[[1332,5]]}}}],["name",{"_index":495,"t":{"56":{"position":[[745,5]]},"105":{"position":[[0,4]]},"107":{"position":[[0,4]]},"109":{"position":[[0,4]]},"111":{"position":[[0,4],[110,4],[149,4],[242,4],[258,4]]},"113":{"position":[[0,4]]},"115":{"position":[[0,4]]},"117":{"position":[[0,4]]},"119":{"position":[[0,4]]},"121":{"position":[[0,4]]},"123":{"position":[[0,4]]},"125":{"position":[[0,4],[173,4],[212,4]]},"127":{"position":[[0,4]]},"129":{"position":[[0,4]]},"131":{"position":[[0,4]]},"137":{"position":[[275,4],[403,4],[431,4],[508,4],[616,5],[640,4],[657,4],[708,4],[1105,4],[1143,4]]},"155":{"position":[[446,7]]},"163":{"position":[[175,5],[301,4]]},"165":{"position":[[78,4]]},"220":{"position":[[144,5],[341,4],[499,5],[614,5],[684,5]]},"226":{"position":[[125,5],[150,4],[341,5],[360,4]]},"272":{"position":[[22,4]]},"302":{"position":[[34,4],[112,4],[248,5],[287,4],[444,4],[584,5],[744,4],[851,4],[912,4]]},"306":{"position":[[663,4]]},"316":{"position":[[385,4]]},"342":{"position":[[116,5]]},"456":{"position":[[118,4]]}}}],["name=[domain",{"_index":1516,"t":{"302":{"position":[[235,12]]}}}],["name=nwakunode.com",{"_index":1517,"t":{"302":{"position":[[371,18]]}}}],["name}/{encod",{"_index":1295,"t":{"226":{"position":[[96,16]]}}}],["name}/{version}/{cont",{"_index":1294,"t":{"226":{"position":[[65,24]]}}}],["napkin",{"_index":1919,"t":{"460":{"position":[[377,6]]}}}],["nascent",{"_index":2355,"t":{"546":{"position":[[23,7]]}}}],["nat",{"_index":784,"t":{"109":{"position":[[444,3]]},"218":{"position":[[603,4]]},"316":{"position":[[365,3]]}}}],["nat=ani",{"_index":1259,"t":{"218":{"position":[[610,7]]}}}],["nat=extip:[your",{"_index":1258,"t":{"218":{"position":[[550,15]]}}}],["nativ",{"_index":8,"t":{"2":{"position":[[84,7],[125,6]]},"56":{"position":[[15,6]]},"194":{"position":[[84,7],[125,6]]},"506":{"position":[[47,6],[464,6]]},"512":{"position":[[29,6]]}}}],["natur",{"_index":563,"t":{"73":{"position":[[307,7]]},"596":{"position":[[908,6]]}}}],["nearest",{"_index":2283,"t":{"542":{"position":[[256,7]]}}}],["necessari",{"_index":1348,"t":{"244":{"position":[[245,9]]},"512":{"position":[[814,9]]},"554":{"position":[[436,9],[574,9]]}}}],["need",{"_index":195,"t":{"14":{"position":[[116,4]]},"56":{"position":[[956,4]]},"67":{"position":[[229,4]]},"89":{"position":[[332,4]]},"93":{"position":[[20,4]]},"202":{"position":[[40,4]]},"204":{"position":[[43,4]]},"206":{"position":[[38,4]]},"220":{"position":[[521,4]]},"234":{"position":[[568,6]]},"246":{"position":[[451,4]]},"254":{"position":[[239,6]]},"428":{"position":[[321,4],[418,6]]},"456":{"position":[[1614,5]]},"458":{"position":[[639,4]]},"460":{"position":[[25,4]]},"465":{"position":[[435,6]]},"486":{"position":[[284,4]]},"492":{"position":[[544,4]]},"496":{"position":[[140,5]]},"540":{"position":[[243,4]]},"548":{"position":[[219,5],[424,6]]},"562":{"position":[[2136,4],[2199,4]]}}}],["neglig",{"_index":2120,"t":{"492":{"position":[[376,11]]},"588":{"position":[[54,11]]}}}],["negoti",{"_index":1727,"t":{"420":{"position":[[325,11]]},"516":{"position":[[127,11],[489,12]]},"518":{"position":[[211,11],[287,10]]},"520":{"position":[[217,11]]}}}],["neighbor",{"_index":2150,"t":{"500":{"position":[[528,9],[672,10]]}}}],["neighbour",{"_index":965,"t":{"141":{"position":[[948,12]]}}}],["neighbourhood",{"_index":1462,"t":{"278":{"position":[[365,14]]}}}],["netflix",{"_index":2289,"t":{"542":{"position":[[437,7]]},"544":{"position":[[2119,7]]}}}],["network",{"_index":146,"t":{"8":{"position":[[1472,8],[1598,7]]},"14":{"position":[[31,7],[320,8]]},"16":{"position":[[983,7]]},"20":{"position":[[84,8]]},"24":{"position":[[110,7]]},"26":{"position":[[900,8],[1422,7],[2495,8]]},"30":{"position":[[71,8]]},"32":{"position":[[953,7]]},"36":{"position":[[85,8]]},"38":{"position":[[92,8]]},"40":{"position":[[599,7]]},"44":{"position":[[31,7]]},"46":{"position":[[893,7]]},"56":{"position":[[154,7]]},"62":{"position":[[22,10]]},"77":{"position":[[99,7]]},"79":{"position":[[314,8]]},"109":{"position":[[199,7],[613,8]]},"127":{"position":[[250,8]]},"133":{"position":[[108,8]]},"141":{"position":[[925,7],[1018,7]]},"147":{"position":[[606,7]]},"149":{"position":[[113,7],[371,8],[497,7]]},"173":{"position":[[85,8]]},"202":{"position":[[153,7],[672,7]]},"208":{"position":[[78,8],[336,8]]},"220":{"position":[[354,8]]},"232":{"position":[[40,7]]},"236":{"position":[[212,7]]},"246":{"position":[[50,8],[432,8]]},"252":{"position":[[497,7],[700,8]]},"254":{"position":[[387,8]]},"260":{"position":[[17,8]]},"264":{"position":[[454,8]]},"266":{"position":[[197,8],[446,7]]},"268":{"position":[[87,7]]},"270":{"position":[[67,8]]},"272":{"position":[[60,8],[167,8],[247,8]]},"276":{"position":[[91,8],[171,7]]},"278":{"position":[[222,8],[293,7]]},"280":{"position":[[426,8]]},"294":{"position":[[867,8]]},"296":{"position":[[427,8],[704,8],[1353,7]]},"300":{"position":[[17,8]]},"304":{"position":[[44,7]]},"310":{"position":[[61,8]]},"320":{"position":[[327,7]]},"322":{"position":[[202,8],[277,7]]},"324":{"position":[[197,8]]},"326":{"position":[[66,8],[435,8]]},"328":{"position":[[297,8],[408,7]]},"330":{"position":[[72,8],[477,7]]},"334":{"position":[[63,8],[162,8]]},"340":{"position":[[161,7]]},"344":{"position":[[136,8]]},"346":{"position":[[206,8]]},"348":{"position":[[94,8]]},"350":{"position":[[20,7],[141,7]]},"352":{"position":[[101,8]]},"354":{"position":[[76,7]]},"356":{"position":[[153,8]]},"358":{"position":[[83,7]]},"366":{"position":[[58,7]]},"368":{"position":[[89,8]]},"370":{"position":[[122,8]]},"372":{"position":[[54,7]]},"374":{"position":[[64,7]]},"382":{"position":[[190,7]]},"386":{"position":[[201,7]]},"390":{"position":[[72,8],[157,8]]},"392":{"position":[[17,7]]},"394":{"position":[[258,8]]},"396":{"position":[[59,8]]},"398":{"position":[[114,8]]},"400":{"position":[[9,7],[68,7]]},"404":{"position":[[9,7],[43,7],[559,8],[581,8]]},"406":{"position":[[82,8],[200,7],[351,8],[467,8]]},"408":{"position":[[552,8]]},"410":{"position":[[108,8],[190,7],[434,7]]},"420":{"position":[[353,8]]},"448":{"position":[[215,8],[298,8]]},"454":{"position":[[36,7]]},"456":{"position":[[1171,8],[1583,7]]},"458":{"position":[[1401,7],[1804,7],[1984,7]]},"482":{"position":[[280,7]]},"484":{"position":[[117,7]]},"488":{"position":[[561,7]]},"490":{"position":[[441,7],[600,7]]},"496":{"position":[[68,7]]},"502":{"position":[[40,8]]},"504":{"position":[[23,8]]},"506":{"position":[[80,8]]},"508":{"position":[[35,8]]},"510":{"position":[[125,8],[1056,8]]},"512":{"position":[[106,9],[550,7],[837,7]]},"524":{"position":[[295,7]]},"534":{"position":[[167,8]]},"544":{"position":[[415,7],[443,7],[738,7],[1139,7]]},"558":{"position":[[102,7],[141,7]]},"562":{"position":[[1066,7]]},"564":{"position":[[481,8]]},"566":{"position":[[109,7]]},"568":{"position":[[43,7],[150,7]]},"574":{"position":[[668,7]]}}}],["never",{"_index":2229,"t":{"526":{"position":[[372,5]]}}}],["new",{"_index":157,"t":{"10":{"position":[[83,5],[202,3]]},"16":{"position":[[1122,4]]},"32":{"position":[[290,3]]},"42":{"position":[[183,3]]},"44":{"position":[[79,3],[149,3]]},"46":{"position":[[600,3]]},"145":{"position":[[13,3]]},"169":{"position":[[127,3]]},"190":{"position":[[188,3],[218,3]]},"200":{"position":[[920,3]]},"202":{"position":[[492,3]]},"206":{"position":[[563,3]]},"218":{"position":[[15,3]]},"276":{"position":[[911,3]]},"306":{"position":[[15,3]]},"440":{"position":[[148,3]]},"482":{"position":[[613,3],[731,3],[825,3]]},"526":{"position":[[583,3],[764,3]]},"556":{"position":[[206,3],[340,3],[400,3]]},"592":{"position":[[174,3]]}}}],["newer",{"_index":68,"t":{"6":{"position":[[350,5]]}}}],["newli",{"_index":1208,"t":{"206":{"position":[[186,5]]},"506":{"position":[[127,5]]}}}],["newseq[protectedtopic](0",{"_index":753,"t":{"105":{"position":[[134,25]]}}}],["next",{"_index":113,"t":{"8":{"position":[[791,4]]},"24":{"position":[[194,4]]},"32":{"position":[[354,5]]},"143":{"position":[[53,4]]},"145":{"position":[[164,5]]},"188":{"position":[[169,4],[742,4]]},"196":{"position":[[286,5]]},"198":{"position":[[579,5]]},"200":{"position":[[1884,5]]},"458":{"position":[[3297,4]]},"467":{"position":[[16,4]]},"473":{"position":[[323,4]]},"477":{"position":[[364,4],[815,4],[1890,4]]}}}],["nft",{"_index":220,"t":{"16":{"position":[[238,3],[285,3]]}}}],["nightli",{"_index":1385,"t":{"256":{"position":[[582,7],[667,7]]}}}],["nim",{"_index":1381,"t":{"254":{"position":[[34,3]]},"465":{"position":[[4,3]]},"479":{"position":[[219,3],[1121,3]]}}}],["node",{"_index":100,"t":{"8":{"position":[[237,5],[386,5],[855,5],[908,4],[1317,4],[1367,4],[1426,5],[1496,5],[1615,5]]},"20":{"position":[[70,5],[196,4],[237,5],[284,4],[343,5]]},"24":{"position":[[123,4]]},"26":{"position":[[1442,6],[1583,5],[1653,5]]},"28":{"position":[[77,4]]},"32":{"position":[[1148,4]]},"34":{"position":[[94,4]]},"36":{"position":[[53,4],[167,4],[178,4],[301,4],[390,4],[481,5],[547,6]]},"38":{"position":[[53,4]]},"56":{"position":[[1069,4]]},"58":{"position":[[195,4]]},"79":{"position":[[213,4],[221,4]]},"91":{"position":[[52,4]]},"99":{"position":[[255,4],[322,4]]},"101":{"position":[[137,4]]},"103":{"position":[[23,4]]},"109":{"position":[[64,4],[84,4],[150,4],[219,4]]},"117":{"position":[[196,4]]},"121":{"position":[[580,4]]},"125":{"position":[[70,5],[114,4]]},"127":{"position":[[73,5],[83,4],[145,4],[180,4],[216,5],[419,5],[510,5]]},"129":{"position":[[129,4]]},"131":{"position":[[372,4],[438,4]]},"133":{"position":[[56,4],[148,4]]},"135":{"position":[[40,4],[290,4]]},"137":{"position":[[35,5],[126,4],[185,4],[828,4],[879,4]]},"139":{"position":[[28,5],[115,4],[160,5],[205,5],[465,4],[863,4]]},"141":{"position":[[35,5],[126,4],[183,4],[224,4],[405,5],[459,5],[476,5],[555,4],[640,4],[961,6]]},"149":{"position":[[58,4],[180,4],[214,4],[266,4],[325,5],[395,5],[514,5]]},"151":{"position":[[193,4],[239,4]]},"153":{"position":[[58,4],[205,4],[235,4],[332,4],[718,4],[752,4],[850,5]]},"155":{"position":[[15,4],[225,4],[388,4],[464,4],[561,4],[592,4],[735,4],[873,4],[904,4]]},"157":{"position":[[28,4],[494,4],[591,4],[639,4]]},"159":{"position":[[51,4],[193,4],[326,4]]},"161":{"position":[[5,5]]},"163":{"position":[[0,4],[234,4]]},"165":{"position":[[0,5],[316,4],[344,4]]},"167":{"position":[[0,5]]},"169":{"position":[[91,4],[131,4],[598,4],[645,4]]},"171":{"position":[[53,4]]},"173":{"position":[[53,4],[167,4],[178,4]]},"175":{"position":[[53,4]]},"179":{"position":[[100,5],[177,5]]},"181":{"position":[[99,5]]},"183":{"position":[[120,5]]},"190":{"position":[[822,4]]},"192":{"position":[[21,5],[124,5],[179,4],[314,5],[349,4],[434,5],[509,5],[553,4],[650,4],[688,4],[808,6],[839,5],[950,4],[1052,4],[1087,4],[1134,4],[1259,4],[1349,6],[1429,5],[1577,5],[1647,4],[1754,4],[1810,4]]},"198":{"position":[[303,4],[443,4],[610,4],[765,4],[778,5],[819,6],[847,4],[901,4],[952,4]]},"200":{"position":[[615,4],[628,5]]},"202":{"position":[[294,4],[343,5]]},"204":{"position":[[362,5]]},"206":{"position":[[401,5],[521,5]]},"208":{"position":[[232,6],[305,5],[374,5]]},"210":{"position":[[72,4]]},"212":{"position":[[60,4]]},"214":{"position":[[149,4],[234,5]]},"218":{"position":[[230,4],[920,4],[979,5],[1079,4],[1126,4]]},"220":{"position":[[39,4],[208,4],[582,5],[752,5]]},"222":{"position":[[151,4],[301,4]]},"236":{"position":[[104,4],[198,4],[299,4],[329,5]]},"238":{"position":[[23,4],[105,5]]},"240":{"position":[[218,4],[303,5]]},"246":{"position":[[114,4]]},"248":{"position":[[32,5],[220,4]]},"250":{"position":[[70,4]]},"252":{"position":[[11,4],[684,4],[922,4],[981,5],[1071,4],[1134,4]]},"254":{"position":[[64,5],[124,5],[370,4],[434,4],[500,4],[585,5]]},"256":{"position":[[9,5],[93,5],[177,4],[303,4],[387,4],[555,4],[755,4]]},"258":{"position":[[230,5],[255,4],[286,4]]},"260":{"position":[[26,5],[211,5],[333,5],[533,5],[572,4],[657,4]]},"262":{"position":[[38,4],[86,4],[117,4]]},"264":{"position":[[39,4],[63,4],[204,4],[261,4],[320,5],[437,4],[482,4]]},"266":{"position":[[25,5],[284,4],[736,4]]},"270":{"position":[[50,5]]},"274":{"position":[[336,5]]},"276":{"position":[[287,4],[353,4],[421,4],[522,4],[621,4],[682,4],[692,4],[721,4],[729,4],[807,5],[832,4],[840,4],[867,4],[941,4],[1025,4],[1033,4]]},"278":{"position":[[171,5],[205,5],[301,5],[451,5],[554,6]]},"280":{"position":[[383,6]]},"282":{"position":[[58,4],[170,5],[254,4],[328,5],[411,4]]},"284":{"position":[[61,4],[122,5]]},"286":{"position":[[23,5],[160,4],[204,4]]},"288":{"position":[[144,5]]},"290":{"position":[[8,4],[66,4]]},"292":{"position":[[162,5],[410,4]]},"294":{"position":[[168,5],[406,4],[720,5]]},"296":{"position":[[145,5],[326,4],[334,4],[1447,5]]},"298":{"position":[[56,4]]},"300":{"position":[[26,5]]},"302":{"position":[[85,4],[333,5],[398,5],[424,5],[494,5],[926,5]]},"304":{"position":[[268,4],[869,4],[1163,4],[1489,4],[1650,4]]},"306":{"position":[[0,5],[1010,4]]},"308":{"position":[[47,5],[221,4],[416,4],[841,4],[1001,4],[1375,5]]},"310":{"position":[[47,4],[176,4],[998,4],[1145,4]]},"312":{"position":[[228,4],[414,4]]},"314":{"position":[[229,4],[381,4]]},"320":{"position":[[355,5]]},"324":{"position":[[29,5]]},"326":{"position":[[294,4]]},"328":{"position":[[46,5]]},"334":{"position":[[46,4]]},"338":{"position":[[124,6]]},"342":{"position":[[146,4]]},"344":{"position":[[9,4],[77,6],[191,4]]},"346":{"position":[[40,5]]},"352":{"position":[[8,4],[75,5]]},"354":{"position":[[40,5]]},"358":{"position":[[2,4]]},"360":{"position":[[2,4],[141,5]]},"366":{"position":[[23,5]]},"368":{"position":[[25,4]]},"370":{"position":[[63,5],[109,5]]},"372":{"position":[[37,4]]},"374":{"position":[[42,5]]},"382":{"position":[[218,5]]},"394":{"position":[[168,4]]},"404":{"position":[[439,6]]},"406":{"position":[[330,5],[425,4]]},"408":{"position":[[115,4],[170,4]]},"410":{"position":[[91,4],[133,4]]},"422":{"position":[[164,5],[398,4],[492,4],[528,4]]},"448":{"position":[[46,6],[261,4]]},"456":{"position":[[323,5],[383,4],[708,4],[1154,5],[1329,4],[1854,4]]},"458":{"position":[[1146,6]]},"462":{"position":[[68,5]]},"465":{"position":[[13,5],[118,5],[276,5]]},"467":{"position":[[264,4]]},"473":{"position":[[38,4],[109,5],[140,5],[209,5],[364,5],[758,5],[1115,4],[1190,4],[1488,4]]},"475":{"position":[[102,4],[163,4],[265,4],[329,6],[347,4],[493,5],[530,5],[706,4]]},"477":{"position":[[102,4],[684,5],[1237,4]]},"479":{"position":[[100,5],[228,5],[1130,5],[1705,6]]},"482":{"position":[[334,6]]},"484":{"position":[[134,5]]},"486":{"position":[[246,4]]},"488":{"position":[[459,5]]},"490":{"position":[[387,6],[588,4],[651,6]]},"494":{"position":[[25,5]]},"496":{"position":[[106,5],[199,4]]},"500":{"position":[[172,4],[217,5],[516,5],[574,5],[645,4],[699,4]]},"510":{"position":[[402,4],[485,4],[591,5],[621,5],[667,4],[683,4]]},"538":{"position":[[154,5]]},"540":{"position":[[69,4],[312,4],[536,5],[834,5],[881,4]]},"544":{"position":[[400,6],[591,5],[642,5],[1197,4],[1501,4],[1534,5],[1598,5]]},"558":{"position":[[43,5]]},"560":{"position":[[148,5],[243,5],[325,4],[441,5],[542,5],[640,6],[760,4],[804,4]]},"562":{"position":[[220,6],[321,5],[337,5],[429,4],[522,5],[780,5],[865,5],[953,5],[1084,5],[1115,4],[1175,6],[1217,5],[1392,6],[1535,5],[1689,4],[1886,4],[2057,4]]},"564":{"position":[[720,5]]},"566":{"position":[[581,4],[633,5],[911,4],[1346,5],[1477,4],[1730,6],[1933,4],[2096,4]]},"568":{"position":[[345,6],[416,5],[457,5],[524,6],[608,5]]},"574":{"position":[[617,4]]}}}],["node'",{"_index":813,"t":{"111":{"position":[[280,6]]},"192":{"position":[[1606,6],[1705,6]]},"262":{"position":[[604,6]]},"302":{"position":[[141,6],[771,6]]},"372":{"position":[[107,6]]},"422":{"position":[[425,6]]},"500":{"position":[[309,6],[384,6]]},"512":{"position":[[367,6]]},"574":{"position":[[80,6]]}}}],["node.filter.createsubscript",{"_index":361,"t":{"32":{"position":[[213,33]]},"46":{"position":[[523,33]]}}}],["node.lightpush.send(eciesencod",{"_index":625,"t":{"87":{"position":[[1952,33]]}}}],["node.lightpush.send(encod",{"_index":438,"t":{"44":{"position":[[432,28]]},"83":{"position":[[716,28]]},"85":{"position":[[867,28]]}}}],["node.lightpush.send(symmetricencod",{"_index":623,"t":{"87":{"position":[[1838,37]]}}}],["node.start",{"_index":388,"t":{"36":{"position":[[242,13]]},"173":{"position":[[242,13]]}}}],["node.stop",{"_index":389,"t":{"36":{"position":[[315,12]]}}}],["node.store.querygenerator([decod",{"_index":1056,"t":{"183":{"position":[[403,37]]},"186":{"position":[[520,35]]},"190":{"position":[[495,35]]}}}],["node.store.querywithorderedcallback([decod",{"_index":589,"t":{"83":{"position":[[1189,46]]},"85":{"position":[[1349,46]]},"181":{"position":[[635,46]]},"186":{"position":[[434,46]]},"188":{"position":[[543,46],[833,46]]},"190":{"position":[[409,46]]}}}],["node=/ip4/0.0.0.0/tcp/60000/p2p/16uiu2hamlce6zvqcs6kmqqrbbhyojjfyzgr1q3thtsbykzibqkfr",{"_index":963,"t":{"141":{"position":[[751,85]]}}}],["node=[discv5",{"_index":956,"t":{"139":{"position":[[342,12],[399,12]]}}}],["node=[p",{"_index":960,"t":{"141":{"position":[[329,10]]}}}],["node=enr",{"_index":957,"t":{"139":{"position":[[608,9]]}}}],["node_a",{"_index":1993,"t":{"475":{"position":[[321,7],[671,6]]}}}],["node_b",{"_index":1994,"t":{"475":{"position":[[403,7],[628,6]]}}}],["node_c",{"_index":1996,"t":{"475":{"position":[[499,7]]}}}],["node_d",{"_index":1997,"t":{"475":{"position":[[511,8]]}}}],["node_opt",{"_index":1123,"t":{"198":{"position":[[322,12]]}}}],["node_requir",{"_index":1011,"t":{"155":{"position":[[488,17],[679,18],[1016,18]]},"157":{"position":[[518,17],[757,18]]}}}],["nodea",{"_index":1987,"t":{"475":{"position":[[84,6]]}}}],["nodeb",{"_index":1989,"t":{"475":{"position":[[145,6]]}}}],["nodec",{"_index":1991,"t":{"475":{"position":[[247,6]]}}}],["nodej",{"_index":124,"t":{"8":{"position":[[990,6],[1079,6]]},"26":{"position":[[1691,6],[1762,6],[1878,6]]},"48":{"position":[[109,6]]},"52":{"position":[[38,7]]},"64":{"position":[[96,6],[258,7]]},"67":{"position":[[54,6],[157,6],[210,7]]},"71":{"position":[[98,6]]},"73":{"position":[[94,7],[169,6],[338,7],[455,6]]},"75":{"position":[[28,6]]},"77":{"position":[[29,6],[119,6]]}}}],["nodekey",{"_index":773,"t":{"109":{"position":[[207,7]]},"306":{"position":[[157,7]]}}}],["nodekey=286cae9f2990bfc49dafdd3a9e737f56ddba3656e5e427108cef456fb67680e8",{"_index":1566,"t":{"306":{"position":[[1050,72]]}}}],["nodekey=[nod",{"_index":1548,"t":{"306":{"position":[[193,13]]}}}],["nodes=1000",{"_index":2427,"t":{"564":{"position":[[698,11]]}}}],["nois",{"_index":312,"t":{"26":{"position":[[1049,5]]},"79":{"position":[[192,5]]},"296":{"position":[[305,5]]},"402":{"position":[[5,5],[41,5]]},"420":{"position":[[204,5],[278,5]]}}}],["non",{"_index":2160,"t":{"504":{"position":[[333,3]]},"512":{"position":[[585,3]]},"536":{"position":[[333,3]]},"580":{"position":[[274,3]]},"586":{"position":[[419,3]]}}}],["none",{"_index":786,"t":{"109":{"position":[[527,5]]},"115":{"position":[[332,4]]},"304":{"position":[[600,4]]}}}],["nonetheless",{"_index":1775,"t":{"436":{"position":[[117,12]]}}}],["normal",{"_index":1979,"t":{"473":{"position":[[1176,6],[1513,6]]}}}],["north",{"_index":2291,"t":{"542":{"position":[[542,5]]},"544":{"position":[[2678,5]]}}}],["note",{"_index":473,"t":{"56":{"position":[[194,4]]},"161":{"position":[[216,4]]},"252":{"position":[[299,4],[638,4]]},"414":{"position":[[156,4]]},"446":{"position":[[162,7]]},"540":{"position":[[1156,4]]},"542":{"position":[[212,5]]},"544":{"position":[[1588,4],[2901,5]]},"552":{"position":[[317,4]]},"554":{"position":[[339,4],[408,4]]},"562":{"position":[[260,4]]},"564":{"position":[[274,4]]},"566":{"position":[[202,4],[356,5],[1693,4]]},"596":{"position":[[520,4]]}}}],["noth",{"_index":2129,"t":{"494":{"position":[[232,7]]},"554":{"position":[[831,7]]},"580":{"position":[[1628,7]]}}}],["notic",{"_index":760,"t":{"107":{"position":[[133,7]]},"440":{"position":[[81,7]]},"467":{"position":[[156,6]]},"477":{"position":[[658,6],[2125,6],[2464,6],[2740,6],[3480,7],[3741,6]]},"562":{"position":[[1182,6]]},"582":{"position":[[1392,6]]},"592":{"position":[[87,7]]},"596":{"position":[[870,6],[1108,6]]}}}],["notif",{"_index":1300,"t":{"226":{"position":[[601,13]]},"232":{"position":[[147,13],[652,12]]}}}],["notificationpayload",{"_index":1322,"t":{"232":{"position":[[462,19],[632,19]]}}}],["novemb",{"_index":2039,"t":{"477":{"position":[[3828,8]]}}}],["now",{"_index":1464,"t":{"280":{"position":[[339,3]]},"458":{"position":[[133,3]]},"492":{"position":[[35,3]]},"564":{"position":[[918,5]]}}}],["npm",{"_index":36,"t":{"4":{"position":[[68,3],[77,3]]},"6":{"position":[[570,3],[579,3]]},"26":{"position":[[107,4]]},"81":{"position":[[109,3],[118,3]]},"145":{"position":[[72,3]]},"155":{"position":[[88,3]]},"196":{"position":[[160,3],[169,3],[386,3],[395,3]]}}}],["npx",{"_index":969,"t":{"145":{"position":[[81,3],[334,3]]}}}],["ns1.google.com",{"_index":1264,"t":{"218":{"position":[[686,15]]}}}],["nullifi",{"_index":1506,"t":{"296":{"position":[[1233,10],[1265,9]]},"322":{"position":[[66,10]]},"380":{"position":[[11,10]]},"386":{"position":[[69,10]]},"404":{"position":[[290,11]]},"418":{"position":[[424,10]]},"572":{"position":[[96,10]]}}}],["number",{"_index":783,"t":{"109":{"position":[[436,7],[745,6],[806,6]]},"117":{"position":[[395,6],[492,6]]},"234":{"position":[[618,6]]},"282":{"position":[[318,6]]},"296":{"position":[[1691,6]]},"460":{"position":[[979,8]]},"473":{"position":[[452,6]]},"477":{"position":[[452,7]]},"486":{"position":[[466,6]]},"488":{"position":[[335,6]]},"492":{"position":[[319,8]]},"540":{"position":[[1474,6]]},"542":{"position":[[228,7]]},"544":{"position":[[131,7],[310,7],[2232,7],[2912,6]]},"574":{"position":[[129,6]]}}}],["numer",{"_index":1496,"t":{"296":{"position":[[103,8]]}}}],["nutshel",{"_index":2473,"t":{"574":{"position":[[305,9]]}}}],["nwaku",{"_index":134,"t":{"8":{"position":[[1226,5]]},"20":{"position":[[155,5]]},"24":{"position":[[66,5]]},"26":{"position":[[1818,5],[2115,5]]},"48":{"position":[[179,6]]},"56":{"position":[[0,5]]},"58":{"position":[[189,5]]},"62":{"position":[[333,6]]},"69":{"position":[[128,5]]},"75":{"position":[[137,5]]},"77":{"position":[[53,5]]},"91":{"position":[[46,5],[154,6],[289,6],[296,5]]},"93":{"position":[[9,6]]},"95":{"position":[[166,5]]},"97":{"position":[[10,5]]},"99":{"position":[[0,5],[207,6],[249,5],[264,5],[296,5]]},"101":{"position":[[83,5],[197,5]]},"109":{"position":[[144,5]]},"133":{"position":[[50,5],[142,5]]},"135":{"position":[[34,5],[284,5]]},"137":{"position":[[29,5],[728,5],[822,5]]},"139":{"position":[[22,5],[459,5],[857,5]]},"141":{"position":[[29,5],[399,5],[549,5],[634,5],[842,5]]},"153":{"position":[[844,5]]},"169":{"position":[[85,5]]},"192":{"position":[[45,5],[173,5],[343,5],[503,5],[547,5],[644,5],[750,6],[802,5],[833,5],[1046,5],[1343,5],[1423,5],[1600,5]]},"212":{"position":[[54,5],[166,5]]},"214":{"position":[[143,5]]},"216":{"position":[[4,5],[321,5]]},"218":{"position":[[4,5],[261,5],[1073,5],[1186,5]]},"236":{"position":[[0,5],[98,5]]},"240":{"position":[[212,5]]},"242":{"position":[[55,5]]},"246":{"position":[[108,5]]},"248":{"position":[[26,5],[156,5],[289,5]]},"252":{"position":[[5,5],[80,5],[157,5],[1065,5],[1222,5]]},"254":{"position":[[0,5],[130,5],[364,5],[494,5]]},"256":{"position":[[33,5],[47,5],[103,5],[297,5],[332,5],[381,5],[418,5],[549,5],[569,5],[613,5],[769,5],[793,5],[831,5]]},"258":{"position":[[25,5],[224,5]]},"260":{"position":[[97,5],[222,5],[314,5],[411,5],[566,5]]},"262":{"position":[[32,5]]},"264":{"position":[[431,5],[542,5]]},"286":{"position":[[29,5]]},"288":{"position":[[67,5]]},"290":{"position":[[2,5]]},"292":{"position":[[76,5]]},"294":{"position":[[79,5],[714,5]]},"298":{"position":[[50,5]]},"300":{"position":[[97,5]]},"302":{"position":[[327,5]]},"304":{"position":[[1157,5],[1421,5],[1644,5]]},"306":{"position":[[1023,6]]},"308":{"position":[[101,5],[835,5],[995,5],[1369,5]]},"310":{"position":[[0,5],[992,5],[1139,5]]},"312":{"position":[[10,5],[138,5],[408,5]]},"314":{"position":[[10,5],[152,5],[375,5]]},"316":{"position":[[117,5]]},"410":{"position":[[23,5],[85,5]]},"465":{"position":[[19,6],[197,5],[282,5]]},"467":{"position":[[34,5],[197,5],[258,5]]},"475":{"position":[[524,5]]},"477":{"position":[[678,5],[795,5],[1801,5],[1821,5],[3228,5],[3377,5]]},"479":{"position":[[1390,5],[1497,5],[1767,5]]},"482":{"position":[[328,5]]},"490":{"position":[[366,5]]},"558":{"position":[[37,5]]},"560":{"position":[[941,5]]},"564":{"position":[[103,5],[677,5],[749,5]]}}}],["nwaku+postgr",{"_index":1954,"t":{"471":{"position":[[89,14]]}}}],["nwaku+sqlit",{"_index":1955,"t":{"471":{"position":[[108,13]]}}}],["nwakunode.com",{"_index":530,"t":{"62":{"position":[[197,13],[255,14]]},"302":{"position":[[292,14]]}}}],["o",{"_index":1262,"t":{"218":{"position":[[662,1]]}}}],["o.myaddr.l.google.com",{"_index":1263,"t":{"218":{"position":[[664,21]]}}}],["object",{"_index":425,"t":{"44":{"position":[[91,6],[161,6]]},"202":{"position":[[504,6]]},"278":{"position":[[12,9]]},"436":{"position":[[831,6]]}}}],["oblig",{"_index":1760,"t":{"434":{"position":[[7,7]]},"580":{"position":[[1222,10]]}}}],["observ",{"_index":2391,"t":{"558":{"position":[[301,7],[399,7]]}}}],["obtain",{"_index":1696,"t":{"408":{"position":[[352,6]]},"410":{"position":[[153,8]]},"422":{"position":[[256,8]]},"477":{"position":[[833,8],[1908,8]]},"479":{"position":[[1036,8]]},"574":{"position":[[354,6]]}}}],["occasion",{"_index":348,"t":{"30":{"position":[[0,13]]},"356":{"position":[[115,12]]}}}],["occur",{"_index":836,"t":{"113":{"position":[[965,5]]},"198":{"position":[[887,6]]},"434":{"position":[[669,5]]}}}],["oceania",{"_index":2315,"t":{"542":{"position":[[657,7]]},"544":{"position":[[2737,7]]}}}],["oct",{"_index":2288,"t":{"542":{"position":[[372,3]]}}}],["off",{"_index":1609,"t":{"318":{"position":[[108,4]]}}}],["offer",{"_index":223,"t":{"16":{"position":[[298,6]]},"208":{"position":[[194,6]]},"268":{"position":[[43,6]]},"412":{"position":[[23,5]]},"420":{"position":[[227,5]]},"458":{"position":[[104,6]]},"580":{"position":[[1685,5],[1725,5]]}}}],["offic",{"_index":1738,"t":{"426":{"position":[[190,6]]},"578":{"position":[[130,6]]}}}],["offlin",{"_index":1446,"t":{"274":{"position":[[123,7]]},"326":{"position":[[156,7]]},"356":{"position":[[7,7],[64,7]]},"390":{"position":[[90,7]]}}}],["offline/resourc",{"_index":1814,"t":{"450":{"position":[[242,16]]}}}],["older",{"_index":67,"t":{"6":{"position":[[340,5]]}}}],["oldest",{"_index":1064,"t":{"183":{"position":[[771,6]]},"186":{"position":[[132,6],[305,6]]}}}],["omit",{"_index":949,"t":{"137":{"position":[[685,4]]},"188":{"position":[[947,4]]},"304":{"position":[[645,4],[926,4]]},"308":{"position":[[309,4]]},"310":{"position":[[278,4],[394,4],[528,4]]},"312":{"position":[[709,4]]},"566":{"position":[[409,8]]}}}],["on",{"_index":145,"t":{"8":{"position":[[1446,4]]},"109":{"position":[[514,3]]},"149":{"position":[[345,4]]},"161":{"position":[[286,3]]},"256":{"position":[[245,4]]},"328":{"position":[[202,3]]},"376":{"position":[[184,3]]},"456":{"position":[[297,3],[957,3],[1015,3]]},"458":{"position":[[748,4],[3188,3],[3302,4]]},"460":{"position":[[131,3]]},"475":{"position":[[91,3],[152,3],[254,3],[336,3]]},"479":{"position":[[61,3]]},"482":{"position":[[346,3]]},"490":{"position":[[400,3]]},"510":{"position":[[451,3]]},"540":{"position":[[147,3]]},"544":{"position":[[1497,3]]},"550":{"position":[[301,3]]},"562":{"position":[[123,3],[846,3]]},"588":{"position":[[532,4]]},"596":{"position":[[1652,3],[2085,3]]}}}],["onboard",{"_index":2389,"t":{"556":{"position":[[328,7]]}}}],["onc",{"_index":1392,"t":{"258":{"position":[[0,4]]},"266":{"position":[[246,4]]},"334":{"position":[[72,4]]},"492":{"position":[[477,5]]},"556":{"position":[[0,4]]},"566":{"position":[[2329,4]]}}}],["onchain",{"_index":823,"t":{"113":{"position":[[341,7]]},"490":{"position":[[264,7]]}}}],["onchange={handleinputchang",{"_index":1163,"t":{"200":{"position":[[1521,28]]}}}],["onclick={sendmessage}>send.example.com",{"_index":1287,"t":{"222":{"position":[[218,17]]}}}],["round",{"_index":2282,"t":{"542":{"position":[[241,7]]}}}],["rout",{"_index":914,"t":{"127":{"position":[[452,7],[543,7]]},"139":{"position":[[181,7],[509,7],[905,7]]},"276":{"position":[[149,7]]},"392":{"position":[[114,8]]},"410":{"position":[[240,7]]},"560":{"position":[[21,7],[79,6]]},"568":{"position":[[172,8]]}}}],["row",{"_index":1973,"t":{"473":{"position":[[814,4]]},"475":{"position":[[241,5]]}}}],["rule",{"_index":488,"t":{"56":{"position":[[587,5]]},"296":{"position":[[922,5]]},"374":{"position":[[23,5]]},"546":{"position":[[290,5]]},"568":{"position":[[110,5]]},"596":{"position":[[1316,5],[1386,5],[1963,5]]}}}],["run",{"_index":123,"t":{"8":{"position":[[971,3],[1486,7]]},"20":{"position":[[64,3],[151,3],[231,3],[271,7]]},"26":{"position":[[1810,7]]},"36":{"position":[[293,7]]},"75":{"position":[[129,7]]},"97":{"position":[[117,3]]},"99":{"position":[[68,3],[199,7],[243,3],[260,3],[292,3]]},"101":{"position":[[0,3]]},"109":{"position":[[72,7]]},"113":{"position":[[897,4],[956,3]]},"149":{"position":[[385,7]]},"153":{"position":[[957,7]]},"163":{"position":[[221,7],[329,3]]},"165":{"position":[[303,7],[385,3]]},"167":{"position":[[552,3]]},"169":{"position":[[522,3]]},"192":{"position":[[10,3],[41,3],[118,3],[167,3],[304,7],[333,7],[413,7],[495,7],[539,7],[655,7],[1064,8]]},"212":{"position":[[48,3],[162,3]]},"214":{"position":[[133,7],[213,7]]},"218":{"position":[[0,3],[44,3],[257,3],[312,3],[907,7]]},"236":{"position":[[109,7]]},"238":{"position":[[71,4]]},"240":{"position":[[202,7],[282,7]]},"248":{"position":[[247,7]]},"252":{"position":[[909,7]]},"254":{"position":[[49,7],[116,7],[484,7],[564,7]]},"256":{"position":[[3,3],[83,7],[99,3],[171,3],[241,3],[291,3],[328,3],[375,3],[414,3],[823,3]]},"258":{"position":[[39,3],[81,3],[127,3]]},"262":{"position":[[24,7]]},"264":{"position":[[248,7]]},"282":{"position":[[164,3]]},"286":{"position":[[152,7]]},"296":{"position":[[134,3]]},"406":{"position":[[320,3]]},"410":{"position":[[19,3],[75,7]]},"448":{"position":[[42,3],[255,3]]},"450":{"position":[[150,3]]},"456":{"position":[[317,3],[367,3],[519,3],[1848,3]]},"462":{"position":[[62,3]]},"473":{"position":[[215,7]]},"475":{"position":[[536,7]]},"477":{"position":[[690,3],[845,7],[1920,7]]},"479":{"position":[[1113,7]]},"482":{"position":[[233,7]]},"496":{"position":[[112,7]]},"510":{"position":[[407,7],[490,7]]},"526":{"position":[[618,7]]},"538":{"position":[[138,3]]},"540":{"position":[[58,3],[327,7],[603,3],[828,3],[875,3]]},"544":{"position":[[386,3],[577,3],[652,3]]},"558":{"position":[[49,7]]},"564":{"position":[[284,7]]}}}],["runstmt",{"_index":2049,"t":{"479":{"position":[[526,8]]}}}],["rustup",{"_index":687,"t":{"93":{"position":[[100,7],[632,6]]}}}],["s",{"_index":713,"t":{"93":{"position":[[499,1],[744,1]]}}}],["sa",{"_index":1802,"t":{"442":{"position":[[150,3]]},"598":{"position":[[963,3]]}}}],["sacrific",{"_index":543,"t":{"67":{"position":[[146,10]]}}}],["safeti",{"_index":1759,"t":{"432":{"position":[[141,6]]}}}],["same",{"_index":913,"t":{"127":{"position":[[434,4],[525,4]]},"135":{"position":[[336,4]]},"141":{"position":[[510,4]]},"153":{"position":[[378,4]]},"378":{"position":[[130,4]]},"414":{"position":[[244,4]]},"434":{"position":[[512,4]]},"458":{"position":[[953,4],[1263,4],[1999,4]]},"477":{"position":[[703,4],[1721,4]]},"479":{"position":[[260,4],[326,4],[1745,4]]},"494":{"position":[[0,4]]},"544":{"position":[[1276,5],[1417,5],[3008,4]]}}}],["sampl",{"_index":262,"t":{"16":{"position":[[1223,6]]},"208":{"position":[[255,8],[487,8]]},"278":{"position":[[439,8]]}}}],["sandbox",{"_index":2010,"t":{"477":{"position":[[928,7],[2003,7]]},"479":{"position":[[1058,7]]}}}],["save",{"_index":216,"t":{"16":{"position":[[173,4],[313,8]]},"246":{"position":[[298,5]]}}}],["scaffold",{"_index":110,"t":{"8":{"position":[[689,8]]},"24":{"position":[[248,8]]}}}],["scalabl",{"_index":252,"t":{"16":{"position":[[961,12]]},"220":{"position":[[728,12]]},"282":{"position":[[301,12]]},"318":{"position":[[262,12]]},"348":{"position":[[42,8]]},"400":{"position":[[36,8]]},"404":{"position":[[126,8],[302,11]]},"410":{"position":[[472,12]]},"458":{"position":[[2986,12]]},"540":{"position":[[1289,12]]}}}],["scale",{"_index":1617,"t":{"320":{"position":[[311,6]]},"382":{"position":[[174,6]]},"460":{"position":[[405,6]]},"512":{"position":[[827,5]]},"544":{"position":[[761,5]]},"550":{"position":[[268,9]]},"566":{"position":[[1746,5]]}}}],["scenario",{"_index":1447,"t":{"274":{"position":[[131,9]]},"473":{"position":[[27,8]]},"475":{"position":[[75,8]]},"477":{"position":[[993,8],[1312,8],[1487,8],[1738,8],[2068,8],[2404,8],[2680,8]]}}}],["scene",{"_index":192,"t":{"12":{"position":[[366,7]]}}}],["sceneri",{"_index":2040,"t":{"479":{"position":[[171,7]]}}}],["scheme",{"_index":1515,"t":{"302":{"position":[[195,7]]}}}],["scope",{"_index":1811,"t":{"448":{"position":[[84,6]]}}}],["score",{"_index":1717,"t":{"418":{"position":[[218,7],[268,6],[347,7]]},"484":{"position":[[208,7]]},"490":{"position":[[313,8]]},"500":{"position":[[622,6],[658,6],[719,7]]}}}],["screaming_snake_cas",{"_index":1027,"t":{"165":{"position":[[137,20]]}}}],["script",{"_index":85,"t":{"6":{"position":[[837,6],[848,7]]},"473":{"position":[[328,6]]}}}],["sdk",{"_index":4,"t":{"2":{"position":[[39,3],[167,3]]},"22":{"position":[[32,5],[189,3],[243,3]]},"26":{"position":[[81,3],[1225,3],[1464,3],[1733,3]]},"192":{"position":[[610,4]]},"194":{"position":[[39,3]]},"296":{"position":[[112,4]]},"388":{"position":[[0,4]]}}}],["se",{"_index":1870,"t":{"458":{"position":[[575,2]]}}}],["seamless",{"_index":231,"t":{"16":{"position":[[462,8]]},"22":{"position":[[305,8]]}}}],["seamlessli",{"_index":22,"t":{"2":{"position":[[295,10]]},"8":{"position":[[633,10]]},"73":{"position":[[80,10]]}}}],["second",{"_index":878,"t":{"117":{"position":[[204,7],[319,8]]},"165":{"position":[[456,6]]},"304":{"position":[[400,8],[1257,7]]},"312":{"position":[[498,7],[766,7]]},"454":{"position":[[170,9],[348,8]]},"458":{"position":[[291,9],[517,7],[790,7],[1093,8],[2293,7],[2443,6],[2466,7],[2621,8],[2827,6],[3025,8],[3274,7]]},"460":{"position":[[135,7],[636,8]]},"462":{"position":[[225,8]]},"479":{"position":[[1484,7],[1591,7],[1862,7]]},"482":{"position":[[412,7]]},"484":{"position":[[39,6],[103,8],[189,8]]},"486":{"position":[[183,7],[489,7]]},"488":{"position":[[108,7],[595,7]]},"490":{"position":[[538,8]]},"494":{"position":[[193,7]]},"564":{"position":[[1025,7],[1065,7]]},"566":{"position":[[861,7],[1423,7]]}}}],["secp256k1",{"_index":1549,"t":{"306":{"position":[[240,9],[668,9]]},"360":{"position":[[16,9]]}}}],["secreci",{"_index":1677,"t":{"402":{"position":[[218,8]]}}}],["secret",{"_index":827,"t":{"113":{"position":[[500,6]]},"244":{"position":[[347,7]]}}}],["section",{"_index":186,"t":{"12":{"position":[[292,8]]},"192":{"position":[[1769,7]]},"460":{"position":[[357,8]]},"598":{"position":[[289,8]]}}}],["secur",{"_index":184,"t":{"12":{"position":[[247,8]]},"14":{"position":[[245,6]]},"16":{"position":[[654,8]]},"56":{"position":[[63,6],[260,6],[327,6]]},"85":{"position":[[284,6]]},"89":{"position":[[237,6]]},"131":{"position":[[139,6],[167,6],[206,6],[222,6],[278,6],[295,6]]},"141":{"position":[[1005,8]]},"250":{"position":[[235,9]]},"302":{"position":[[453,6],[676,6]]},"308":{"position":[[362,6],[386,6],[454,6],[471,6],[508,6],[526,6],[666,6],[700,6],[758,6],[1019,6],[1156,6],[1190,6],[1232,6]]},"320":{"position":[[225,6]]},"358":{"position":[[101,6]]},"362":{"position":[[65,6],[135,9]]},"382":{"position":[[66,6]]},"388":{"position":[[70,7]]},"394":{"position":[[29,7]]},"398":{"position":[[69,6]]},"402":{"position":[[97,6]]},"412":{"position":[[52,8],[97,8],[131,8],[290,8],[346,8]]},"420":{"position":[[140,8],[310,6]]},"428":{"position":[[794,8]]},"432":{"position":[[36,8],[92,8]]},"568":{"position":[[531,6],[574,6],[716,9]]},"580":{"position":[[1764,9]]}}}],["see",{"_index":746,"t":{"99":{"position":[[119,3]]},"169":{"position":[[469,3]]},"212":{"position":[[154,3]]},"458":{"position":[[692,3]]},"477":{"position":[[1124,3]]},"479":{"position":[[384,3]]},"490":{"position":[[358,3],[554,3],[642,4]]},"510":{"position":[[696,4]]},"516":{"position":[[618,4]]},"520":{"position":[[17,3],[87,3],[160,3],[231,3]]},"524":{"position":[[27,3],[133,3],[221,3],[317,3]]},"528":{"position":[[66,3],[137,3]]},"532":{"position":[[48,3],[141,3]]},"536":{"position":[[38,3],[194,3],[358,3],[500,3]]},"544":{"position":[[2826,3]]},"558":{"position":[[581,3]]},"562":{"position":[[348,3],[483,3]]},"564":{"position":[[416,4],[528,3]]},"566":{"position":[[1270,3],[1541,3]]}}}],["seek",{"_index":152,"t":{"10":{"position":[[34,4]]},"62":{"position":[[349,7]]},"266":{"position":[[303,4],[741,5]]},"596":{"position":[[989,8]]}}}],["seem",{"_index":2088,"t":{"486":{"position":[[0,5],[333,5]]},"488":{"position":[[140,5],[202,5],[342,5]]}}}],["seen",{"_index":1095,"t":{"190":{"position":[[715,4]]}}}],["select",{"_index":971,"t":{"145":{"position":[[170,6]]},"210":{"position":[[577,7]]},"218":{"position":[[92,8]]},"224":{"position":[[118,11]]},"254":{"position":[[182,6]]},"324":{"position":[[38,11]]},"336":{"position":[[88,9]]},"346":{"position":[[49,11]]},"404":{"position":[[372,9]]},"479":{"position":[[917,6],[964,6],[1472,7],[1579,7],[1850,7]]},"526":{"position":[[864,7]]}}}],["sell",{"_index":2509,"t":{"580":{"position":[[1701,5],[1741,4]]}}}],["semi",{"_index":2211,"t":{"522":{"position":[[556,4]]}}}],["send",{"_index":95,"t":{"8":{"position":[[135,4],[202,4]]},"26":{"position":[[2460,4]]},"28":{"position":[[137,4]]},"34":{"position":[[102,4]]},"40":{"position":[[639,4]]},"44":{"position":[[3,4],[392,4]]},"83":{"position":[[310,4],[374,4],[676,4]]},"85":{"position":[[448,4],[529,4],[827,4],[1522,7]]},"87":{"position":[[1705,4]]},"129":{"position":[[152,4]]},"200":{"position":[[33,7],[1057,4],[2420,5]]},"202":{"position":[[3,4],[364,4]]},"226":{"position":[[619,4]]},"236":{"position":[[223,4]]},"246":{"position":[[122,4],[408,7]]},"252":{"position":[[222,4]]},"266":{"position":[[82,8]]},"296":{"position":[[197,7],[1492,4]]},"320":{"position":[[64,7]]},"328":{"position":[[159,7]]},"354":{"position":[[49,4]]},"374":{"position":[[123,8]]},"376":{"position":[[82,4]]},"382":{"position":[[106,7]]},"458":{"position":[[253,4],[493,5],[772,4],[1242,4]]},"486":{"position":[[260,4]]},"492":{"position":[[299,4]]},"510":{"position":[[743,5]]},"514":{"position":[[96,5],[143,5],[454,4]]},"516":{"position":[[839,5],[1030,5]]},"526":{"position":[[791,5]]},"536":{"position":[[325,7]]},"566":{"position":[[656,7]]},"596":{"position":[[852,4]]}}}],["send/rec",{"_index":2259,"t":{"540":{"position":[[276,12]]}}}],["sender",{"_index":431,"t":{"44":{"position":[[233,7]]},"83":{"position":[[401,6]]},"85":{"position":[[394,6],[556,6]]},"87":{"position":[[547,8],[976,6]]},"330":{"position":[[426,7]]},"490":{"position":[[223,6]]},"536":{"position":[[273,8]]},"562":{"position":[[1552,6]]},"566":{"position":[[574,6]]}}}],["sendmessag",{"_index":1147,"t":{"200":{"position":[[1097,11]]},"202":{"position":[[59,13],[404,11]]}}}],["sens",{"_index":1950,"t":{"467":{"position":[[184,5]]}}}],["sent",{"_index":450,"t":{"46":{"position":[[852,4]]},"79":{"position":[[300,4]]},"87":{"position":[[3046,4]]},"252":{"position":[[607,4]]},"276":{"position":[[672,4]]},"296":{"position":[[413,4]]},"330":{"position":[[232,5]]},"456":{"position":[[1265,4]]},"566":{"position":[[381,4],[851,4]]}}}],["separ",{"_index":1655,"t":{"362":{"position":[[55,9]]},"438":{"position":[[97,8]]},"516":{"position":[[530,8]]},"522":{"position":[[45,8]]}}}],["sepolia",{"_index":1339,"t":{"240":{"position":[[57,7],[96,7],[129,7]]},"408":{"position":[[9,7],[107,7],[250,7],[282,7],[324,7],[359,7],[404,7],[441,7]]},"410":{"position":[[125,7]]},"482":{"position":[[473,7]]},"492":{"position":[[95,8]]}}}],["sequenti",{"_index":1045,"t":{"179":{"position":[[234,13]]}}}],["serial",{"_index":1196,"t":{"202":{"position":[[85,9]]}}}],["serialis",{"_index":435,"t":{"44":{"position":[[283,9]]},"202":{"position":[[634,9]]},"226":{"position":[[440,13]]}}}],["serialisedmessag",{"_index":436,"t":{"44":{"position":[[326,17],[472,18]]}}}],["serious",{"_index":1757,"t":{"432":{"position":[[45,9]]}}}],["serv",{"_index":484,"t":{"56":{"position":[[492,6]]},"117":{"position":[[376,5],[414,5]]},"198":{"position":[[28,6]]},"260":{"position":[[684,7]]},"268":{"position":[[130,5]]},"276":{"position":[[128,6],[294,6]]},"304":{"position":[[30,5],[163,5]]},"308":{"position":[[110,5]]},"312":{"position":[[19,5]]},"314":{"position":[[19,5]]},"364":{"position":[[67,7]]},"378":{"position":[[33,6]]},"460":{"position":[[1040,5]]},"568":{"position":[[705,5]]}}}],["server",{"_index":808,"t":{"111":{"position":[[115,6],[154,6]]},"121":{"position":[[64,7],[141,6],[195,6],[595,7]]},"123":{"position":[[39,6],[71,7],[98,6],[156,6],[171,6],[223,6]]},"125":{"position":[[178,6],[217,6]]},"137":{"position":[[408,6],[436,6],[513,8],[662,6],[713,6],[769,7]]},"141":{"position":[[427,6],[541,7]]},"153":{"position":[[947,6]]},"210":{"position":[[94,7]]},"218":{"position":[[869,9]]},"270":{"position":[[348,8]]},"280":{"position":[[87,7]]},"310":{"position":[[162,6],[263,7],[379,7],[786,6],[832,6],[1029,6]]},"316":{"position":[[27,6]]},"496":{"position":[[394,6]]},"510":{"position":[[339,6],[390,6],[427,6],[545,6],[764,7],[778,6],[842,6],[922,6],[1005,6]]},"514":{"position":[[124,7],[136,6],[432,6]]},"516":{"position":[[867,6],[917,6],[1023,6]]},"518":{"position":[[102,6],[172,6]]},"522":{"position":[[127,6],[761,7],[1189,7]]},"526":{"position":[[36,6],[142,7],[192,6],[246,6],[475,6],[587,6],[699,7],[768,7],[874,6],[1063,6],[1135,7]]},"530":{"position":[[81,7],[149,7]]},"536":{"position":[[184,7]]},"540":{"position":[[726,6]]}}}],["server'",{"_index":1604,"t":{"316":{"position":[[94,8]]},"516":{"position":[[810,8]]},"522":{"position":[[260,8],[913,8]]},"526":{"position":[[117,8],[314,8],[946,8]]}}}],["server=8.8.4.4",{"_index":955,"t":{"137":{"position":[[1148,14]]}}}],["server=8.8.8.8",{"_index":954,"t":{"137":{"position":[[1110,14]]}}}],["server=[dn",{"_index":948,"t":{"137":{"position":[[645,11]]}}}],["servic",{"_index":1387,"t":{"256":{"position":[[873,7],[938,9]]},"352":{"position":[[67,7]]},"404":{"position":[[406,8]]},"406":{"position":[[451,8]]},"412":{"position":[[39,8]]},"422":{"position":[[93,8],[248,7]]},"448":{"position":[[207,7]]},"456":{"position":[[882,8]]},"475":{"position":[[66,8]]},"524":{"position":[[111,7],[199,7]]},"544":{"position":[[1912,9],[2086,9]]},"568":{"position":[[449,7],[600,7]]},"574":{"position":[[10,7],[87,7],[341,7],[411,7],[653,7],[705,8]]},"588":{"position":[[176,9]]}}}],["set",{"_index":318,"t":{"26":{"position":[[1618,7]]},"34":{"position":[[75,7]]},"36":{"position":[[372,3]]},"52":{"position":[[55,3]]},"107":{"position":[[63,4]]},"115":{"position":[[325,3]]},"149":{"position":[[161,3]]},"153":{"position":[[3,3]]},"165":{"position":[[169,3]]},"192":{"position":[[1561,7]]},"196":{"position":[[7,3]]},"198":{"position":[[79,3],[289,3]]},"208":{"position":[[366,4]]},"224":{"position":[[36,3]]},"250":{"position":[[191,7]]},"274":{"position":[[16,3]]},"296":{"position":[[1649,3]]},"302":{"position":[[8,3]]},"304":{"position":[[581,3],[812,7]]},"374":{"position":[[16,3]]},"456":{"position":[[1025,3],[1143,3],[1591,4],[1744,3]]},"473":{"position":[[751,3]]},"510":{"position":[[893,3]]},"534":{"position":[[136,9]]},"538":{"position":[[25,3]]},"544":{"position":[[1147,4],[2565,3],[2926,3]]},"546":{"position":[[313,3]]},"562":{"position":[[166,4]]},"568":{"position":[[632,3]]},"596":{"position":[[888,7]]}}}],["setinputmessag",{"_index":1141,"t":{"200":{"position":[[378,16]]},"202":{"position":[[853,20]]}}}],["setinputmessage(e.target.valu",{"_index":1145,"t":{"200":{"position":[[551,32]]}}}],["setmessag",{"_index":1142,"t":{"200":{"position":[[428,12]]}}}],["setmessages(allmessages.map((wakumessag",{"_index":1212,"t":{"206":{"position":[[652,41]]}}}],["setmessages(filtermessages.map((wakumessag",{"_index":1206,"t":{"204":{"position":[[429,44]]}}}],["setup",{"_index":1006,"t":{"153":{"position":[[908,5]]},"212":{"position":[[119,5]]},"236":{"position":[[47,5]]},"560":{"position":[[983,5]]}}}],["sever",{"_index":1306,"t":{"228":{"position":[[94,7]]},"479":{"position":[[87,7]]},"558":{"position":[[447,8]]},"598":{"position":[[581,9]]}}}],["sh",{"_index":705,"t":{"93":{"position":[[303,2],[444,2],[592,2]]}}}],["shadow",{"_index":2414,"t":{"564":{"position":[[6,6],[871,6]]},"566":{"position":[[2212,6],[2334,6]]}}}],["shall",{"_index":2503,"t":{"580":{"position":[[1264,5]]},"590":{"position":[[4,5]]},"596":{"position":[[841,5]]}}}],["shape",{"_index":1700,"t":{"412":{"position":[[77,7]]}}}],["shard",{"_index":1647,"t":{"344":{"position":[[248,7]]},"404":{"position":[[317,8],[366,5]]},"454":{"position":[[76,5]]},"456":{"position":[[421,6]]},"460":{"position":[[1009,6]]},"538":{"position":[[76,5],[304,6]]},"540":{"position":[[151,6],[389,7],[462,5],[1428,6]]},"544":{"position":[[114,6],[2801,6]]}}}],["share",{"_index":260,"t":{"16":{"position":[[1148,8]]},"26":{"position":[[2654,7]]},"40":{"position":[[670,6]]},"83":{"position":[[36,6],[1388,6]]},"85":{"position":[[1421,5]]},"230":{"position":[[44,5]]},"232":{"position":[[209,5]]},"244":{"position":[[409,6]]},"404":{"position":[[22,6]]},"406":{"position":[[127,6]]},"410":{"position":[[233,6],[365,6]]},"446":{"position":[[43,5]]},"479":{"position":[[1680,6]]},"502":{"position":[[65,8]]},"504":{"position":[[15,7],[269,5]]},"508":{"position":[[145,7]]},"512":{"position":[[98,7]]}}}],["shift",{"_index":782,"t":{"109":{"position":[[404,5],[418,5]]}}}],["shift=1",{"_index":962,"t":{"141":{"position":[[725,7]]}}}],["short",{"_index":206,"t":{"14":{"position":[[343,6]]},"218":{"position":[[655,6]]},"274":{"position":[[369,5]]},"296":{"position":[[992,6]]},"328":{"position":[[79,5]]}}}],["shorten",{"_index":2131,"t":{"496":{"position":[[162,10]]}}}],["shouldn't",{"_index":2099,"t":{"488":{"position":[[363,9]]},"544":{"position":[[1928,9]]}}}],["show",{"_index":454,"t":{"50":{"position":[[135,4]]},"475":{"position":[[759,5]]},"477":{"position":[[325,5],[1216,5]]},"479":{"position":[[161,5],[1368,5]]},"542":{"position":[[21,5]]},"566":{"position":[[21,5],[79,7],[429,4]]}}}],["shown",{"_index":2343,"t":{"544":{"position":[[2099,5]]},"564":{"position":[[599,5]]},"566":{"position":[[324,6]]}}}],["sia",{"_index":2177,"t":{"508":{"position":[[66,4]]}}}],["sibyl",{"_index":1866,"t":{"458":{"position":[[429,5]]}}}],["side",{"_index":548,"t":{"69":{"position":[[32,4]]},"129":{"position":[[97,6],[226,5]]},"510":{"position":[[434,4],[507,4]]}}}],["sign",{"_index":106,"t":{"8":{"position":[[439,4],[537,4]]},"26":{"position":[[941,4],[1111,4]]},"79":{"position":[[104,4]]},"87":{"position":[[8,7],[181,7],[478,4],[863,7],[912,7],[1139,5],[1368,7],[1439,5],[1663,7],[2396,7],[2547,5],[3035,6],[3218,6],[3280,6]]},"89":{"position":[[59,7],[1002,6]]},"137":{"position":[[355,6]]},"398":{"position":[[161,7]]}}}],["signatur",{"_index":232,"t":{"16":{"position":[[533,9],[562,9],[593,9],[629,10]]},"87":{"position":[[87,9],[2020,9],[2725,9],[2794,9],[2826,9],[2906,9]]},"420":{"position":[[122,11],[266,11]]}}}],["signaturepublickey",{"_index":627,"t":{"87":{"position":[[2049,20],[2859,18],[2947,18]]}}}],["signifi",{"_index":1638,"t":{"330":{"position":[[364,10]]},"574":{"position":[[18,9]]}}}],["signific",{"_index":80,"t":{"6":{"position":[[463,11]]},"564":{"position":[[319,11]]}}}],["significantli",{"_index":1091,"t":{"190":{"position":[[569,13]]}}}],["sigprivkey",{"_index":613,"t":{"87":{"position":[[406,10],[1320,11],[1615,11],[2644,11]]}}}],["similar",{"_index":1750,"t":{"426":{"position":[[373,7]]},"477":{"position":[[1632,7]]},"479":{"position":[[1883,7]]},"522":{"position":[[648,8]]},"566":{"position":[[1873,7]]},"578":{"position":[[324,7]]}}}],["similarli",{"_index":1730,"t":{"422":{"position":[[468,10]]}}}],["simpl",{"_index":648,"t":{"89":{"position":[[339,6]]},"236":{"position":[[161,6]]},"522":{"position":[[753,7]]}}}],["simpler",{"_index":540,"t":{"67":{"position":[[70,7]]},"522":{"position":[[1006,7]]}}}],["simplest",{"_index":1097,"t":{"192":{"position":[[90,8]]},"256":{"position":[[199,8]]},"500":{"position":[[752,8]]},"516":{"position":[[248,8]]}}}],["simpli",{"_index":1948,"t":{"467":{"position":[[0,6]]}}}],["simplic",{"_index":556,"t":{"71":{"position":[[134,10]]}}}],["simplifi",{"_index":1643,"t":{"338":{"position":[[41,10]]},"516":{"position":[[355,10],[607,10]]},"518":{"position":[[150,10]]}}}],["simul",{"_index":1804,"t":{"444":{"position":[[31,11]]},"473":{"position":[[346,8]]},"482":{"position":[[241,11],[264,10]]},"484":{"position":[[323,11]]},"486":{"position":[[100,10]]},"490":{"position":[[339,11]]},"494":{"position":[[5,10]]},"534":{"position":[[126,9]]},"558":{"position":[[585,10]]},"560":{"position":[[947,10]]},"562":{"position":[[2204,12]]},"564":{"position":[[13,10],[64,8],[297,10],[402,10],[738,10],[927,8]]},"566":{"position":[[66,12],[393,11],[1709,11],[2270,9]]}}}],["simultan",{"_index":928,"t":{"133":{"position":[[195,15]]},"157":{"position":[[70,15]]},"473":{"position":[[170,14],[788,15]]}}}],["singl",{"_index":582,"t":{"83":{"position":[[28,7]]},"232":{"position":[[394,6]]},"234":{"position":[[27,6],[703,6]]},"456":{"position":[[414,6]]},"460":{"position":[[1002,6]]},"465":{"position":[[291,6]]},"477":{"position":[[3237,6]]},"479":{"position":[[65,6]]},"540":{"position":[[455,6]]}}}],["site",{"_index":1792,"t":{"438":{"position":[[86,5]]},"580":{"position":[[607,5]]}}}],["site.thes",{"_index":2497,"t":{"580":{"position":[[628,10]]}}}],["sixti",{"_index":2573,"t":{"596":{"position":[[1062,5]]}}}],["size",{"_index":72,"t":{"6":{"position":[[378,5]]},"26":{"position":[[415,4]]},"115":{"position":[[286,4]]},"304":{"position":[[503,4]]},"456":{"position":[[1288,5]]},"458":{"position":[[806,4],[981,5],[1281,4],[1592,5],[1638,5],[1708,5],[2025,4],[2502,5],[2610,4],[3012,4],[3363,5]]},"460":{"position":[[45,6],[492,4]]},"486":{"position":[[62,4]]},"488":{"position":[[180,5]]},"518":{"position":[[356,4]]},"558":{"position":[[85,6],[270,4],[493,5]]},"562":{"position":[[1453,4],[1647,6]]},"566":{"position":[[175,6],[791,6],[1250,4]]}}}],["size:10gb",{"_index":1528,"t":{"304":{"position":[[570,10]]}}}],["size:512mb",{"_index":1527,"t":{"304":{"position":[[556,10]]}}}],["size:{new",{"_index":1155,"t":{"200":{"position":[[1303,10]]}}}],["spawn",{"_index":2005,"t":{"477":{"position":[[564,5]]}}}],["special",{"_index":314,"t":{"26":{"position":[[1213,11]]},"588":{"position":[[193,8]]}}}],["specialis",{"_index":1428,"t":{"268":{"position":[[136,11]]}}}],["specif",{"_index":397,"t":{"38":{"position":[[415,8]]},"83":{"position":[[1417,8]]},"91":{"position":[[124,8]]},"95":{"position":[[208,8]]},"208":{"position":[[426,13]]},"216":{"position":[[166,8]]},"224":{"position":[[230,8],[291,13]]},"226":{"position":[[351,8]]},"232":{"position":[[124,8]]},"266":{"position":[[709,8],[762,8]]},"270":{"position":[[263,8]]},"296":{"position":[[913,8]]},"324":{"position":[[63,8]]},"330":{"position":[[323,8]]},"336":{"position":[[140,8]]},"344":{"position":[[32,13]]},"346":{"position":[[74,8]]},"396":{"position":[[135,8]]},"428":{"position":[[159,8]]},"434":{"position":[[429,8]]},"540":{"position":[[1465,8]]},"548":{"position":[[364,8]]},"550":{"position":[[204,8]]},"562":{"position":[[2085,8],[2161,8]]},"582":{"position":[[1290,9]]},"598":{"position":[[828,8]]}}}],["specifi",{"_index":395,"t":{"38":{"position":[[258,7]]},"40":{"position":[[395,7]]},"107":{"position":[[196,9]]},"109":{"position":[[452,7]]},"121":{"position":[[467,9],[523,7]]},"163":{"position":[[95,7]]},"167":{"position":[[241,7],[349,7]]},"169":{"position":[[60,10]]},"181":{"position":[[242,7]]},"183":{"position":[[213,7]]},"186":{"position":[[25,9]]},"188":{"position":[[18,9]]},"190":{"position":[[22,9]]},"316":{"position":[[185,10]]},"330":{"position":[[13,9],[454,10]]},"364":{"position":[[210,9]]},"402":{"position":[[16,9]]},"514":{"position":[[232,9]]},"538":{"position":[[222,7]]}}}],["speed",{"_index":2348,"t":{"544":{"position":[[2264,5],[2330,5]]},"564":{"position":[[644,6]]}}}],["speedtest",{"_index":2286,"t":{"542":{"position":[[349,9]]}}}],["spend",{"_index":1653,"t":{"356":{"position":[[39,5]]},"486":{"position":[[292,5]]}}}],["split",{"_index":2152,"t":{"502":{"position":[[7,5]]},"514":{"position":[[202,5]]},"522":{"position":[[1019,9]]}}}],["spread",{"_index":2066,"t":{"479":{"position":[[1639,6]]}}}],["sqlalchemi",{"_index":1530,"t":{"304":{"position":[[780,10]]}}}],["sqlite",{"_index":869,"t":{"115":{"position":[[527,6]]},"465":{"position":[[219,6],[326,6]]},"473":{"position":[[491,6],[573,6],[866,6],[1425,6]]},"475":{"position":[[189,7],[215,6],[721,6]]},"477":{"position":[[762,6],[1137,6],[1230,6],[1463,6],[1691,6],[1768,6],[2999,6],[3419,6]]}}}],["sqlite://store.sqlite3",{"_index":866,"t":{"115":{"position":[[369,22]]},"304":{"position":[[963,23]]}}}],["src/app.css",{"_index":1169,"t":{"200":{"position":[[1945,11]]}}}],["src/app.jsx",{"_index":1129,"t":{"198":{"position":[[669,11]]},"200":{"position":[[132,11]]},"202":{"position":[[196,11]]},"204":{"position":[[182,11]]},"206":{"position":[[211,11]]}}}],["src/main.jsx",{"_index":1122,"t":{"198":{"position":[[224,12]]}}}],["src=\"https://cdn.jsdelivr.net/npm/protobufjs@latest/dist/protobuf.min.js\">{message.message}https://docs.waku.org/weekly0.5https://docs.waku.org/guides/js-waku/weekly0.5https://docs.waku.org/guides/js-waku/configure-discoveryweekly0.5https://docs.waku.org/guides/js-waku/debug-waku-dappweekly0.5https://docs.waku.org/guides/js-waku/faqweekly0.5https://docs.waku.org/guides/js-waku/light-send-receiveweekly0.5https://docs.waku.org/guides/js-waku/manage-filterweekly0.5https://docs.waku.org/guides/js-waku/message-encryptionweekly0.5https://docs.waku.org/guides/js-waku/run-waku-nodejsweekly0.5https://docs.waku.org/guides/js-waku/store-retrieve-messagesweekly0.5https://docs.waku.org/guides/js-waku/use-waku-create-appweekly0.5https://docs.waku.org/guides/js-waku/use-waku-reactweekly0.5https://docs.waku.org/guides/nwaku/build-sourceweekly0.5https://docs.waku.org/guides/nwaku/config-methodsweekly0.5https://docs.waku.org/guides/nwaku/config-optionsweekly0.5https://docs.waku.org/guides/nwaku/configure-discoveryweekly0.5https://docs.waku.org/guides/nwaku/configure-nwakuweekly0.5https://docs.waku.org/guides/nwaku/faqweekly0.5https://docs.waku.org/guides/nwaku/run-dockerweekly0.5https://docs.waku.org/guides/nwaku/run-docker-composeweekly0.5https://docs.waku.org/guides/nwaku/run-nodeweekly0.5https://docs.waku.org/learn/concepts/content-topicsweekly0.5https://docs.waku.org/learn/concepts/discv5weekly0.5https://docs.waku.org/learn/concepts/dns-discoveryweekly0.5https://docs.waku.org/learn/concepts/network-domainsweekly0.5https://docs.waku.org/learn/concepts/peer-discoveryweekly0.5https://docs.waku.org/learn/concepts/peer-exchangeweekly0.5https://docs.waku.org/learn/concepts/protocolsweekly0.5https://docs.waku.org/learn/concepts/static-peersweekly0.5https://docs.waku.org/learn/concepts/transportsweekly0.5https://docs.waku.org/learn/faqweekly0.5https://docs.waku.org/learn/glossaryweekly0.5https://docs.waku.org/learn/researchweekly0.5https://docs.waku.org/learn/security-featuresweekly0.5https://docs.waku.org/learn/waku-networkweekly0.5https://docs.waku.org/learn/waku-vs-libp2pweekly0.5https://docs.waku.org/privacy-policyweekly0.5https://docs.waku.org/research/weekly0.5https://docs.waku.org/research/benchmarks/postgres-adoptionweekly0.5https://docs.waku.org/research/research-and-studies/capped-bandwidthweekly0.5https://docs.waku.org/research/research-and-studies/incentivisationweekly0.5https://docs.waku.org/research/research-and-studies/maximum-bandwidthweekly0.5https://docs.waku.org/research/research-and-studies/message-propagationweekly0.5https://docs.waku.org/research/research-and-studies/rln-key-benchmarksweekly0.5https://docs.waku.org/rules-of-engagementweekly0.5https://docs.waku.org/termsweekly0.5 \ No newline at end of file +https://docs.waku.org/weekly0.5https://docs.waku.org/guides/js-waku/weekly0.5https://docs.waku.org/guides/js-waku/configure-discoveryweekly0.5https://docs.waku.org/guides/js-waku/debug-waku-dappweekly0.5https://docs.waku.org/guides/js-waku/faqweekly0.5https://docs.waku.org/guides/js-waku/light-send-receiveweekly0.5https://docs.waku.org/guides/js-waku/manage-filterweekly0.5https://docs.waku.org/guides/js-waku/message-encryptionweekly0.5https://docs.waku.org/guides/js-waku/run-waku-nodejsweekly0.5https://docs.waku.org/guides/js-waku/store-retrieve-messagesweekly0.5https://docs.waku.org/guides/js-waku/use-waku-create-appweekly0.5https://docs.waku.org/guides/js-waku/use-waku-reactweekly0.5https://docs.waku.org/guides/nwaku/build-sourceweekly0.5https://docs.waku.org/guides/nwaku/config-methodsweekly0.5https://docs.waku.org/guides/nwaku/config-optionsweekly0.5https://docs.waku.org/guides/nwaku/configure-discoveryweekly0.5https://docs.waku.org/guides/nwaku/configure-nwakuweekly0.5https://docs.waku.org/guides/nwaku/faqweekly0.5https://docs.waku.org/guides/nwaku/find-node-addressweekly0.5https://docs.waku.org/guides/nwaku/run-dockerweekly0.5https://docs.waku.org/guides/nwaku/run-docker-composeweekly0.5https://docs.waku.org/guides/nwaku/run-nodeweekly0.5https://docs.waku.org/learn/concepts/content-topicsweekly0.5https://docs.waku.org/learn/concepts/discv5weekly0.5https://docs.waku.org/learn/concepts/dns-discoveryweekly0.5https://docs.waku.org/learn/concepts/network-domainsweekly0.5https://docs.waku.org/learn/concepts/peer-discoveryweekly0.5https://docs.waku.org/learn/concepts/peer-exchangeweekly0.5https://docs.waku.org/learn/concepts/protocolsweekly0.5https://docs.waku.org/learn/concepts/static-peersweekly0.5https://docs.waku.org/learn/concepts/transportsweekly0.5https://docs.waku.org/learn/faqweekly0.5https://docs.waku.org/learn/glossaryweekly0.5https://docs.waku.org/learn/researchweekly0.5https://docs.waku.org/learn/security-featuresweekly0.5https://docs.waku.org/learn/waku-networkweekly0.5https://docs.waku.org/learn/waku-vs-libp2pweekly0.5https://docs.waku.org/privacy-policyweekly0.5https://docs.waku.org/research/weekly0.5https://docs.waku.org/research/benchmarks/postgres-adoptionweekly0.5https://docs.waku.org/research/research-and-studies/capped-bandwidthweekly0.5https://docs.waku.org/research/research-and-studies/incentivisationweekly0.5https://docs.waku.org/research/research-and-studies/maximum-bandwidthweekly0.5https://docs.waku.org/research/research-and-studies/message-propagationweekly0.5https://docs.waku.org/research/research-and-studies/rln-key-benchmarksweekly0.5https://docs.waku.org/rules-of-engagementweekly0.5https://docs.waku.org/termsweekly0.5 \ No newline at end of file diff --git a/terms/index.html b/terms/index.html index 52cfce0..c55076c 100644 --- a/terms/index.html +++ b/terms/index.html @@ -4,9 +4,9 @@ Terms of Use | Waku Documentation - - - + + +
@@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Terms of Use

Last updated: 14 February 2024

These website terms of use ('Website Terms of Use') are entered into by you and us, and they govern your access and use of this Website, including any content and functionality contained in the Website.

It is your responsibility to read the Website Terms of Use carefully before your use of the Website and your use of the Website means you have agreed to be bound and comply with these Website Terms of Use.

If you do not agree with these Website Terms of Use, you must not access or use the Website.

1) Who we are

For the purposes of these Website Terms of Use, the relevant entity is the Logos Collective Association, which has its registered office in Zug and its legal domicile address at:

Logos Collective Association
c/o PST Consulting GmbH
Baarerstrasse 10
6300 Zug
Switzerland

Whenever we refer to “Logos”, “we”, “us” or any other similar references, we are referring to the Logos Collective Association.

2) Disclaimers

The Website is provided by us on an ‘as is’ basis and you use the Website at your own sole discretion and risk.

We disclaim all warranties of any kind, express or implied, including without limitation the warranties of merchantability, fitness for a particular purpose, and non-infringement of intellectual property or other violation of rights. We do not warrant or make any representations concerning the completeness, accuracy, legality, utility, reliability, suitability or availability of the use of the Website, the content on this Website or otherwise relating to the Website, such content or on any sites linked to this site.These disclaimers will apply to the maximum extent permitted by applicable law.

We make no claims that the Website or any of its content is accessible, legally compliant or appropriate in your jurisdiction. Your access or use of the Website is at your own sole discretion and you are solely responsible for complying with any applicable local laws.

The content herein or as accessible through this website is intended to be made available for informational purposes only and should not be considered as creating any expectations or forming the basis of any contract, commitment or binding obligation with us. No information herein shall be considered to contain or be relied upon as a promise, representation, warranty or guarantee, whether express or implied and whether as to the past, present or the future in relation to the projects and matters described herein.

The information contained herein does not constitute financial, legal, tax, or other advice and should not be treated as such.

Nothing in this Website should be construed by you as an offer to buy or sell, or soliciting any offer to buy or sell any tokens or any security.

3) Forward looking statements

The Website may also contain forward-looking statements that are based on current expectations, estimates, forecasts, assumptions and projections about the technology, industry and markets in general.

The forward looking statements, which may include statements about the roadmap, project descriptions, technical details, functionalities, features, the development and use of tokens by projects, and any other statements related to such matters or as accessible through this website are subject to a high degree of risk and uncertainty. The forward looking statements are subject to change based on, among other things, market conditions, technical developments, and regulatory environment. The actual development and results, including the order and the timeline, might vary from what’s presented. The information contained herein is a summary and does not purport to be accurate, reliable or complete and we bear no responsibility for the accuracy, reliability or completeness of information contained herein. Because of the high degree of risk and uncertainty described above, you should not place undue reliance on any matters described in this website or as accessible through this website.

While we aim to update our website regularly, all information, including the timeline and the specifics of each stage, is subject to change and may be amended or supplemented at any time, without notice and at our sole discretion.

4) Intellectual property rights

The Website and its contents are made available under Creative Commons Attribution 4.0 International license (CC-BY 4.0). In essence this licence allows users to copy, modify and distribute the content in any format for any purpose, including commercial use, subject to certain requirements such as attributing us. For the full terms of this licence, please refer to the following website: https://creativecommons.org/licenses/by/4.0/.

To the extent the Website provides any links to a third party website, then their terms and conditions, including privacy policies, govern your use of those third party websites. By linking such third party websites, Status does not represent or imply that it endorses or supports such third party websites or content therein, or that it believes such third party websites and content therein to be accurate, useful or non-harmful. We have no control over such third party websites and will not be liable for your use of or activities on any third party websites accessed through the Website. If you access such third party websites through the Website, it is at your own risk and you are solely responsible for your activities on such third party websites.

6) Limitation of liability

We will not be held liable to you under any contract, negligence, strict liability, or other legal or equitable theory for any lost profits, cost of procurement for substitute services, or any special, incidental, or consequential damages related to, arising from, or in any way connected with these Website Terms of Use, the Website, the content on the Website, or your use of the Website, even if we have been advised of the possibility of such damages. In any event, our aggregate liability for such claims is limited to EUR 100 (one hundred Euros). This limitation of liability will apply to the maximum extent permitted by applicable law.

7) Indemnity

You shall indemnify us and hold us harmless from and against any and all claims, damages and expenses, including attorneys’ fees, arising from or related to your use of the Website, the content on the Website, including without limitation your violation of these Website Terms of Use.

8) Modifications

We may modify or replace any part of this Website Terms of Use at any time and without notice. You are responsible for checking the Website periodically for any changes. The new Website Terms of Use will be effective immediately upon its posting on the Website.

9) Governing law

Swiss law governs these Website Terms of Use and any disputes between you and us, whether in court or arbitration, without regard to conflict of laws provisions.

10) Disputes

In these terms, “dispute” has the broadest meaning enforceable by law and includes any claim you make against or controversy you may have in relation to these Website Terms of Use, the Website, the content on the Website, or your use of the Website.

We prefer arbitration over litigation as we believe it meets our principle of resolving disputes in the most effective and cost effective manner. You are bound by the following arbitration clause, which waives your right to litigation and to be heard by a judge. Please note that court review of an arbitration award is limited. You also waive all your rights to a jury trial (if any) in any and all jurisdictions.

If a (potential) dispute arises, you must first use your reasonable efforts to resolve it amicably with us. If these efforts do not result in a resolution of such dispute, you shall then send us a written notice of dispute setting out (i) the nature of the dispute, and the claim you are making; and (ii) the remedy you are seeking.

If we and you are unable to further resolve this dispute within sixty (60) calendar days of us receiving this notice of dispute, then any such dispute will be referred to and finally resolved by you and us through an arbitration administered by the Swiss Chambers’ Arbitration Institution in accordance with the Swiss Rules of International Arbitration for the time being in force, which rules are deemed to be incorporated herein by reference. The arbitral decision may be enforced in any court. The arbitration will be held in Zug, Switzerland, and may be conducted via video conference virtual/online methods if possible. The tribunal will consist of one arbitrator, and all proceedings as well as communications between the parties will be kept confidential. The language of the arbitration will be in English. Payment of all relevant fees in respect of the arbitration, including filing, administration and arbitrator fees will be in accordance with the Swiss Rules of International Arbitration.

Regardless of any applicable statute of limitations, you must bring any claims within one year after the claim arose or the time when you should have reasonably known about the claim. You also waive the right to participate in a class action lawsuit or a classwide arbitration against us.

11) About these Website Terms of Use

These Website Terms of Use cover the entire agreement between you and us regarding the Website and supersede all prior and contemporaneous understandings, agreements, representations and warranties, both written and oral, with respect to the Website.

The captions and headings identifying sections and subsections of these Website Terms of Use are for reference only and do not define, modify, expand, limit, or affect the interpretation of any provisions of these Website Terms of Use.

If any part of these Website Terms of Use is held invalid or unenforceable, that part will be severable from these Website Terms of Use, and the remaining portions will remain in full force and effect. If we fail to enforce any of these Website Terms of Use, that does not mean that we have waived our right to enforce them.

If you have any specific questions about these Website Terms of Use, please contact us at legal@free.technology.

This document is licensed under CC-BY-SA.

- - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Terms of Use

Last updated: 14 February 2024

These website terms of use ('Website Terms of Use') are entered into by you and us, and they govern your access and use of this Website, including any content and functionality contained in the Website.

It is your responsibility to read the Website Terms of Use carefully before your use of the Website and your use of the Website means you have agreed to be bound and comply with these Website Terms of Use.

If you do not agree with these Website Terms of Use, you must not access or use the Website.

1) Who we are

For the purposes of these Website Terms of Use, the relevant entity is the Logos Collective Association, which has its registered office in Zug and its legal domicile address at:

Logos Collective Association
c/o PST Consulting GmbH
Baarerstrasse 10
6300 Zug
Switzerland

Whenever we refer to “Logos”, “we”, “us” or any other similar references, we are referring to the Logos Collective Association.

2) Disclaimers

The Website is provided by us on an ‘as is’ basis and you use the Website at your own sole discretion and risk.

We disclaim all warranties of any kind, express or implied, including without limitation the warranties of merchantability, fitness for a particular purpose, and non-infringement of intellectual property or other violation of rights. We do not warrant or make any representations concerning the completeness, accuracy, legality, utility, reliability, suitability or availability of the use of the Website, the content on this Website or otherwise relating to the Website, such content or on any sites linked to this site.These disclaimers will apply to the maximum extent permitted by applicable law.

We make no claims that the Website or any of its content is accessible, legally compliant or appropriate in your jurisdiction. Your access or use of the Website is at your own sole discretion and you are solely responsible for complying with any applicable local laws.

The content herein or as accessible through this website is intended to be made available for informational purposes only and should not be considered as creating any expectations or forming the basis of any contract, commitment or binding obligation with us. No information herein shall be considered to contain or be relied upon as a promise, representation, warranty or guarantee, whether express or implied and whether as to the past, present or the future in relation to the projects and matters described herein.

The information contained herein does not constitute financial, legal, tax, or other advice and should not be treated as such.

Nothing in this Website should be construed by you as an offer to buy or sell, or soliciting any offer to buy or sell any tokens or any security.

3) Forward looking statements

The Website may also contain forward-looking statements that are based on current expectations, estimates, forecasts, assumptions and projections about the technology, industry and markets in general.

The forward looking statements, which may include statements about the roadmap, project descriptions, technical details, functionalities, features, the development and use of tokens by projects, and any other statements related to such matters or as accessible through this website are subject to a high degree of risk and uncertainty. The forward looking statements are subject to change based on, among other things, market conditions, technical developments, and regulatory environment. The actual development and results, including the order and the timeline, might vary from what’s presented. The information contained herein is a summary and does not purport to be accurate, reliable or complete and we bear no responsibility for the accuracy, reliability or completeness of information contained herein. Because of the high degree of risk and uncertainty described above, you should not place undue reliance on any matters described in this website or as accessible through this website.

While we aim to update our website regularly, all information, including the timeline and the specifics of each stage, is subject to change and may be amended or supplemented at any time, without notice and at our sole discretion.

4) Intellectual property rights

The Website and its contents are made available under Creative Commons Attribution 4.0 International license (CC-BY 4.0). In essence this licence allows users to copy, modify and distribute the content in any format for any purpose, including commercial use, subject to certain requirements such as attributing us. For the full terms of this licence, please refer to the following website: https://creativecommons.org/licenses/by/4.0/.

To the extent the Website provides any links to a third party website, then their terms and conditions, including privacy policies, govern your use of those third party websites. By linking such third party websites, Status does not represent or imply that it endorses or supports such third party websites or content therein, or that it believes such third party websites and content therein to be accurate, useful or non-harmful. We have no control over such third party websites and will not be liable for your use of or activities on any third party websites accessed through the Website. If you access such third party websites through the Website, it is at your own risk and you are solely responsible for your activities on such third party websites.

6) Limitation of liability

We will not be held liable to you under any contract, negligence, strict liability, or other legal or equitable theory for any lost profits, cost of procurement for substitute services, or any special, incidental, or consequential damages related to, arising from, or in any way connected with these Website Terms of Use, the Website, the content on the Website, or your use of the Website, even if we have been advised of the possibility of such damages. In any event, our aggregate liability for such claims is limited to EUR 100 (one hundred Euros). This limitation of liability will apply to the maximum extent permitted by applicable law.

7) Indemnity

You shall indemnify us and hold us harmless from and against any and all claims, damages and expenses, including attorneys’ fees, arising from or related to your use of the Website, the content on the Website, including without limitation your violation of these Website Terms of Use.

8) Modifications

We may modify or replace any part of this Website Terms of Use at any time and without notice. You are responsible for checking the Website periodically for any changes. The new Website Terms of Use will be effective immediately upon its posting on the Website.

9) Governing law

Swiss law governs these Website Terms of Use and any disputes between you and us, whether in court or arbitration, without regard to conflict of laws provisions.

10) Disputes

In these terms, “dispute” has the broadest meaning enforceable by law and includes any claim you make against or controversy you may have in relation to these Website Terms of Use, the Website, the content on the Website, or your use of the Website.

We prefer arbitration over litigation as we believe it meets our principle of resolving disputes in the most effective and cost effective manner. You are bound by the following arbitration clause, which waives your right to litigation and to be heard by a judge. Please note that court review of an arbitration award is limited. You also waive all your rights to a jury trial (if any) in any and all jurisdictions.

If a (potential) dispute arises, you must first use your reasonable efforts to resolve it amicably with us. If these efforts do not result in a resolution of such dispute, you shall then send us a written notice of dispute setting out (i) the nature of the dispute, and the claim you are making; and (ii) the remedy you are seeking.

If we and you are unable to further resolve this dispute within sixty (60) calendar days of us receiving this notice of dispute, then any such dispute will be referred to and finally resolved by you and us through an arbitration administered by the Swiss Chambers’ Arbitration Institution in accordance with the Swiss Rules of International Arbitration for the time being in force, which rules are deemed to be incorporated herein by reference. The arbitral decision may be enforced in any court. The arbitration will be held in Zug, Switzerland, and may be conducted via video conference virtual/online methods if possible. The tribunal will consist of one arbitrator, and all proceedings as well as communications between the parties will be kept confidential. The language of the arbitration will be in English. Payment of all relevant fees in respect of the arbitration, including filing, administration and arbitrator fees will be in accordance with the Swiss Rules of International Arbitration.

Regardless of any applicable statute of limitations, you must bring any claims within one year after the claim arose or the time when you should have reasonably known about the claim. You also waive the right to participate in a class action lawsuit or a classwide arbitration against us.

11) About these Website Terms of Use

These Website Terms of Use cover the entire agreement between you and us regarding the Website and supersede all prior and contemporaneous understandings, agreements, representations and warranties, both written and oral, with respect to the Website.

The captions and headings identifying sections and subsections of these Website Terms of Use are for reference only and do not define, modify, expand, limit, or affect the interpretation of any provisions of these Website Terms of Use.

If any part of these Website Terms of Use is held invalid or unenforceable, that part will be severable from these Website Terms of Use, and the remaining portions will remain in full force and effect. If we fail to enforce any of these Website Terms of Use, that does not mean that we have waived our right to enforce them.

If you have any specific questions about these Website Terms of Use, please contact us at legal@free.technology.

This document is licensed under CC-BY-SA.

+ + \ No newline at end of file
  • F_b+vITe_3pYc#VDr_X?KR^6wDL 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

    f#8 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%0A~^V3Z=M^} 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 literal 0 HcmV?d00001 diff --git a/img/railgun-use-case.jpeg b/img/railgun-use-case.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..9a6ce1942f10342be046340de6ba2579dae6a075 GIT binary patch literal 1017512 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

    B;HSf?LGLYZjB5L?&pB<_H(Dp%~+`Sw1gs$RG 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%0Aoo#oL0j<6uulUsV3L_hI;Li=GGK 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

    Zzk!F)_EO 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

    C>Lh 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

    i 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�Yo#e7dA&qJ! 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%0D2?;!=y|;b3 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%0Du4oc41mv!`T|41cLF@Rm9zo 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%0D_1U`BP^m=ENML~G8b}v|#hE^q44;)B0*BJ`B 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 p@7 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�mm&L72W+t^wTV2%X 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 Xd;31`Bw#3v2Bu5Mhig~8`}ggCL!-t1 literal 0 HcmV?d00001 diff --git a/index.html b/index.html index b5c881a..057e118 100644 --- a/index.html +++ b/index.html @@ -3,10 +3,10 @@ -Getting Started | Waku Documentation - - - +Introduction to Waku | Waku Documentation + + +

    @@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

    Getting Started

    caution

    Waku has risks and limitations as it is still developing and preparing for extensive adoption. However, it is already demonstrating its capabilities by powering various applications. Join our community to stay updated on our progress.

    Ready to integrate Waku into your application for private, secure, censorship-free communication? Explore the available SDKs and contribute by running a node.

    Run a Waku node

    The Waku Network is a decentralised, permissionless system where anyone can run nodes, use the network, and contribute to its support.

    DescriptionDocumentation
    nwakuNim-based Waku implementation to run a standalone node and access the networkRun a Nwaku Node
    nwaku-composePre-configured Docker Compose setup for running a RLN-enabled nwaku node with Grafana metrics dashboard (recommended)Run Nwaku with Docker Compose
    go-wakuGolang-based Waku implementation to run a standalone node and access the networkCOMING SOON

    Integrate using SDKs

    Waku is implemented in multiple SDKs, allowing it to integrate with different languages and address various use cases efficiently.

    DescriptionDocumentation
    @waku/sdkJavaScript/TypeScript SDK designed for browser environmentsJavaScript Waku SDK
    @waku/reactReact components and UI adapters designed for seamless integration with @waku/sdkBuild React DApps Using @waku/react
    nwakuNim SDK designed for integration with native Nim applicationsCOMING SOON
    go-wakuGolang SDK designed for integration with Golang applications, includes C bindings for usage in C/C++, C#/Unity, Swift, and KotlinCOMING SOON
    waku-rust-bindingsRust wrapper using go-waku bindings designed for integration in Rust applicationsCOMING SOON

    Run on mobile devices

    Waku provides integrations tailored for mobile applications, enabling Waku to run efficiently on mobile devices.

    DescriptionDocumentation
    Swift (iOS)go-waku bindings for Swift applications to seamlessly integrate WakuCOMING SOON
    Kotlin (Android)go-waku bindings for Kotlin applications to seamlessly integrate WakuCOMING SOON

    More integrations

    DescriptionDocumentation
    REST APIREST API interface provided by nwaku and go-waku to interact with the Waku NetworkWaku Node REST API Reference
    @waku/create-appStarter kit to bootstrap your next @waku/sdk project from various example templatesScaffold DApps Using @waku/create-app
    tip

    Check out the Waku Idea Board for creative project ideas and explore the limitless possibilities of the Waku protocol.

    - - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

    Introduction to Waku

    Waku is a family of robust, censorship-resistant, peer-to-peer communication protocols that enable privacy-focused messaging for Web3 applications, allowing you to integrate decentralised communication features into your dApp without compromising security or privacy.

    tip

    Check out our Learn section, YouTube channel, and Blog to dive into how Waku works behind the scenes!

    What isn’t Waku?

    • Waku is not a blockchain but a network composed of protocols designed for Web3 communication, operating without the need for gas fees.
    • Waku is not just for messaging applications; it supports the development of complex applications that require secure and private data transmission.
    • Waku is not a long-term data storage network; it focuses on short, ephemeral, real-time messaging.

    What can Waku be used for?

    1. Chat Messengers: Waku can be used to build private, decentralised chat apps resistant to censorship.
    2. Voting and Proposals: Exchange votes on proposals off-chain via Waku to save gas fees, then submit aggregated results to the blockchain.
    3. NFT Marketplaces: Use Waku to handle off-chain NFT bids and offers for gas savings, and to integrate social interactions like likes and comments.
    4. State Channels: Establish and maintain state channels with Waku, facilitating seamless message exchanges and updates without blockchain interaction.
    5. Signature Exchange for Multi-Signature Wallets: Allow multi-signature wallet owners to exchange signatures privately and securely through Waku.
    6. Game Mechanics Communication: Implement Waku as a communication layer for decentralised, peer-to-peer gaming, avoiding centralised infrastructure.
    7. Layer 2 Coordination (Open Market, Spam Protected Mempool): Broadcast and aggregate Layer 2 transactions via Waku to enhance privacy and scalability, reducing network load.
    8. Social Media Platforms: Beyond chat messengers, use Waku for decentralised, censorship-resistant social media platforms like news feeds and multimedia sharing.
    tip

    Looking for what to build with Waku? Discover a collection of sample ideas and use cases for inspiration, curated by our community at: https://ideas.waku.org/ and Awesome Waku.

    Case studies

    Getting started

    Run a Waku node

    Waku is a decentralised, permissionless system where anyone can run a node, use the network, and contribute to its support. We recommend following the Run Nwaku with Docker Compose guide and Waku Node Operator Cheatsheet to easily run a node.

    tip

    If you encounter issues running your node or require assistance with anything, please visit the #node-help channel on our Discord.

    Integrate using SDKs

    Waku is implemented in multiple SDKs, allowing it to integrate with different languages and address various use cases efficiently.

    DescriptionDocumentation
    @waku/sdkJavaScript/TypeScript SDK designed for browser environmentsJavaScript Waku SDK
    @waku/reactReact components and UI adapters designed for seamless integration with @waku/sdkBuild React DApps Using @waku/react

    Other integrations

    DescriptionDocumentation
    REST APIREST API interface provided by nwaku and go-waku to interact with the Waku NetworkWaku Node REST API Reference
    @waku/create-appStarter kit to bootstrap your next @waku/sdk project from various example templatesScaffold DApps Using @waku/create-app
    tip

    Explore some example apps built using Waku at https://examples.waku.org/ and view a list of projects and workshops from previous hackathons at Awesome Waku.

    + + \ No newline at end of file diff --git a/learn/concepts/content-topics/index.html b/learn/concepts/content-topics/index.html index 97b827a..fd86f39 100644 --- a/learn/concepts/content-topics/index.html +++ b/learn/concepts/content-topics/index.html @@ -4,9 +4,9 @@ Content Topics | Waku Documentation - - - + + +
    @@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

    Content Topics

    Content Topics are metadata strings set by developers on outgoing messages to facilitate protocol-level features like selectively processing incoming messages (Relay or Filter) and retrieving historical messages (Store) that meet specific filtering criteria. Have a look at the WAKU2-TOPICS specification to learn more.

    Naming format

    Here is the recommended format for content topics:

    /{application-name}/{version}/{content-topic-name}/{encoding}

    • application-name: This is the unique name of your decentralised application (DApp) to prevent conflicts with other DApps.
    • version: Typically starting at 1, this field helps track breaking changes in your messages.
    • content-topic-name: The specific name of the content topic used for filtering.
    • encoding: The message encoding or serialisation format, with Protocol Buffers (proto) being the recommended choice.

    For example, if your DApp is called SuperCrypto and it allows users to receive notifications and send private messages, you can consider using the following content topics:

    • /supercrypto/1/notification/proto
    • /supercrypto/1/private-message/proto
    tip

    While you can choose any encoding format for your Content Topic, we highly recommend using Protocol Buffers (proto) because of its efficiency. Choosing a lightweight format ensures optimal performance of your DApp.

    Naming considerations

    When choosing a content topic, it is essential to consider the privacy implications. Here are several factors to keep in mind:

    Protocols disclose content topics to peers

    The Filter, Store, and Light Push protocols share content topics with peers, allowing them to link IP and content topic interests. The Relay protocol, using GossipSub, provides recipient anonymity, which can be compromised if the content topic exposes user information.

    For example, instead of using Personally Identifiable Information (PII) in the content topic (e.g., a public key), you can create buckets (e.g., based on the first 4 bytes of the public key hash).

    info

    Waku is developing privacy-preserving features like Anonymous Filter Subscription for the Filter protocol and Anonymous Query for the Store protocol to hide content topics from potential adversaries.

    Increasing k-anonymity preserves user anonymity

    You can increase k-anonymity within the network by using a unified content topic across the entire application or targeting specific features like notifications or private messages, allowing multiple users to share it.

    We recommend switching functionality using the Protocol Buffer (proto) message format. By doing so, applications can retain a high granularity and functionality while using a single content topic, preserving user privacy. For example:

    message NotificationPayload {
    ...
    }

    message FeatureAbcPayload {
    ...
    }

    // By default, all fields in protobuf are optional so only field may be encoded at a time
    message Payload {
    NotificationPayload notification = 1;
    FeatureAbcPayload feature_abc = 2;
    }

    Creating buckets help in distributing traffic

    When an application uses a single content topic, all users using request/response protocols (Filter, Store) receive all its messages. For heavy traffic, developers can create buckets by hashing a unique identifier (e.g., recipient's ID, public key, or app domain topic) and adding its first byte to the content topic, like /my-app/0/a/proto.

    This approach divides traffic into multiple topics, reducing the messages users have to download. Developers can add more first bytes to the content topic over time to improve efficiency and privacy based on messages and user needs.

    info

    The k value of k-anonymity equals the number of IDs for which the first character of the hash is "a". For example, using a single content topic in an application with 10,000 users results in k = 10,000. However, using the hash ID's first character, k reduces to 10,000 / 16 = 625.

    - - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

    Content Topics

    Content Topics are metadata strings set by developers on outgoing messages to facilitate protocol-level features like selectively processing incoming messages (Relay or Filter) and retrieving historical messages (Store) that meet specific filtering criteria. Have a look at the WAKU2-TOPICS specification to learn more.

    Naming format

    Here is the recommended format for content topics:

    /{application-name}/{version}/{content-topic-name}/{encoding}

    • application-name: This is the unique name of your decentralised application (DApp) to prevent conflicts with other DApps.
    • version: Typically starting at 1, this field helps track breaking changes in your messages.
    • content-topic-name: The specific name of the content topic used for filtering.
    • encoding: The message encoding or serialisation format, with Protocol Buffers (proto) being the recommended choice.

    For example, if your DApp is called SuperCrypto and it allows users to receive notifications and send private messages, you can consider using the following content topics:

    • /supercrypto/1/notification/proto
    • /supercrypto/1/private-message/proto
    tip

    While you can choose any encoding format for your Content Topic, we highly recommend using Protocol Buffers (proto) because of its efficiency. Choosing a lightweight format ensures optimal performance of your DApp.

    Naming considerations

    When choosing a content topic, it is essential to consider the privacy implications. Here are several factors to keep in mind:

    Protocols disclose content topics to peers

    The Filter, Store, and Light Push protocols share content topics with peers, allowing them to link IP and content topic interests. The Relay protocol, using GossipSub, provides recipient anonymity, which can be compromised if the content topic exposes user information.

    For example, instead of using Personally Identifiable Information (PII) in the content topic (e.g., a public key), you can create buckets (e.g., based on the first 4 bytes of the public key hash).

    info

    Waku is developing privacy-preserving features like Anonymous Filter Subscription for the Filter protocol and Anonymous Query for the Store protocol to hide content topics from potential adversaries.

    Increasing k-anonymity preserves user anonymity

    You can increase k-anonymity within the network by using a unified content topic across the entire application or targeting specific features like notifications or private messages, allowing multiple users to share it.

    We recommend switching functionality using the Protocol Buffer (proto) message format. By doing so, applications can retain a high granularity and functionality while using a single content topic, preserving user privacy. For example:

    message NotificationPayload {
    ...
    }

    message FeatureAbcPayload {
    ...
    }

    // By default, all fields in protobuf are optional so only field may be encoded at a time
    message Payload {
    NotificationPayload notification = 1;
    FeatureAbcPayload feature_abc = 2;
    }

    Creating buckets help in distributing traffic

    When an application uses a single content topic, all users using request/response protocols (Filter, Store) receive all its messages. For heavy traffic, developers can create buckets by hashing a unique identifier (e.g., recipient's ID, public key, or app domain topic) and adding its first byte to the content topic, like /my-app/0/a/proto.

    This approach divides traffic into multiple topics, reducing the messages users have to download. Developers can add more first bytes to the content topic over time to improve efficiency and privacy based on messages and user needs.

    info

    The k value of k-anonymity equals the number of IDs for which the first character of the hash is "a". For example, using a single content topic in an application with 10,000 users results in k = 10,000. However, using the hash ID's first character, k reduces to 10,000 / 16 = 625.

    + + \ No newline at end of file diff --git a/learn/concepts/discv5/index.html b/learn/concepts/discv5/index.html index 0729049..30880d3 100644 --- a/learn/concepts/discv5/index.html +++ b/learn/concepts/discv5/index.html @@ -4,9 +4,9 @@ Discv5 | Waku Documentation - - - + + +
    @@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

    Discv5

    Discv5 is a decentralised and efficient peer discovery mechanism for the Waku Network. It uses a Distributed Hash Table (DHT) for storing ENR records, providing resistance to censorship. Discv5 offers a global view of participating nodes, enabling random sampling for load distribution. It uses bootstrap nodes as an entry point to the network, providing randomised sets of nodes for mesh expansion. Have a look at the Discv5 specification to learn more.

    Pros

    • Decentralised with random sampling from a global view.
    • Continuously researched and improved.

    Cons

    • Requires lots of connections and involves frequent churn.
    • Relies on User Datagram Protocol (UDP), which is not supported in web browsers.

    Overview

    1. DNS Discovery protocol is executed.
    2. Alice retrieves Bob's ENR (Ethereum Node Record) from DNS Server.
    3. Alice executes the Discv5 protocol with Bob using UDP connection details from ENR.
    4. Bob returns Carol's, David's and Erin's ENRs to Alice.
    5. Alice decodes ENRs and extracts the details of Carol, David, and Erin's TCP and UDP connections.
    6. Alice executes the Discv5 protocol with Carol using UDP connection details from ENR.
    7. Carol returns Frank's, Gwen's and Harry's ENRs to Alice.
    8. Alice decodes ENRs and extracts Frank's, Gwen's and Harry's TCP and UDP connection details.
    9. Alice selects to dial David, Frank and Gwen.
    10. Alice dials David, Frank and Gwen over libp2p using TCP connection details from ENRs.
    - - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

    Discv5

    Discv5 is a decentralised and efficient peer discovery mechanism for the Waku Network. It uses a Distributed Hash Table (DHT) for storing ENR records, providing resistance to censorship. Discv5 offers a global view of participating nodes, enabling random sampling for load distribution. It uses bootstrap nodes as an entry point to the network, providing randomised sets of nodes for mesh expansion. Have a look at the Discv5 specification to learn more.

    Pros

    • Decentralised with random sampling from a global view.
    • Continuously researched and improved.

    Cons

    • Requires lots of connections and involves frequent churn.
    • Relies on User Datagram Protocol (UDP), which is not supported in web browsers.

    Overview

    1. DNS Discovery protocol is executed.
    2. Alice retrieves Bob's ENR (Ethereum Node Record) from DNS Server.
    3. Alice executes the Discv5 protocol with Bob using UDP connection details from ENR.
    4. Bob returns Carol's, David's and Erin's ENRs to Alice.
    5. Alice decodes ENRs and extracts the details of Carol, David, and Erin's TCP and UDP connections.
    6. Alice executes the Discv5 protocol with Carol using UDP connection details from ENR.
    7. Carol returns Frank's, Gwen's and Harry's ENRs to Alice.
    8. Alice decodes ENRs and extracts Frank's, Gwen's and Harry's TCP and UDP connection details.
    9. Alice selects to dial David, Frank and Gwen.
    10. Alice dials David, Frank and Gwen over libp2p using TCP connection details from ENRs.
    + + \ No newline at end of file diff --git a/learn/concepts/dns-discovery/index.html b/learn/concepts/dns-discovery/index.html index d0a63ac..b386726 100644 --- a/learn/concepts/dns-discovery/index.html +++ b/learn/concepts/dns-discovery/index.html @@ -3,10 +3,10 @@ -DNS Discovery | Waku Documentation - - - +DNS Discovery | Waku Documentation + + +
    @@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

    DNS Discovery

    Built upon the foundation of EIP-1459: Node Discovery via DNS, DNS Discovery allows the retrieval of an ENR tree from the TXT field of a domain name. This innovative approach enables the storage of essential node connection details, including IP, port, and multiaddr, using the standardised ENR format.

    This bootstrapping method allows anyone to register and publish a domain name for the network, promoting increased decentralisation.

    Pros

    • Low latency, low resource requirements.
    • Easy bootstrap list updates by modifying the domain name, eliminating the need for code changes.
    • Ability to reference a larger list of nodes by including other domain names in the code or ENR tree.

    Cons

    • Vulnerable to censorship: Domain names can be blocked or restricted.
    • Limited scalability: The listed nodes are at risk of being overwhelmed by receiving all queries. Also, operators must provide their ENR to the domain owner for listing.

    Overview

    1. DNS lookup query to retrieve TXT data stored on example.com domain.
    2. enrtree-root is returned, and the value of e is the enr-root, the root hash of the node subtree.
    3. DNS lookup query to retrieve TXT data stored on <enr-root>.example.com domain.
    4. enrtree-branch is returned; this tree contains hashes of node subtrees.
    5. DNS lookup query to retrieve TXT data stored on DU...VQ.example.com domain, the first leaf of enrtree-branch.
    6. enr record is returned.
    7. Returned value is decoded, and peer connection details such as IP address and port are learned.
    - - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

    DNS Discovery

    Built upon the foundation of EIP-1459: Node Discovery via DNS, DNS Discovery allows the retrieval of an ENR tree from the TXT field of a domain name. This innovative approach enables the storage of essential node connection details, including IP, port, and multiaddr.

    This bootstrapping method allows anyone to register and publish a domain name for the network, promoting increased decentralisation.

    Pros

    • Low latency, low resource requirements.
    • Easy bootstrap list updates by modifying the domain name, eliminating the need for code changes.
    • Ability to reference a larger list of nodes by including other domain names in the code or ENR tree.

    Cons

    • Vulnerable to censorship: Domain names can be blocked or restricted.
    • Limited scalability: The listed nodes are at risk of being overwhelmed by receiving all queries. Also, operators must provide their ENR to the domain owner for listing.

    Overview

    1. DNS lookup query to retrieve TXT data stored on example.com domain.
    2. enrtree-root is returned, and the value of e is the enr-root, the root hash of the node subtree.
    3. DNS lookup query to retrieve TXT data stored on <enr-root>.example.com domain.
    4. enrtree-branch is returned; this tree contains hashes of node subtrees.
    5. DNS lookup query to retrieve TXT data stored on DU...VQ.example.com domain, the first leaf of enrtree-branch.
    6. enr record is returned.
    7. Returned value is decoded, and peer connection details such as IP address and port are learned.
    + + \ No newline at end of file diff --git a/learn/concepts/network-domains/index.html b/learn/concepts/network-domains/index.html index a74e41f..5915aac 100644 --- a/learn/concepts/network-domains/index.html +++ b/learn/concepts/network-domains/index.html @@ -4,9 +4,9 @@ Network Domains | Waku Documentation - - - + + +
    @@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

    Network Domains

    Waku is a unified and cohesive entity that offers a rich ecosystem with three distinct network interaction domains. These domains serve specialised purposes and contribute to the robust functionality of Waku, forming its foundation.

    Discovery domain

    Peer discovery in Waku facilitates locating other nodes within the network. As a modular protocol, Waku incorporates various discovery mechanisms, such as Discv5 and Peer Exchange. These mechanisms allow developers to choose the most suitable option(s) for their specific use cases and user environments, including mobile phones, desktop browsers, servers, and more.

    Gossip domain

    GossipSub derives its name from the practice within Pub/Sub networks where peers gossip about the messages they have encountered, thus establishing a message delivery network.

    Waku employs gossiping through Relay to distribute messages across the network. Additionally, Waku introduces RLN Relay, an experimental mechanism that combines privacy preservation and economic spam protection.

    Request/response domain

    Waku provides a set of protocols to optimise its performance in resource-limited environments like low bandwidth or mostly offline scenarios for multiple purposes.

    • Store enables the retrieval of historical messages.
    • Filter efficiently retrieves a subset of messages to conserve bandwidth.
    • Light Push facilitates message publication for nodes with limited bandwidth and short connection windows.

    Overview of protocol interaction

    Here is a diagram illustrating the interaction between different protocols within the Waku Network.

    The Pub/Sub topic pubtopic1 serves as a means of routing messages (the network employs a default Pub/Sub topic) and indicates that it is subscribed to messages on that topic for a relay. Node D serves as a Store and is responsible for storing messages.

    1. Node A creates a WakuMessage msg1 with Content Topic contentTopic1.
    2. Node F requests to get messages filtered by Pub/Sub topic pubtopic1 and Content Topic contentTopic1. Node D subscribes F to this filter and will forward messages that match that filter in the future.
    3. Node A publishes msg1 on pubtopic1. The message is sent from Node A to Node B and then forwarded to Node D.
    4. Node D, upon receiving msg1, stores the message for future retrieval by other nodes and forwards it to Node C.
    5. Node D also pushes msg1 to Node F, informing it about the arrival of a new message.
    6. At a later time, Node E comes online and requests messages matching pubtopic1 and contentTopic1 from Node D. Node D responds with msg1 and potentially other messages that match the query.
    - - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

    Network Domains

    Waku is a unified and cohesive entity that offers a rich ecosystem with three distinct network interaction domains. These domains serve specialised purposes and contribute to the robust functionality of Waku, forming its foundation.

    Discovery domain

    Peer discovery in Waku facilitates locating other nodes within the network. As a modular protocol, Waku incorporates various discovery mechanisms, such as Discv5 and Peer Exchange. These mechanisms allow developers to choose the most suitable option(s) for their specific use cases and user environments, including mobile phones, desktop browsers, servers, and more.

    Gossip domain

    GossipSub derives its name from the practice within Pub/Sub networks where peers gossip about the messages they have encountered, thus establishing a message delivery network.

    Waku employs gossiping through Relay to distribute messages across the network. Additionally, Waku introduces RLN Relay, an experimental mechanism that combines privacy preservation and economic spam protection.

    Request/response domain

    Waku provides a set of protocols to optimise its performance in resource-limited environments like low bandwidth or mostly offline scenarios for multiple purposes.

    • Store enables the retrieval of historical messages.
    • Filter efficiently retrieves a subset of messages to conserve bandwidth.
    • Light Push facilitates message publication for nodes with limited bandwidth and short connection windows.

    Overview of protocol interaction

    Here is a diagram illustrating the interaction between different protocols within the Waku Network.

    The Pub/Sub topic pubtopic1 serves as a means of routing messages (the network employs a default Pub/Sub topic) and indicates that it is subscribed to messages on that topic for a relay. Node D serves as a Store and is responsible for storing messages.

    1. Node A creates a WakuMessage msg1 with Content Topic contentTopic1.
    2. Node F requests to get messages filtered by Pub/Sub topic pubtopic1 and Content Topic contentTopic1. Node D subscribes F to this filter and will forward messages that match that filter in the future.
    3. Node A publishes msg1 on pubtopic1. The message is sent from Node A to Node B and then forwarded to Node D.
    4. Node D, upon receiving msg1, stores the message for future retrieval by other nodes and forwards it to Node C.
    5. Node D also pushes msg1 to Node F, informing it about the arrival of a new message.
    6. At a later time, Node E comes online and requests messages matching pubtopic1 and contentTopic1 from Node D. Node D responds with msg1 and potentially other messages that match the query.
    + + \ No newline at end of file diff --git a/learn/concepts/peer-discovery/index.html b/learn/concepts/peer-discovery/index.html index 096481e..57a7345 100644 --- a/learn/concepts/peer-discovery/index.html +++ b/learn/concepts/peer-discovery/index.html @@ -4,9 +4,9 @@ Peer Discovery | Waku Documentation - - - + + +
    @@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

    Peer Discovery

    When initialising a Waku node, it must connect with other peers to enable message sending, receiving, and retrieval. To achieve this, a discovery mechanism is employed to locate other peers in the network. This process is known as bootstrapping.

    Once a connection is established, the node must actively seek out additional peers to have:

    • Sufficient peers in the Relay mesh: The goal is to have at least 6 peers in the mesh. This ensures a robust network where messages can be efficiently relayed.
    • Reserve peers for backup: It is essential to have a surplus of peers available as reserves. These reserves are backups when the current peers become overloaded or experience unexpected disconnections.
    • Peers with specific capabilities: The node seeks out peers with specific capabilities, such as Store, Light Push, or Filter. This allows for targeted interactions and enhanced functionality based on the desired capabilities.

    Waku supports multiple peer discovery mechanisms, such as:

    - - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

    Peer Discovery

    When initialising a Waku node, it must connect with other peers to enable message sending, receiving, and retrieval. To achieve this, a discovery mechanism is employed to locate other peers in the network. This process is known as bootstrapping.

    Once a connection is established, the node must actively seek out additional peers to have:

    • Sufficient peers in the Relay mesh: The goal is to have at least 6 peers in the mesh. This ensures a robust network where messages can be efficiently relayed.
    • Reserve peers for backup: It is essential to have a surplus of peers available as reserves. These reserves are backups when the current peers become overloaded or experience unexpected disconnections.
    • Peers with specific capabilities: The node seeks out peers with specific capabilities, such as Store, Light Push, or Filter. This allows for targeted interactions and enhanced functionality based on the desired capabilities.

    Waku supports multiple peer discovery mechanisms, such as:

    + + \ No newline at end of file diff --git a/learn/concepts/peer-exchange/index.html b/learn/concepts/peer-exchange/index.html index 3d21ead..535525a 100644 --- a/learn/concepts/peer-exchange/index.html +++ b/learn/concepts/peer-exchange/index.html @@ -3,10 +3,10 @@ -Peer Exchange | Waku Documentation - - - +Peer Exchange | Waku Documentation + + +
    @@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

    Peer Exchange

    The primary objective of this protocol is to facilitate peer connectivity for resource-limited devices without relying on Discv5. The peer exchange protocol enables light nodes to request peers from other nodes within the network. Have a look at the Peer Exchange specification to learn more.

    info

    Peer Exchange enables requesting random peers from other network nodes without revealing information about their connectivity or neighbourhood.

    Pros

    • Low resource requirements.
    • Decentralised with random sampling of nodes from a global view using Discv5.

    Cons

    • Decreased anonymity.
    • Imposes additional load on responder nodes.

    Overview

    1. DNS Discovery protocol is executed.
    2. Alice retrieves Bob's websocket multiaddr from DNS Server.
    3. Alice dials Bob using libp2p protocols.
    4. Alice executes a Peer Exchange query to Bob.
    5. Bob returns Carol's and David's ENR to Alice.
    6. Alice decodes ENRs and extracts Carol's and David's websocket multiaddrs.
    7. Alice dials Carol and David.
    8. Alice can now drop the connection with Bob (bootstrap node); Alice has 2 connections to the Waku Network.
    - - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

    Peer Exchange

    The primary objective of this protocol is to facilitate peer connectivity for resource-limited devices without relying on Discv5. The peer exchange protocol enables light nodes to request peers from other nodes within the network.

    info

    Peer Exchange enables requesting random peers from other network nodes without revealing information about their connectivity or neighbourhood.

    Pros

    • Low resource requirements.
    • Decentralised with random sampling of nodes from a global view using Discv5.

    Cons

    • Decreased anonymity.
    • Imposes additional load on responder nodes.

    Overview

    1. DNS Discovery protocol is executed.
    2. Alice retrieves Bob's websocket multiaddr from DNS Server.
    3. Alice dials Bob using libp2p protocols.
    4. Alice executes a Peer Exchange query to Bob.
    5. Bob returns Carol's and David's ENR to Alice.
    6. Alice decodes ENRs and extracts Carol's and David's websocket multiaddrs.
    7. Alice dials Carol and David.
    8. Alice can now drop the connection with Bob (bootstrap node); Alice has 2 connections to the Waku Network.
    + + \ No newline at end of file diff --git a/learn/concepts/protocols/index.html b/learn/concepts/protocols/index.html index 9450a02..315118c 100644 --- a/learn/concepts/protocols/index.html +++ b/learn/concepts/protocols/index.html @@ -4,9 +4,9 @@ Protocols | Waku Documentation - - - + + +
    @@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

    Protocols

    Waku takes a modular approach, providing a range of protocols that enable applications to control the trade-offs involved in the Anonymity Trilemma. This flexibility empowers applications to make informed choices regarding the desired balance between anonymity, scalability, and latency. Here are the main protocols provided by Waku:

    Relay

    Relay protocol employs a Pub/Sub architecture to facilitate the sending and receiving of messages among peers. It extends the libp2p GossipSub protocol to create a privacy-focused peer-to-peer messaging protocol that enables secure communication channels, encryption, and protection against censorship. It also scales the Waku Network to accommodate many nodes efficiently.

    RLN relay

    RLN Relay protocol extends the Relay protocol by using Rate Limit Nullifiers (RLN) to provide efficient and economic spam-prevention. It enforces a rate limit on messages over time for all peers in the network, economically preventing spam, and imposes financial penalties and network removal for spammers. You can find more details in the RLN Relay blog post.

    Filter

    Filter protocol allows light nodes to selectively subscribe to specific messages relayed by other peers using content topics. It is designed to be a lightweight alternative for accessing the Relay network, particularly tailored for devices with limited bandwidth.

    info

    Filter protocol helps optimise bandwidth usage, but it has fewer privacy guarantees as it must disclose the content topic to its peers to retrieve messages.

    Store

    Store protocol is responsible for storing messages relayed in the network, making it possible to query and retrieve them later. This functionality benefits offline peers by enabling them to retrieve missed messages upon reconnection.

    info

    Using Relay and Filter protocols is recommended when a node is online, as Store does not guarantee data availability. The Store protocol is suitable for retrieving messages when connecting to the network, like when a DApp starts.

    Light push

    Light Push is a Request/Response protocol for nodes with limited bandwidth and short connection windows. It allows a client to receive an acknowledgement when sending messages, indicating that at least one peer has received them. Subsequently, the remote peer forwards these messages to the Relay network.

    info

    While the Light Push protocol acknowledges the receipt by the remote peer, it does not guarantee network-wide propagation.

    Waku message

    Waku Message specifies the structure and format of messages in the Waku Network. It includes the following attributes:

    • content_topic attribute for content-based filtering.
    • payload attribute containing the message data payload to be sent.
    • meta attribute for conveying additional details to various protocols for application-specific processing.
    • timestamp attribute signifying the time at which the message was generated by its sender.
    • ephemeral attribute specifying whether the network should not store the message.
    - - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

    Protocols

    Waku takes a modular approach, providing a range of protocols that enable applications to control the trade-offs involved in the Anonymity Trilemma. This flexibility empowers applications to make informed choices regarding the desired balance between anonymity, scalability, and latency. Here are the main protocols provided by Waku:

    Relay

    Relay protocol employs a Pub/Sub architecture to facilitate the sending and receiving of messages among peers. It extends the libp2p GossipSub protocol to create a privacy-focused peer-to-peer messaging protocol that enables secure communication channels, encryption, and protection against censorship. It also scales the Waku Network to accommodate many nodes efficiently.

    RLN relay

    RLN Relay protocol extends the Relay protocol by using Rate Limit Nullifiers (RLN) to provide efficient and economic spam-prevention. It enforces a rate limit on messages over time for all peers in the network, economically preventing spam, and imposes financial penalties and network removal for spammers. You can find more details in the RLN Relay blog post.

    Filter

    Filter protocol allows light nodes to selectively subscribe to specific messages relayed by other peers using content topics. It is designed to be a lightweight alternative for accessing the Relay network, particularly tailored for devices with limited bandwidth.

    info

    Filter protocol helps optimise bandwidth usage, but it has fewer privacy guarantees as it must disclose the content topic to its peers to retrieve messages.

    Store

    Store protocol is responsible for storing messages relayed in the network, making it possible to query and retrieve them later. This functionality benefits offline peers by enabling them to retrieve missed messages upon reconnection.

    info

    Using Relay and Filter protocols is recommended when a node is online, as Store does not guarantee data availability. The Store protocol is suitable for retrieving messages when connecting to the network, like when a DApp starts.

    Light push

    Light Push is a Request/Response protocol for nodes with limited bandwidth and short connection windows. It allows a client to receive an acknowledgement when sending messages, indicating that at least one peer has received them. Subsequently, the remote peer forwards these messages to the Relay network.

    info

    While the Light Push protocol acknowledges the receipt by the remote peer, it does not guarantee network-wide propagation.

    Waku message

    Waku Message specifies the structure and format of messages in the Waku Network. It includes the following attributes:

    • content_topic attribute for content-based filtering.
    • payload attribute containing the message data payload to be sent.
    • meta attribute for conveying additional details to various protocols for application-specific processing.
    • timestamp attribute signifying the time at which the message was generated by its sender.
    • ephemeral attribute specifying whether the network should not store the message.
    + + \ No newline at end of file diff --git a/learn/concepts/static-peers/index.html b/learn/concepts/static-peers/index.html index aa30a02..0ec5697 100644 --- a/learn/concepts/static-peers/index.html +++ b/learn/concepts/static-peers/index.html @@ -4,9 +4,9 @@ Static Peers | Waku Documentation - - - + + +
    @@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

    Static Peers

    Waku applications have the flexibility to embed bootstrap node addresses directly into their codebase. Developers can either use static peers operated by Status or run a node.

    Pros

    • Low latency.
    • Low resource requirements.

    Cons

    • Vulnerable to censorship: Node IPs can be blocked or restricted.
    • Limited scalability: The number of nodes is fixed and cannot easily be expanded.
    • Maintenance challenges: Updating the node list requires modifying the code, which can be cumbersome and involves releasing and deploying.

    Overview

    Alice establishes connections with Bob and Carol using their node details, which are predefined (hard-coded) into Alice's node.

    - - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

    Static Peers

    Waku applications have the flexibility to embed bootstrap node addresses directly into their codebase. Developers can either use static peers operated by Status or run a node.

    Pros

    • Low latency.
    • Low resource requirements.

    Cons

    • Vulnerable to censorship: Node IPs can be blocked or restricted.
    • Limited scalability: The number of nodes is fixed and cannot easily be expanded.
    • Maintenance challenges: Updating the node list requires modifying the code, which can be cumbersome and involves releasing and deploying.

    Overview

    Alice establishes connections with Bob and Carol using their node details, which are predefined (hard-coded) into Alice's node.

    + + \ No newline at end of file diff --git a/learn/concepts/transports/index.html b/learn/concepts/transports/index.html index 0524d45..87c7670 100644 --- a/learn/concepts/transports/index.html +++ b/learn/concepts/transports/index.html @@ -4,9 +4,9 @@ Transports | Waku Documentation - - - + + +
    @@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

    Transports

    Transports help move data packets across a network by establishing connections between peers. They define the rules and protocols to ensure efficient network transmission, routing, and data delivery.

    Waku is a transport-agnostic framework that allows developers to choose and support multiple protocols according to their requirements. For Waku nodes, the following transports are recommended:

    • TCP: By default, Waku nodes use TCP for communication. Service nodes should employ TCP for listening to and connecting with other nodes.
    • Secure WebSocket: In browser environments, secure WebSocket is used. Service nodes are encouraged to set up SSL certificates to enable incoming connections from browsers and serve them securely.
    • Other protocols like WebRTC, WebTransport, and QUIC have been researched and studied for potential integration.
    info

    Waku ensures compatibility and improved communication capabilities by following these recommended transports.

    - - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

    Transports

    Transports help move data packets across a network by establishing connections between peers. They define the rules and protocols to ensure efficient network transmission, routing, and data delivery.

    Waku is a transport-agnostic framework that allows developers to choose and support multiple protocols according to their requirements. For Waku nodes, the following transports are recommended:

    • TCP: By default, Waku nodes use TCP for communication. Service nodes should employ TCP for listening to and connecting with other nodes.
    • Secure WebSocket: In browser environments, secure WebSocket is used. Service nodes are encouraged to set up SSL certificates to enable incoming connections from browsers and serve them securely.
    • Other protocols like WebRTC, WebTransport, and QUIC have been researched and studied for potential integration.
    info

    Waku ensures compatibility and improved communication capabilities by following these recommended transports.

    + + \ No newline at end of file diff --git a/learn/faq/index.html b/learn/faq/index.html index 5c09b95..29fe6d9 100644 --- a/learn/faq/index.html +++ b/learn/faq/index.html @@ -4,9 +4,9 @@ Waku FAQ | Waku Documentation - - - + + +
    @@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

    Waku FAQ

    Check out the Getting Started guide to explore our numerous SDKs and learn how to run a Waku node.
    No, sending and receiving messages on Waku involves no gas fee.
    Waku uses libp2p noise encryption for node-to-node connections. However, no default encryption method is applied to the data sent over the network. This design choice enhances Waku's encryption flexibility, encouraging developers to use custom protocols or Waku message payload encryption methods freely.
    Waku's Store protocol is designed to temporarily store messages within the network. However, Waku does not guarantee the message's availability and recommends using Codex for long-term storage.
    No, Waku is flexible and imposes no specific rules on identifiers.
    Waku focuses on short, ephemeral, real-time time messages, while IPFS focuses on large, long-term data storage. Although there's an overlap between the two technologies, Waku does not currently support large data for privacy reasons.
    Rate Limiting Nullifier is a zero-knowledge (ZK) protocol enabling spam protection in a decentralized network while preserving privacy. Each message must be accompanied by a ZK proof, which Relay nodes verify to ensure the publishers do not send more messages than they are allowed. The ZK proof does not leak any private information about message publishers - it only proves they are members of a set of users allowed to publish a certain number of messages per given time frame.
    - - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

    Waku FAQ

    Check out the Getting Started guide to explore our numerous SDKs and learn how to run a Waku node.
    No, sending and receiving messages on Waku involves no gas fee.
    Waku uses libp2p noise encryption for node-to-node connections. However, no default encryption method is applied to the data sent over the network. This design choice enhances Waku's encryption flexibility, encouraging developers to use custom protocols or Waku message payload encryption methods freely.
    Waku's Store protocol is designed to temporarily store messages within the network. However, Waku does not guarantee the message's availability and recommends using Codex for long-term storage.
    No, Waku is flexible and imposes no specific rules on identifiers.
    Waku focuses on short, ephemeral, real-time time messages, while IPFS focuses on large, long-term data storage. Although there's an overlap between the two technologies, Waku does not currently support large data for privacy reasons.
    Rate Limiting Nullifier is a zero-knowledge (ZK) protocol enabling spam protection in a decentralized network while preserving privacy. Each message must be accompanied by a ZK proof, which Relay nodes verify to ensure the publishers do not send more messages than they are allowed. The ZK proof does not leak any private information about message publishers - it only proves they are members of a set of users allowed to publish a certain number of messages per given time frame.
    + + \ No newline at end of file diff --git a/learn/glossary/index.html b/learn/glossary/index.html index 9c07e93..982f807 100644 --- a/learn/glossary/index.html +++ b/learn/glossary/index.html @@ -4,9 +4,9 @@ Glossary | Waku Documentation - - - + + +
    @@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

    Waku Docs Glossary

    Definitions and usage of the terminology used in the Waku ecosystem.

    Bootstrapping

    Bootstrapping is the initial entry point of a node to the Waku Network. Once connected, other peer discovery methods can be employed to locate other peers in the network.

    Content topic

    A content topic is a string attached to messages to enable protocol-level features like selective message processing and retrieval based on specific criteria.

    Dappnode

    Dappnode is an open-source platform that simplifies the hosting and management of decentralised applications and blockchain nodes, including Waku.

    Discv5

    Discv5 is a peer discovery mechanism using a Distributed Hash Table (DHT) to store ENR records, providing censorship resistance, load distribution, and enhanced network resilience.

    DNS discovery

    DNS discovery is a peer discovery mechanism that allows the retrieval of an ENR tree from the TXT field of a domain name, enabling the storage of node connection details and promoting decentralisation.

    ENR

    Ethereum Node Record (ENR) is a specification used to represent and identify nodes, facilitating discovery and communication within the network. Besides connection details, ENR also includes node configuration information like enabled protocol and shards.

    Filter

    Filter is a protocol that enables light nodes to selectively subscribe to specific messages transmitted by peers using content topics. It is designed to be a lightweight alternative for accessing the Relay network.

    GossipSub

    GossipSub is a protocol for efficient and scalable information dissemination in decentralised networks commonly used in blockchain systems.

    Libp2p

    Libp2p is a modular network stack and protocol suite that allows developers to build decentralised, peer-to-peer applications across various network protocols.

    Light node

    A light node is a resource-limited device or client that leverages service nodes to access the Relay network.

    Light push

    Light push is a protocol enabling light nodes to send messages to the Relay network and receive acknowledgements confirming that a peer has received them.

    Mostly offline

    Mostly offline devices are clients who spend most of their time offline or disconnected from the internet and only occasionally to the internet and Waku Network. Examples include browsers and mobile phones.

    Node

    A node is a device or client that implements Waku protocols and leverages the Waku Network to enable secure and private peer-to-peer web3 communication.

    Node key

    A node key is a Secp256k1 (64-char hex string) private key for generating the PeerID, listening addresses, and discovery addresses of a Waku node.

    Out-of-band

    Out-of-band refers to exchanging information through a separate, secure channel distinct from the main communication method to enhance security.

    Payload

    The payload field in a Waku Message contains the application data, serving as the business logic message transmitted between clients over Waku. Applications can encrypt the payload or employ encryption methods specified in Waku Message Payload Encryption.

    Peer

    A peer refers to other nodes and participants of the Waku Network with whom communication and interaction are possible.

    Peer discovery

    Peer discovery is when a node locates and gets information about other peers in the Waku Network.

    Peer exchange

    Peer exchange is a peer discovery mechanism that enables light nodes to request and receive peers from other nodes in the network, allowing them to bootstrap and expand their connections without depending on Discv5.

    Peer ID

    PeerID is the unique identifier of a node in the Waku Network generated from the cryptographic hash of the node's public key.

    Protocol

    A protocol is a set of rules that enables nodes within the Waku Network to perform various functionalities such as message sending, relaying, filtering, storing, retrieving, and more.

    Pub/Sub

    Publish/Subscribe (Pub/Sub) is an asynchronous messaging pattern where publishers send messages to topics, and subscribers receive messages from topics of interest, allowing efficient one-to-many communication.

    Pub/Sub topic

    A Pub/Sub topic is a string that serves as an identifier for the topic of interest among GossipSub peers. Peers interested in the same topic are likely to maintain a connection and forward messages received on that topic.

    Rate limit nullifiers

    Rate Limit Nullifiers (RLN) are a construct based on zero-knowledge proofs that enables rate limiting functionality while preserving the users's anonymity.

    Relay

    Relay is a protocol that extends the GossipSub protocol to enable secure and censorship resistant message sending and receiving among peers while preserving privacy. It also scales the Waku Network to accommodate many nodes efficiently.

    Resource-limited

    Resource-limited refers to environments or devices restricting available resources, including bandwidth, CPU, memory, disk, and battery power.

    RLN relay

    RLN Relay is an extension of the Relay protocol that uses Rate Limit Nullifiers (RLN) to prevent spam economically by enforcing a rate limit on messages over time, imposing penalties, and facilitating network removal for spammers.

    SDK

    SDKs are tools, libraries, and resources to integrate Waku's private, secure, and censorship-free communication features into various applications.

    Store

    Store is a protocol that enables the storage of relayed messages in the network, allowing offline peers to retrieve missed messages upon reconnecting to the network.

    Transport

    A transport is a network mechanism that establishes connections between peers and enables efficient transmission, routing, and delivery of data packets.

    Waku

    Waku is a family of private, secure, decentralised, and peer-to-peer web3 communication protocols designed to operate in resource-limited environments and suitable for node or desktop application use. Additionally, these protocols collectively form the Waku Network.

    Waku message

    Waku Message defines the structure of messages in the Waku Network, including the content topic, payload, and metadata for application-specific processing.

    Waku message payload encryption

    Waku Message Payload Encryption provides guidelines for implementing secure and private communication in the Waku Network. It covers encryption, decryption, and signing methods for message payloads, focusing on confidentiality, authenticity, integrity, and unlinkability.

    Waku network

    The Waku Network is an open-access, scalable peer-to-peer messaging network emphasizing privacy protection and accessibility to resource limited devices.

    Waku noise

    Waku Noise is a specified way to use the Noise Protocol Framework to build protocols that enable secure key-exchange mechanisms for encrypted communication with confidentiality, authenticity, integrity, strong forward secrecy, and identity-hiding properties.

    - - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

    Waku Docs Glossary

    Definitions and usage of the terminology used in the Waku ecosystem.

    Bootstrapping

    Bootstrapping is the initial entry point of a node to the Waku Network. Once connected, other peer discovery methods can be employed to locate other peers in the network.

    Content topic

    A content topic is a string attached to messages to enable protocol-level features like selective message processing and retrieval based on specific criteria.

    Dappnode

    Dappnode is an open-source platform that simplifies the hosting and management of decentralised applications and blockchain nodes, including Waku.

    Discv5

    Discv5 is a peer discovery mechanism using a Distributed Hash Table (DHT) to store ENR records, providing censorship resistance, load distribution, and enhanced network resilience.

    DNS discovery

    DNS discovery is a peer discovery mechanism that allows the retrieval of an ENR tree from the TXT field of a domain name, enabling the storage of node connection details and promoting decentralisation.

    ENR

    Ethereum Node Record (ENR) is a specification used to represent and identify nodes, facilitating discovery and communication within the network. Besides connection details, ENR also includes node configuration information like enabled protocol and shards.

    Filter

    Filter is a protocol that enables light nodes to selectively subscribe to specific messages transmitted by peers using content topics. It is designed to be a lightweight alternative for accessing the Relay network.

    GossipSub

    GossipSub is a protocol for efficient and scalable information dissemination in decentralised networks commonly used in blockchain systems.

    Libp2p

    Libp2p is a modular network stack and protocol suite that allows developers to build decentralised, peer-to-peer applications across various network protocols.

    Light node

    A light node is a resource-limited device or client that leverages service nodes to access the Relay network.

    Light push

    Light push is a protocol enabling light nodes to send messages to the Relay network and receive acknowledgements confirming that a peer has received them.

    Mostly offline

    Mostly offline devices are clients who spend most of their time offline or disconnected from the internet and only occasionally to the internet and Waku Network. Examples include browsers and mobile phones.

    Node

    A node is a device or client that implements Waku protocols and leverages the Waku Network to enable secure and private peer-to-peer web3 communication.

    Node key

    A node key is a Secp256k1 (64-char hex string) private key for generating the PeerID, listening addresses, and discovery addresses of a Waku node.

    Out-of-band

    Out-of-band refers to exchanging information through a separate, secure channel distinct from the main communication method to enhance security.

    Payload

    The payload field in a Waku Message contains the application data, serving as the business logic message transmitted between clients over Waku. Applications can encrypt the payload or employ encryption methods specified in Waku Message Payload Encryption.

    Peer

    A peer refers to other nodes and participants of the Waku Network with whom communication and interaction are possible.

    Peer discovery

    Peer discovery is when a node locates and gets information about other peers in the Waku Network.

    Peer exchange

    Peer exchange is a peer discovery mechanism that enables light nodes to request and receive peers from other nodes in the network, allowing them to bootstrap and expand their connections without depending on Discv5.

    Peer ID

    PeerID is the unique identifier of a node in the Waku Network generated from the cryptographic hash of the node's public key.

    Protocol

    A protocol is a set of rules that enables nodes within the Waku Network to perform various functionalities such as message sending, relaying, filtering, storing, retrieving, and more.

    Pub/Sub

    Publish/Subscribe (Pub/Sub) is an asynchronous messaging pattern where publishers send messages to topics, and subscribers receive messages from topics of interest, allowing efficient one-to-many communication.

    Pub/Sub topic

    A Pub/Sub topic is a string that serves as an identifier for the topic of interest among GossipSub peers. Peers interested in the same topic are likely to maintain a connection and forward messages received on that topic.

    Rate limit nullifiers

    Rate Limit Nullifiers (RLN) are a construct based on zero-knowledge proofs that enables rate limiting functionality while preserving the users's anonymity.

    Relay

    Relay is a protocol that extends the GossipSub protocol to enable secure and censorship resistant message sending and receiving among peers while preserving privacy. It also scales the Waku Network to accommodate many nodes efficiently.

    Resource-limited

    Resource-limited refers to environments or devices restricting available resources, including bandwidth, CPU, memory, disk, and battery power.

    RLN relay

    RLN Relay is an extension of the Relay protocol that uses Rate Limit Nullifiers (RLN) to prevent spam economically by enforcing a rate limit on messages over time, imposing penalties, and facilitating network removal for spammers.

    SDK

    SDKs are tools, libraries, and resources to integrate Waku's private, secure, and censorship-free communication features into various applications.

    Store

    Store is a protocol that enables the storage of relayed messages in the network, allowing offline peers to retrieve missed messages upon reconnecting to the network.

    Transport

    A transport is a network mechanism that establishes connections between peers and enables efficient transmission, routing, and delivery of data packets.

    Waku

    Waku is a family of private, secure, decentralised, and peer-to-peer web3 communication protocols designed to operate in resource-limited environments and suitable for node or desktop application use. Additionally, these protocols collectively form the Waku Network.

    Waku message

    Waku Message defines the structure of messages in the Waku Network, including the content topic, payload, and metadata for application-specific processing.

    Waku message payload encryption

    Waku Message Payload Encryption provides guidelines for implementing secure and private communication in the Waku Network. It covers encryption, decryption, and signing methods for message payloads, focusing on confidentiality, authenticity, integrity, and unlinkability.

    Waku network

    The Waku Network is an open-access, scalable peer-to-peer messaging network emphasizing privacy protection and accessibility to resource limited devices.

    Waku noise

    Waku Noise is a specified way to use the Noise Protocol Framework to build protocols that enable secure key-exchange mechanisms for encrypted communication with confidentiality, authenticity, integrity, strong forward secrecy, and identity-hiding properties.

    + + \ No newline at end of file diff --git a/learn/research/index.html b/learn/research/index.html index 16372c6..83cb21f 100644 --- a/learn/research/index.html +++ b/learn/research/index.html @@ -4,9 +4,9 @@ Research | Waku Documentation - - - + + +
    @@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

    Research

    The following features are currently experimental and under research and initial implementation:

    Economic spam resistance

    We aim to enable an incentivised spam protection technique to enhance Relay by using Rate Limit Nullifiers (RLN). In this advanced method, peers are limited to a certain messaging rate per epoch, and an immediate financial penalty is enforced for spammers who break this rate. You can find more details in the RLN Relay blog post.

    We have prepared a PoC implementation of this method in JS: https://examples.waku.org/rln-js/

    Prevention of denial of service (DoS) and node incentivisation

    Denial of service signifies the case where an adversarial peer exhausts another node's service capacity (e.g., by making a large number of requests) and makes it unavailable to the rest of the system. RnD on DoS attack mitigation can tracked from here: https://github.com/vacp2p/research/issues/148.

    In a nutshell, peers have to pay for the service they obtain from each other. In addition to incentivising the service provider, accounting also makes DoS attacks costly for malicious peers. The accounting model can be used in Store and Filter to protect against DoS attacks.

    Additionally, along with RLN, this gives node operators who provide a useful service to the network an incentive to perform that service. Read more here: https://vac.dev/building-privacy-protecting-infrastructure

    You can also read more about the ongoing challenges the Waku team is working on here: https://github.com/waku-org/research

    - - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

    Research

    The following features are currently experimental and under research and initial implementation:

    Economic spam resistance

    We aim to enable an incentivised spam protection technique to enhance Relay by using Rate Limit Nullifiers (RLN). In this advanced method, peers are limited to a certain messaging rate per epoch, and an immediate financial penalty is enforced for spammers who break this rate. You can find more details in the RLN Relay blog post.

    We have prepared a PoC implementation of this method in JS: https://examples.waku.org/rln-js/

    Prevention of denial of service (DoS) and node incentivisation

    Denial of service signifies the case where an adversarial peer exhausts another node's service capacity (e.g., by making a large number of requests) and makes it unavailable to the rest of the system. RnD on DoS attack mitigation can tracked from here: https://github.com/vacp2p/research/issues/148.

    In a nutshell, peers have to pay for the service they obtain from each other. In addition to incentivising the service provider, accounting also makes DoS attacks costly for malicious peers. The accounting model can be used in Store and Filter to protect against DoS attacks.

    Additionally, along with RLN, this gives node operators who provide a useful service to the network an incentive to perform that service. Read more here: https://vac.dev/building-privacy-protecting-infrastructure

    You can also read more about the ongoing challenges the Waku team is working on here: https://github.com/waku-org/research

    + + \ No newline at end of file diff --git a/learn/security-features/index.html b/learn/security-features/index.html index 5191674..ee5987e 100644 --- a/learn/security-features/index.html +++ b/learn/security-features/index.html @@ -4,9 +4,9 @@ Security Features | Waku Documentation - - - + + +
    @@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

    Security Features

    Waku's protocol layers offer different services and security considerations, shaping the overall security of Waku. We document the security models in the RFCs of the protocols, aiming to provide transparent and open-source references. This empowers Waku users to understand each protocol's security guarantees and limitations.

    Some of the Waku's security features include the following:

    Pseudonymity

    Waku ensures pseudonymity across its protocol layers, using libp2p PeerID as identifiers instead of disclosing true identities. However, it is important to note that pseudonymity does not provide complete anonymity. Actions performed under the same pseudonym (PeerID) can be linked, leading to the potential re-identification of the actual actor.

    Anonymity/unlinkability

    Anonymity means an adversary cannot connect an actor to their actions or data. To achieve anonymity, avoiding linking activities with actors or their Personally Identifiable Information (PII) is crucial. In Waku, the following anonymity features are provided:

    Spam protection

    The spam protection feature in Relay ensures that no adversary can flood the system with many messages, intentionally or not, regardless of the content's validity or usefulness. This protection is achieved through the scoring mechanism of GossipSub v1.1. Peers assign scores to their connections based on their behaviour and remove peers with low scores.

    Ongoing research is being conducted, including developing Rate Limit Nullifiers (RLN), which can be explored further at: https://github.com/vacp2p/research/issues/148.

    Data confidentiality, integrity, and authenticity

    Confidentiality in Waku is ensured through data encryption, while integrity and authenticity are achieved through digital signatures. These security measures are available in Waku Message (version 1) and Noise protocols, which offer payload encryption and encrypted signatures. Noise protocols also facilitate secure channel negotiation within the Waku Network.

    Security considerations

    In protocols like Store and Filter, where direct connections are required for the designated service, anonymity or unlinkability is not guaranteed. This is because nodes use their PeerID to identify each other during direct connections, making the service obtained in these protocols linkable to the beneficiary's PeerID, considered Personally Identifiable Information (PII). In Store, the queried node can link the querying node's PeerID to the topics being queried. Similarly, in Filter, a node can link the PeerID of a light node to its content filter.

    - - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

    Security Features

    Waku's protocol layers offer different services and security considerations, shaping the overall security of Waku. We document the security models in the RFCs of the protocols, aiming to provide transparent and open-source references. This empowers Waku users to understand each protocol's security guarantees and limitations.

    Some of the Waku's security features include the following:

    Pseudonymity

    Waku ensures pseudonymity across its protocol layers, using libp2p PeerID as identifiers instead of disclosing true identities. However, it is important to note that pseudonymity does not provide complete anonymity. Actions performed under the same pseudonym (PeerID) can be linked, leading to the potential re-identification of the actual actor.

    Anonymity/unlinkability

    Anonymity means an adversary cannot connect an actor to their actions or data. To achieve anonymity, avoiding linking activities with actors or their Personally Identifiable Information (PII) is crucial. In Waku, the following anonymity features are provided:

    Spam protection

    The spam protection feature in Relay ensures that no adversary can flood the system with many messages, intentionally or not, regardless of the content's validity or usefulness. This protection is achieved through the scoring mechanism of GossipSub v1.1. Peers assign scores to their connections based on their behaviour and remove peers with low scores.

    Ongoing research is being conducted, including developing Rate Limit Nullifiers (RLN), which can be explored further at: https://github.com/vacp2p/research/issues/148.

    Data confidentiality, integrity, and authenticity

    Confidentiality in Waku is ensured through data encryption, while integrity and authenticity are achieved through digital signatures. These security measures are available in Waku Message (version 1) and Noise protocols, which offer payload encryption and encrypted signatures. Noise protocols also facilitate secure channel negotiation within the Waku Network.

    Security considerations

    In protocols like Store and Filter, where direct connections are required for the designated service, anonymity or unlinkability is not guaranteed. This is because nodes use their PeerID to identify each other during direct connections, making the service obtained in these protocols linkable to the beneficiary's PeerID, considered Personally Identifiable Information (PII). In Store, the queried node can link the querying node's PeerID to the topics being queried. Similarly, in Filter, a node can link the PeerID of a light node to its content filter.

    + + \ No newline at end of file diff --git a/learn/waku-network/index.html b/learn/waku-network/index.html index 4e2a71e..ef1c8df 100644 --- a/learn/waku-network/index.html +++ b/learn/waku-network/index.html @@ -4,9 +4,9 @@ The Waku Network | Waku Documentation - - - + + +
    @@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

    The Waku Network

    The Waku Network is a shared p2p messaging network that is open-access, useful for generalized messaging, privacy-preserving, scalable and accessible even to resource-restricted devices. Some of the most prominent features include:

    1. DoS/spam protection with privacy-preserving Rate-Limiting Nullifiers.
    2. Scalability by sharding traffic into 8 pubsub topics.
    3. Automatic shard selection based on content topic.
    4. Services for resource-restricted nodes, including historical message storage and retrieval, filtering, etc.

    If you want to learn more about the Waku Network, the WAKU2-NETWORK RFC provides an in-depth look under the hood.

    info

    The public Waku Network replaces the previous experimental shared routing layer based on a default pubsub topic (/waku/2/default-waku/proto). If your project currently uses this or any other shared pubsub topics, we encourage you to migrate to the public Waku Network with built-in DoS protection, scalability, and reasonable bandwidth usage.

    Why join the Waku network?

    1. Applications or projects can build decentralized communication components on this network, gaining from the fault-tolerance of shared infrastructure, the out-of-the-box censorship resistance of a p2p network and the privacy-preservation of Waku protocols.
    2. Supporters of public goods and decentralized infrastructure can run their nodes to support the network.
    3. We are also working on incentivisation vectors to encourage more node operators to provide services to the network.

    Prerequisites

    1. Ethereum Sepolia WebSocket endpoint, which can be yours or from a third party. Have a look at the Access a Sepolia Node Using Infura guide for a free Infura option. This node is used to interact with the on-chain RLN membership contract.
    2. Wallet with Sepolia Ethereum (less than 0.1 Sepolia ETH). Have a look at the Create a Sepolia Ethereum Wallet and Obtain Sepolia Ethereum from Faucet guides to get a Sepolia wallet and fund it with some Sepolia Ethereum. This wallet is required to register RLN membership, which is essential for publishing on the network.

    Running a Waku network node

    Have a look at the Run Nwaku with Docker Compose guide for instructions on running a nwaku node in the Waku Network. Use the Sepolia node and wallet you obtained above.

    - - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

    The Waku Network

    The Waku Network is a shared p2p messaging network that is open-access, useful for generalized messaging, privacy-preserving, scalable and accessible even to resource-restricted devices. Some of the most prominent features include:

    1. DoS/spam protection with privacy-preserving Rate-Limiting Nullifiers.
    2. Scalability by sharding traffic into 8 pubsub topics.
    3. Automatic shard selection based on content topic.
    4. Services for resource-restricted nodes, including historical message storage and retrieval, filtering, etc.
    tip

    If you want to learn more about the Waku Network, the The Waku Network: Technical Overview article provides an in-depth look under the hood.

    Why join the Waku network?

    1. Applications or projects can build decentralized communication components on this network, gaining from the fault-tolerance of shared infrastructure, the out-of-the-box censorship resistance of a p2p network and the privacy-preservation of Waku protocols.
    2. Supporters of public goods and decentralized infrastructure can run their nodes to support the network.
    3. We are also working on incentivisation vectors to encourage more node operators to provide services to the network.

    Prerequisites

    1. Ethereum Sepolia WebSocket endpoint, which can be yours or from a third party. Have a look at the Access a Sepolia Node Using Infura guide for a free Infura option. This node is used to interact with the on-chain RLN membership contract.
    2. Wallet with Sepolia Ethereum (less than 0.1 Sepolia ETH). Have a look at the Create a Sepolia Ethereum Wallet and Obtain Sepolia Ethereum from Faucet guides to get a Sepolia wallet and fund it with some Sepolia Ethereum. This wallet is required to register RLN membership, which is essential for publishing on the network.

    Running a Waku network node

    Have a look at the Run Nwaku with Docker Compose guide for instructions on running a nwaku node in the Waku Network. Use the Sepolia node and wallet you obtained above.

    info

    The public Waku Network replaces the previous experimental shared routing layer based on a default pubsub topic (/waku/2/default-waku/proto). If your project currently uses this or any other shared pubsub topics, we encourage you to migrate to the public Waku Network with built-in DoS protection, scalability, and reasonable bandwidth usage.

    + + \ No newline at end of file diff --git a/learn/waku-vs-libp2p/index.html b/learn/waku-vs-libp2p/index.html index 8ebb2ce..6d59c7b 100644 --- a/learn/waku-vs-libp2p/index.html +++ b/learn/waku-vs-libp2p/index.html @@ -4,9 +4,9 @@ Comparing Waku and libp2p | Waku Documentation - - - + + +
    @@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

    Comparing Waku and libp2p

    Since Waku is built on top of libp2p, they share a lot of concepts and terminologies between them. However, there are key differences between them that are worth noting.

    Waku as a service network

    Waku intends to incentivise mechanisms to run nodes, but it is not part of libp2p's scope. Additionally, users or developers do not have to deploy their infrastructure as a prerequisite to use Waku. It is a service network. However, you are encouraged to run a node to support and decentralise the network.

    Waku as a turnkey solution

    Waku includes various protocols covering the following domains: privacy preservation, censorship resistance, and platform agnosticism, allowing it to run on any platform or environment.

    Waku provides out-of-the-box protocols to enable mostly offline/resource-limited devices, Store/Light Push/Filter caters to those use cases.

    Economic spam protection

    libp2p does not have strong spam protection guarantees, RLN Relay is a protocol being developed by the Waku team towards this goal.

    - - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

    Comparing Waku and libp2p

    Since Waku is built on top of libp2p, they share a lot of concepts and terminologies between them. However, there are key differences between them that are worth noting.

    Waku as a service network

    Waku intends to incentivise mechanisms to run nodes, but it is not part of libp2p's scope. Additionally, users or developers do not have to deploy their infrastructure as a prerequisite to use Waku. It is a service network. However, you are encouraged to run a node to support and decentralise the network.

    Waku as a turnkey solution

    Waku includes various protocols covering the following domains: privacy preservation, censorship resistance, and platform agnosticism, allowing it to run on any platform or environment.

    Waku provides out-of-the-box protocols to enable mostly offline/resource-limited devices, Store/Light Push/Filter caters to those use cases.

    Economic spam protection

    libp2p does not have strong spam protection guarantees, RLN Relay is a protocol being developed by the Waku team towards this goal.

    + + \ No newline at end of file diff --git a/privacy-policy/index.html b/privacy-policy/index.html index 92241ac..e6b56d0 100644 --- a/privacy-policy/index.html +++ b/privacy-policy/index.html @@ -4,9 +4,9 @@ Privacy Policy | Waku Documentation - - - + + +
    @@ -14,8 +14,8 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error - ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

    Privacy Policy

    Last updated: 9 February 2024

    This Privacy Policy is intended to inform users of our approach to privacy in respect of this website ("Website"). In this regard, if you are visiting our Website, this Privacy Policy applies to you.

    1) Who we are

    For the purposes of this Privacy Policy and the collection and processing of personal data as a controller, the relevant entity is the Logos Collective Association, which has its registered office in Zug and its legal domicile address at

    Logos Collective Association
    c/o PST Consulting GmbH
    Baarerstrasse 10
    6300 Zug
    Switzerland

    Whenever we refer to “Logos”, “we” or other similar references, we are referring to the Logos Collective Association.

    2) We limit the collection and processing of personal data from your use of the Website

    We aim to limit the collection and collection and processing of personal data from users of the Website. We only collect and process certain personal data for specific purposes and where we have the legal basis to do so under applicable privacy legislation. We will not collect or process any personal data that we don’t need and where we do store any personal data, we will only store it for the least amount of time needed for the indicated purpose.

    In this regard, we collect and process the following personal data from your use of the Website:

    • IP address: As part of such use of the Website we briefly process your IP address but we have no way of identifying you. We however have a legitimate interest in processing such IP addresses to ensure the technical functionality and enhance the security measures of the Website. This IP address is not stored by us over time.

    3) Third party processing of personal data

    In addition to our limited and collection of personal data, third parties may collect or process personal data as a result of the Website making use of certain features or to provide certain content. To the extent you interact with such third party content or features, their respective privacy policies will apply.

    4) Security measures we take in respect of the Website

    As a general approach, we take data security seriously and we have implemented a variety of security measures on the Website to maintain the safety of your personal data when you submit such information to us.

    5) Exporting data outside the European Union and Switzerland

    We are obliged to protect the privacy of personal data that you may have submitted in the unlikely event that we export your personal data to places outside the European Union or Switzerland. This means that personal data will only be processed in countries or by parties that provide an adequate level of protection as deemed by Switzerland or the European Commission. Otherwise, we will use other forms of protections, such as specific forms of contractual clauses to ensure such personal data is provided the same protection as required in Switzerland or Europe. In any event, the transmission of personal data outside the European Union and Switzerland will always occur in conformity with applicable privacy legislation.

    6) Your choices and rights

    As explained in this Privacy Policy, we limit our collection and processing of your personal data wherever possible. Nonetheless, you still have certain choices and rights in respect of the personal data which we do collect and process. As laid out in relevant privacy legislation, you have the right to:

    • Ask us to correct or update your personal data (where reasonably possible);

    • Ask us to remove your personal data from our systems;

    • Ask us for a copy of your personal data, which may also be transferred to another data controller at your request;

    • Withdraw your consent to process your personal data (only if consent was asked for a processing activity), which only affects processing activities that are based on your consent and doesn’t affect the validity of such processing activities before you have withdrawn your consent;

    • Object to the processing of your personal data; and

    • File a complaint with the Federal Data Protection and Information Commissioner (FDPIC), if you believe that your personal data has been processed unlawfully.

    On this Website, you may come across links to third party websites. These third party sites have separate and independent privacy policies. We therefore have no responsibility or liability for the content and activities of these third party websites.

    8) This Privacy Policy might change

    We may modify or replace any part of this Privacy Policy at any time and without notice. Please check the Website periodically for any changes. The new Privacy Policy will be effective immediately upon its posting on our Website.

    9) Contact information

    To the extent that you have any questions about the Privacy Policy, please contact us at legal@free.technology.

    This document is licensed under CC-BY-SA.

    - - + ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

    Privacy Policy

    Last updated: 9 February 2024

    This Privacy Policy is intended to inform users of our approach to privacy in respect of this website ("Website"). In this regard, if you are visiting our Website, this Privacy Policy applies to you.

    1) Who we are

    For the purposes of this Privacy Policy and the collection and processing of personal data as a controller, the relevant entity is the Logos Collective Association, which has its registered office in Zug and its legal domicile address at

    Logos Collective Association
    c/o PST Consulting GmbH
    Baarerstrasse 10
    6300 Zug
    Switzerland

    Whenever we refer to “Logos”, “we” or other similar references, we are referring to the Logos Collective Association.

    2) We limit the collection and processing of personal data from your use of the Website

    We aim to limit the collection and collection and processing of personal data from users of the Website. We only collect and process certain personal data for specific purposes and where we have the legal basis to do so under applicable privacy legislation. We will not collect or process any personal data that we don’t need and where we do store any personal data, we will only store it for the least amount of time needed for the indicated purpose.

    In this regard, we collect and process the following personal data from your use of the Website:

    • IP address: As part of such use of the Website we briefly process your IP address but we have no way of identifying you. We however have a legitimate interest in processing such IP addresses to ensure the technical functionality and enhance the security measures of the Website. This IP address is not stored by us over time.

    3) Third party processing of personal data

    In addition to our limited and collection of personal data, third parties may collect or process personal data as a result of the Website making use of certain features or to provide certain content. To the extent you interact with such third party content or features, their respective privacy policies will apply.

    4) Security measures we take in respect of the Website

    As a general approach, we take data security seriously and we have implemented a variety of security measures on the Website to maintain the safety of your personal data when you submit such information to us.

    5) Exporting data outside the European Union and Switzerland

    We are obliged to protect the privacy of personal data that you may have submitted in the unlikely event that we export your personal data to places outside the European Union or Switzerland. This means that personal data will only be processed in countries or by parties that provide an adequate level of protection as deemed by Switzerland or the European Commission. Otherwise, we will use other forms of protections, such as specific forms of contractual clauses to ensure such personal data is provided the same protection as required in Switzerland or Europe. In any event, the transmission of personal data outside the European Union and Switzerland will always occur in conformity with applicable privacy legislation.

    6) Your choices and rights

    As explained in this Privacy Policy, we limit our collection and processing of your personal data wherever possible. Nonetheless, you still have certain choices and rights in respect of the personal data which we do collect and process. As laid out in relevant privacy legislation, you have the right to:

    • Ask us to correct or update your personal data (where reasonably possible);

    • Ask us to remove your personal data from our systems;

    • Ask us for a copy of your personal data, which may also be transferred to another data controller at your request;

    • Withdraw your consent to process your personal data (only if consent was asked for a processing activity), which only affects processing activities that are based on your consent and doesn’t affect the validity of such processing activities before you have withdrawn your consent;

    • Object to the processing of your personal data; and

    • File a complaint with the Federal Data Protection and Information Commissioner (FDPIC), if you believe that your personal data has been processed unlawfully.

    On this Website, you may come across links to third party websites. These third party sites have separate and independent privacy policies. We therefore have no responsibility or liability for the content and activities of these third party websites.

    8) This Privacy Policy might change

    We may modify or replace any part of this Privacy Policy at any time and without notice. Please check the Website periodically for any changes. The new Privacy Policy will be effective immediately upon its posting on our Website.

    9) Contact information

    To the extent that you have any questions about the Privacy Policy, please contact us at legal@free.technology.

    This document is licensed under CC-BY-SA.

    + + \ No newline at end of file diff --git a/research/benchmarks/postgres-adoption/index.html b/research/benchmarks/postgres-adoption/index.html index f5a4c4e..cf2f341 100644 --- a/research/benchmarks/postgres-adoption/index.html +++ b/research/benchmarks/postgres-adoption/index.html @@ -4,9 +4,9 @@ PostgreSQL | Waku Documentation - - - + + +
    @@ -18,8 +18,8 @@ The following diagram shows the scenery used for such analysis.

    digram_multiple_nodes_one_database

    There are three nim-waku nodes that are connected to the same database and all of them are trying to write messages to the same PostgreSQL instance. With that, it is very common to see errors like:

    ERR 2023-11-27 13:18:07.575+00:00 failed to insert message                   topics="waku archive" tid=2921 file=archive.nim:111 err="error in runStmt: error in dbConnQueryPrepared calling waitQueryToFinish: error in query: ERROR:  duplicate key value violates unique constraint \"messageindex\"\nDETAIL:  Key (storedat, id, pubsubtopic)=(1701091087417938405, 479c95bbf74222417abf76c7f9c480a6790e454374dc4f59bbb15ca183ce1abd, /waku/2/default-waku/proto) already exists.\n

    The db-postgres-hammer is aimed to stress the database from the select point of view. It performs N concurrent select queries with a certain rate.

    Results

    The following results were obtained by using the sandbox machine (metal-01.he-eu-hel1.wakudev.misc) and running nim-waku nodes from https://github.com/waku-org/nwaku/tree/b452ed865466a33b7f5b87fa937a8471b28e466e and using the test-waku-query project from https://github.com/waku-org/test-waku-query/tree/fef29cea182cc744c7940abc6c96d38a68739356

    The following shows the results

    1. Two nwaku-postgres-additional inserting messages plus 50 db-postgres-hammer making 10 selects per second.

    Insert time distribution Postgres

    Query time distribution Postgres

    1. Five nwaku-postgres-additional inserting messages plus 50 db-postgres-hammer making 10 selects per second.
      Insert time distribution Postgres
      Query time distribution Postgres

    In this case, the insert time gets more spread because the insert operations are shared amongst five more nodes. The Store query time remains the same on average.

    1. Five nwaku-postgres-additional inserting messages plus 100 db-postgres-hammer making 10 selects per second. This case is similar to 2. but stressing more the database. -
      Insert time distribution Postgres
      Query time distribution Postgres
    - - +
    Insert time distribution Postgres
    Query time distribution Postgres
  • s+UR|(#sN| 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

    s+UR|(#sN| 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 aW~+TV^eVOdcKXS{c&4HEq~fuC{r.d(t,{Zo:()=>p,kt:()=>g});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function s(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),c=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):s(s({},t),e)),r},p=function(e){var t=c(e.components);return n.createElement(l.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),d=c(r),m=a,g=d["".concat(l,".").concat(m)]||d[m]||u[m]||o;return r?n.createElement(g,s(s({ref:t},p),{},{components:r})):n.createElement(g,s({ref:t},p))}));function g(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,s=new Array(o);s[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[d]="string"==typeof e?e:a,s[1]=i;for(var c=2;c{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var n=r(87462),a=(r(67294),r(3905));const o={title:"Retrieve Messages Using Store Protocol",hide_table_of_contents:!0},s=void 0,i={unversionedId:"guides/js-waku/store-retrieve-messages",id:"guides/js-waku/store-retrieve-messages",title:"Retrieve Messages Using Store Protocol",description:"This guide provides detailed steps to create a Light Node for retrieving and filtering historical messages using the Store protocol.",source:"@site/docs/guides/js-waku/store-retrieve-messages.md",sourceDirName:"guides/js-waku",slug:"/guides/js-waku/store-retrieve-messages",permalink:"/guides/js-waku/store-retrieve-messages",draft:!1,editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/docs/guides/js-waku/store-retrieve-messages.md",tags:[],version:"current",lastUpdatedAt:1700737292,formattedLastUpdatedAt:"23 Nov 2023",frontMatter:{title:"Retrieve Messages Using Store Protocol",hide_table_of_contents:!0},sidebar:"guides",previous:{title:"Send and Receive Messages Using Light Push and Filter",permalink:"/guides/js-waku/light-send-receive"},next:{title:"Encrypt, Decrypt, and Sign Your Messages",permalink:"/guides/js-waku/message-encryption"}},l={},c=[{value:"Create a light node",id:"create-a-light-node",level:2},{value:"Connect to store peers",id:"connect-to-store-peers",level:2},{value:"Choose a content topic",id:"choose-a-content-topic",level:2},{value:"Retrieve messages",id:"retrieve-messages",level:2},{value:"queryWithOrderedCallback",id:"querywithorderedcallback",level:3},{value:"queryGenerator",id:"querygenerator",level:3},{value:"Store query options",id:"store-query-options",level:2},{value:"pageDirection",id:"pagedirection",level:3},{value:"cursor",id:"cursor",level:3},{value:"timeFilter",id:"timefilter",level:3}],p={toc:c},d="wrapper";function u(e){let{components:t,...r}=e;return(0,a.kt)(d,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"This guide provides detailed steps to create a Light Node for retrieving and filtering historical messages using the ",(0,a.kt)("a",{parentName:"p",href:"/learn/concepts/protocols#store"},"Store protocol"),"."),(0,a.kt)("h2",{id:"create-a-light-node"},"Create a light node"),(0,a.kt)("p",null,"Use the ",(0,a.kt)("inlineCode",{parentName:"p"},"createLightNode()")," function to create a Light Node and interact with the Waku Network:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-js"},'import { createLightNode } from "@waku/sdk";\n\n// Create and start a Light Node\nconst node = await createLightNode({ defaultBootstrap: true });\nawait node.start();\n')),(0,a.kt)("h2",{id:"connect-to-store-peers"},"Connect to store peers"),(0,a.kt)("p",null,"Use the ",(0,a.kt)("inlineCode",{parentName:"p"},"waitForRemotePeer()")," function to wait for the node to connect with Store peers:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-js"},'import { waitForRemotePeer, Protocols } from "@waku/sdk";\n\n// Wait for a successful peer connection\nawait waitForRemotePeer(node, [Protocols.Store]);\n')),(0,a.kt)("h2",{id:"choose-a-content-topic"},"Choose a content topic"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"/learn/concepts/content-topics"},"Choose a content topic")," for filtering the messages to retrieve and create a message ",(0,a.kt)("inlineCode",{parentName:"p"},"decoder"),":"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-js"},'import { createDecoder } from "@waku/sdk";\n\n// Choose a content topic\nconst contentTopic = "/store-guide/1/message/proto";\n\n// Create a message decoder\nconst decoder = createDecoder(contentTopic);\n')),(0,a.kt)("h2",{id:"retrieve-messages"},"Retrieve messages"),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"@waku/sdk")," provides the ",(0,a.kt)("inlineCode",{parentName:"p"},"queryWithOrderedCallback()")," and ",(0,a.kt)("inlineCode",{parentName:"p"},"queryGenerator()")," functions for querying ",(0,a.kt)("inlineCode",{parentName:"p"},"Store")," nodes and retrieving historical or missed messages. The responses from ",(0,a.kt)("inlineCode",{parentName:"p"},"Store")," nodes are paginated and require you to process each page sequentially."),(0,a.kt)("h3",{id:"querywithorderedcallback"},(0,a.kt)("inlineCode",{parentName:"h3"},"queryWithOrderedCallback")),(0,a.kt)("p",null,"The ",(0,a.kt)("inlineCode",{parentName:"p"},"store.queryWithOrderedCallback()")," function provides a straightforward method for querying ",(0,a.kt)("inlineCode",{parentName:"p"},"Store")," nodes and processing messages in chronological order through a callback function. It accepts these parameters:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"decoders"),": List of ",(0,a.kt)("inlineCode",{parentName:"li"},"decoders")," that specify the ",(0,a.kt)("inlineCode",{parentName:"li"},"content topic")," to query for and their ",(0,a.kt)("a",{parentName:"li",href:"https://rfc.vac.dev/spec/26/"},"message decryption")," methods."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"callback"),": The callback function for processing the retrieved messages."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"options")," (optional): ",(0,a.kt)("a",{parentName:"li",href:"/guides/js-waku/store-retrieve-messages#store-query-options"},"Query options")," to filter the retrieved messages.")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-js"},"// Create the callback function\nconst callback = (wakuMessage) => {\n // Render the message/payload in your application\n console.log(wakuMessage);\n};\n\n// Query the Store peer\nawait node.store.queryWithOrderedCallback(\n [decoder],\n callback,\n);\n")),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"The ",(0,a.kt)("inlineCode",{parentName:"p"},"queryWithOrderedCallback()")," function always returns the most recent messages in a page first.")),(0,a.kt)("h3",{id:"querygenerator"},(0,a.kt)("inlineCode",{parentName:"h3"},"queryGenerator")),(0,a.kt)("p",null,"The ",(0,a.kt)("inlineCode",{parentName:"p"},"store.queryGenerator()")," function provides more control and flexibility over processing messages retrieved from ",(0,a.kt)("inlineCode",{parentName:"p"},"Store")," nodes through ",(0,a.kt)("a",{parentName:"p",href:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AsyncGenerator"},"Async Generators"),". It accepts these parameters:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"decoders"),": List of ",(0,a.kt)("inlineCode",{parentName:"li"},"decoders")," that specify the ",(0,a.kt)("inlineCode",{parentName:"li"},"content topic")," to query for and their ",(0,a.kt)("a",{parentName:"li",href:"https://rfc.vac.dev/spec/26/"},"message decryption")," methods."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"options")," (optional): ",(0,a.kt)("a",{parentName:"li",href:"/guides/js-waku/store-retrieve-messages#store-query-options"},"Query options")," to filter the retrieved messages.")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-js"},"// Create the store query\nconst storeQuery = node.store.queryGenerator([decoder]);\n\n// Process the messages\nfor await (const messagesPromises of storeQuery) {\n // Fulfil the messages promises\n const messages = await Promise.all(messagesPromises\n .map(async (p) => {\n const msg = await p;\n // Render the message/payload in your application\n console.log(msg);\n })\n );\n}\n")),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"The ",(0,a.kt)("inlineCode",{parentName:"p"},"queryGenerator()")," function always returns the oldest messages in a page first.")),(0,a.kt)("h2",{id:"store-query-options"},"Store query options"),(0,a.kt)("h3",{id:"pagedirection"},(0,a.kt)("inlineCode",{parentName:"h3"},"pageDirection")),(0,a.kt)("p",null,"The ",(0,a.kt)("inlineCode",{parentName:"p"},"pageDirection")," option specifies the direction in which pages are retrieved:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"BACKWARD")," (default): Most recent page first."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"FORWARD"),": Oldest page first.")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-js"},'import { PageDirection } from "@waku/sdk";\n\n// Retrieve recent messages first\nconst queryOptions = {\n pageDirection: PageDirection.BACKWARD,\n};\n\n// Retrieve oldest messages first\nconst queryOptions = {\n pageDirection: PageDirection.FORWARD,\n};\n\n// Query the Store peer with options\nawait node.store.queryWithOrderedCallback([decoder], callback, options);\nconst storeQuery = node.store.queryGenerator([decoder, options]);\n')),(0,a.kt)("h3",{id:"cursor"},(0,a.kt)("inlineCode",{parentName:"h3"},"cursor")),(0,a.kt)("p",null,"The ",(0,a.kt)("inlineCode",{parentName:"p"},"cursor")," option specifies the starting index for retrieving messages. For example, consider a query that retrieves the first page messages and then continues with the next page:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-js"},'import { waku } from "@waku/sdk";\n\n// Create the callback function\nconst messages = [];\nconst callback = (wakuMessage) => {\n messages.push(wakuMessage);\n // Return "true" to stop retrieving pages\n // Here, it retrieves only the first page\n return true;\n};\n\n// Retrieve the first page of messages\n// This retrieves all the messages if "return true" is not present\nawait node.store.queryWithOrderedCallback(\n [decoder],\n callback,\n);\n\n// Create the cursor\nconst lastMessage = messages[messages.length - 1];\nconst cursor = await waku.createCursor(lastMessage);\n\n// Retrieve the next page of messages\n// The message at the cursor index is excluded from the result\nawait node.store.queryWithOrderedCallback(\n [decoder],\n callback,\n {\n cursor: cursor,\n },\n);\nconsole.log(messages);\n')),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"If you omit the ",(0,a.kt)("inlineCode",{parentName:"p"},"cursor")," option, the query will start from the beginning or end of the history, depending on the ",(0,a.kt)("a",{parentName:"p",href:"#pagedirection"},"page direction"),".")),(0,a.kt)("h3",{id:"timefilter"},(0,a.kt)("inlineCode",{parentName:"h3"},"timeFilter")),(0,a.kt)("p",null,"The ",(0,a.kt)("inlineCode",{parentName:"p"},"timeFilter")," option specifies a time frame to retrieve messages from. For example, consider a query that retrieves messages from the previous week:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-js"},"// Get the time frame\nconst endTime = new Date();\nconst startTime = new Date();\nstartTime.setDate(endTime.getDate() - 7);\n\n// Retrieve a week of messages\nconst queryOptions = {\n timeFilter: {\n startTime,\n endTime,\n },\n};\n\n// Query the Store peer with options\nawait node.store.queryWithOrderedCallback([decoder], callback, options);\nconst storeQuery = node.store.queryGenerator([decoder, options]);\n")),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"The ",(0,a.kt)("inlineCode",{parentName:"p"},"timeFilter")," option significantly reduces message retrieval performance. To optimise it, consider resuming message retrieval using a ",(0,a.kt)("a",{parentName:"p",href:"#cursor"},"cursor")," that starts from the last seen message.")),(0,a.kt)("admonition",{title:"Congratulations!",type:"tip"},(0,a.kt)("p",{parentName:"admonition"},"You have successfully retrieved and filtered historical messages on a Light Node using the ",(0,a.kt)("inlineCode",{parentName:"p"},"Store")," protocol. Have a look at the ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/waku-org/js-waku-examples/tree/master/examples/store-js"},"store-js")," and ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/waku-org/js-waku-examples/tree/master/examples/store-reactjs-chat"},"store-reactjs-chat")," examples for working demos.")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/1f1f54c7.5f12efa7.js b/assets/js/1f1f54c7.5f12efa7.js new file mode 100644 index 0000000..e2eafb3 --- /dev/null +++ b/assets/js/1f1f54c7.5f12efa7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[2285],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>g});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function s(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),c=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):s(s({},t),e)),r},p=function(e){var t=c(e.components);return n.createElement(l.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),d=c(r),m=a,g=d["".concat(l,".").concat(m)]||d[m]||u[m]||o;return r?n.createElement(g,s(s({ref:t},p),{},{components:r})):n.createElement(g,s({ref:t},p))}));function g(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,s=new Array(o);s[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[d]="string"==typeof e?e:a,s[1]=i;for(var c=2;c{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var n=r(87462),a=(r(67294),r(3905));const o={title:"Retrieve Messages Using Store Protocol",hide_table_of_contents:!0},s=void 0,i={unversionedId:"guides/js-waku/store-retrieve-messages",id:"guides/js-waku/store-retrieve-messages",title:"Retrieve Messages Using Store Protocol",description:"This guide provides detailed steps to create a Light Node for retrieving and filtering historical messages using the Store protocol.",source:"@site/docs/guides/js-waku/store-retrieve-messages.md",sourceDirName:"guides/js-waku",slug:"/guides/js-waku/store-retrieve-messages",permalink:"/guides/js-waku/store-retrieve-messages",draft:!1,editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/docs/guides/js-waku/store-retrieve-messages.md",tags:[],version:"current",lastUpdatedAt:1715880135,formattedLastUpdatedAt:"16 May 2024",frontMatter:{title:"Retrieve Messages Using Store Protocol",hide_table_of_contents:!0},sidebar:"guides",previous:{title:"Send and Receive Messages Using Light Push and Filter",permalink:"/guides/js-waku/light-send-receive"},next:{title:"Encrypt, Decrypt, and Sign Your Messages",permalink:"/guides/js-waku/message-encryption"}},l={},c=[{value:"Create a light node",id:"create-a-light-node",level:2},{value:"Connect to store peers",id:"connect-to-store-peers",level:2},{value:"Choose a content topic",id:"choose-a-content-topic",level:2},{value:"Retrieve messages",id:"retrieve-messages",level:2},{value:"queryWithOrderedCallback",id:"querywithorderedcallback",level:3},{value:"queryGenerator",id:"querygenerator",level:3},{value:"Store query options",id:"store-query-options",level:2},{value:"pageDirection",id:"pagedirection",level:3},{value:"cursor",id:"cursor",level:3},{value:"timeFilter",id:"timefilter",level:3}],p={toc:c},d="wrapper";function u(e){let{components:t,...r}=e;return(0,a.kt)(d,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"This guide provides detailed steps to create a Light Node for retrieving and filtering historical messages using the ",(0,a.kt)("a",{parentName:"p",href:"/learn/concepts/protocols#store"},"Store protocol"),"."),(0,a.kt)("h2",{id:"create-a-light-node"},"Create a light node"),(0,a.kt)("p",null,"Use the ",(0,a.kt)("inlineCode",{parentName:"p"},"createLightNode()")," function to create a Light Node and interact with the Waku Network:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-js"},'import { createLightNode } from "@waku/sdk";\n\n// Create and start a Light Node\nconst node = await createLightNode({ defaultBootstrap: true });\nawait node.start();\n')),(0,a.kt)("h2",{id:"connect-to-store-peers"},"Connect to store peers"),(0,a.kt)("p",null,"Use the ",(0,a.kt)("inlineCode",{parentName:"p"},"waitForRemotePeer()")," function to wait for the node to connect with Store peers:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-js"},'import { waitForRemotePeer, Protocols } from "@waku/sdk";\n\n// Wait for a successful peer connection\nawait waitForRemotePeer(node, [Protocols.Store]);\n')),(0,a.kt)("h2",{id:"choose-a-content-topic"},"Choose a content topic"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"/learn/concepts/content-topics"},"Choose a content topic")," for filtering the messages to retrieve and create a message ",(0,a.kt)("inlineCode",{parentName:"p"},"decoder"),":"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-js"},'import { createDecoder } from "@waku/sdk";\n\n// Choose a content topic\nconst contentTopic = "/store-guide/1/message/proto";\n\n// Create a message decoder\nconst decoder = createDecoder(contentTopic);\n')),(0,a.kt)("h2",{id:"retrieve-messages"},"Retrieve messages"),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"@waku/sdk")," provides the ",(0,a.kt)("inlineCode",{parentName:"p"},"queryWithOrderedCallback()")," and ",(0,a.kt)("inlineCode",{parentName:"p"},"queryGenerator()")," functions for querying ",(0,a.kt)("inlineCode",{parentName:"p"},"Store")," nodes and retrieving historical or missed messages. The responses from ",(0,a.kt)("inlineCode",{parentName:"p"},"Store")," nodes are paginated and require you to process each page sequentially."),(0,a.kt)("h3",{id:"querywithorderedcallback"},(0,a.kt)("inlineCode",{parentName:"h3"},"queryWithOrderedCallback")),(0,a.kt)("p",null,"The ",(0,a.kt)("inlineCode",{parentName:"p"},"store.queryWithOrderedCallback()")," function provides a straightforward method for querying ",(0,a.kt)("inlineCode",{parentName:"p"},"Store")," nodes and processing messages in chronological order through a callback function. It accepts these parameters:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"decoders"),": List of ",(0,a.kt)("inlineCode",{parentName:"li"},"decoders")," that specify the ",(0,a.kt)("inlineCode",{parentName:"li"},"content topic")," to query for and their ",(0,a.kt)("a",{parentName:"li",href:"https://rfc.vac.dev/waku/standards/application/26/payload"},"message decryption")," methods."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"callback"),": The callback function for processing the retrieved messages."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"options")," (optional): ",(0,a.kt)("a",{parentName:"li",href:"/guides/js-waku/store-retrieve-messages#store-query-options"},"Query options")," to filter the retrieved messages.")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-js"},"// Create the callback function\nconst callback = (wakuMessage) => {\n // Render the message/payload in your application\n console.log(wakuMessage);\n};\n\n// Query the Store peer\nawait node.store.queryWithOrderedCallback([decoder], callback);\n")),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"The ",(0,a.kt)("inlineCode",{parentName:"p"},"queryWithOrderedCallback()")," function always returns the most recent messages in a page first.")),(0,a.kt)("h3",{id:"querygenerator"},(0,a.kt)("inlineCode",{parentName:"h3"},"queryGenerator")),(0,a.kt)("p",null,"The ",(0,a.kt)("inlineCode",{parentName:"p"},"store.queryGenerator()")," function provides more control and flexibility over processing messages retrieved from ",(0,a.kt)("inlineCode",{parentName:"p"},"Store")," nodes through ",(0,a.kt)("a",{parentName:"p",href:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AsyncGenerator"},"Async Generators"),". It accepts these parameters:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"decoders"),": List of ",(0,a.kt)("inlineCode",{parentName:"li"},"decoders")," that specify the ",(0,a.kt)("inlineCode",{parentName:"li"},"content topic")," to query for and their ",(0,a.kt)("a",{parentName:"li",href:"https://rfc.vac.dev/waku/standards/application/26/payload"},"message decryption")," methods."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"options")," (optional): ",(0,a.kt)("a",{parentName:"li",href:"/guides/js-waku/store-retrieve-messages#store-query-options"},"Query options")," to filter the retrieved messages.")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-js"},"// Create the store query\nconst storeQuery = node.store.queryGenerator([decoder]);\n\n// Process the messages\nfor await (const messagesPromises of storeQuery) {\n // Fulfil the messages promises\n const messages = await Promise.all(\n messagesPromises.map(async (p) => {\n const msg = await p;\n // Render the message/payload in your application\n console.log(msg);\n })\n );\n}\n")),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"The ",(0,a.kt)("inlineCode",{parentName:"p"},"queryGenerator()")," function always returns the oldest messages in a page first.")),(0,a.kt)("h2",{id:"store-query-options"},"Store query options"),(0,a.kt)("h3",{id:"pagedirection"},(0,a.kt)("inlineCode",{parentName:"h3"},"pageDirection")),(0,a.kt)("p",null,"The ",(0,a.kt)("inlineCode",{parentName:"p"},"pageDirection")," option specifies the direction in which pages are retrieved:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"BACKWARD")," (default): Most recent page first."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"FORWARD"),": Oldest page first.")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-js"},'import { PageDirection } from "@waku/sdk";\n\n// Retrieve recent messages first\nconst queryOptions = {\n pageDirection: PageDirection.BACKWARD,\n};\n\n// Retrieve oldest messages first\nconst queryOptions = {\n pageDirection: PageDirection.FORWARD,\n};\n\n// Query the Store peer with options\nawait node.store.queryWithOrderedCallback([decoder], callback, options);\nconst storeQuery = node.store.queryGenerator([decoder, options]);\n')),(0,a.kt)("h3",{id:"cursor"},(0,a.kt)("inlineCode",{parentName:"h3"},"cursor")),(0,a.kt)("p",null,"The ",(0,a.kt)("inlineCode",{parentName:"p"},"cursor")," option specifies the starting index for retrieving messages. For example, consider a query that retrieves the first page messages and then continues with the next page:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-js"},'import { waku } from "@waku/sdk";\n\n// Create the callback function\nconst messages = [];\nconst callback = (wakuMessage) => {\n messages.push(wakuMessage);\n // Return "true" to stop retrieving pages\n // Here, it retrieves only the first page\n return true;\n};\n\n// Retrieve the first page of messages\n// This retrieves all the messages if "return true" is not present\nawait node.store.queryWithOrderedCallback([decoder], callback);\n\n// Create the cursor\nconst lastMessage = messages[messages.length - 1];\nconst cursor = await waku.createCursor(lastMessage);\n\n// Retrieve the next page of messages\n// The message at the cursor index is excluded from the result\nawait node.store.queryWithOrderedCallback([decoder], callback, {\n cursor: cursor,\n});\nconsole.log(messages);\n')),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"If you omit the ",(0,a.kt)("inlineCode",{parentName:"p"},"cursor")," option, the query will start from the beginning or end of the history, depending on the ",(0,a.kt)("a",{parentName:"p",href:"#pagedirection"},"page direction"),".")),(0,a.kt)("h3",{id:"timefilter"},(0,a.kt)("inlineCode",{parentName:"h3"},"timeFilter")),(0,a.kt)("p",null,"The ",(0,a.kt)("inlineCode",{parentName:"p"},"timeFilter")," option specifies a time frame to retrieve messages from. For example, consider a query that retrieves messages from the previous week:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-js"},"// Get the time frame\nconst endTime = new Date();\nconst startTime = new Date();\nstartTime.setDate(endTime.getDate() - 7);\n\n// Retrieve a week of messages\nconst queryOptions = {\n timeFilter: {\n startTime,\n endTime,\n },\n};\n\n// Query the Store peer with options\nawait node.store.queryWithOrderedCallback([decoder], callback, options);\nconst storeQuery = node.store.queryGenerator([decoder, options]);\n")),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"The ",(0,a.kt)("inlineCode",{parentName:"p"},"timeFilter")," option significantly reduces message retrieval performance. To optimise it, consider resuming message retrieval using a ",(0,a.kt)("a",{parentName:"p",href:"#cursor"},"cursor")," that starts from the last seen message.")),(0,a.kt)("admonition",{title:"Congratulations!",type:"tip"},(0,a.kt)("p",{parentName:"admonition"},"You have successfully retrieved and filtered historical messages on a Light Node using the ",(0,a.kt)("inlineCode",{parentName:"p"},"Store")," protocol. Have a look at the ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/waku-org/js-waku-examples/tree/master/examples/store-js"},"store-js")," and ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/waku-org/js-waku-examples/tree/master/examples/store-reactjs-chat"},"store-reactjs-chat")," examples for working demos.")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/2f51beae.30097b0e.js b/assets/js/2f51beae.805c3453.js similarity index 88% rename from assets/js/2f51beae.30097b0e.js rename to assets/js/2f51beae.805c3453.js index 6fd8ae7..3725fb5 100644 --- a/assets/js/2f51beae.30097b0e.js +++ b/assets/js/2f51beae.805c3453.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[231],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>m});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=r.createContext({}),l=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},p=function(e){var t=l(e.components);return r.createElement(c.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},v=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,c=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),d=l(n),v=o,m=d["".concat(c,".").concat(v)]||d[v]||u[v]||i;return n?r.createElement(m,a(a({ref:t},p),{},{components:n})):r.createElement(m,a({ref:t},p))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,a=new Array(i);a[0]=v;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[d]="string"==typeof e?e:o,a[1]=s;for(var l=2;l{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>l,default:()=>f,frontMatter:()=>c,metadata:()=>p,toc:()=>u});var r=n(87462),o=(n(67294),n(3905));const i={toc:[]},a="wrapper";function s(e){let{components:t,...n}=e;return(0,o.kt)(a,(0,r.Z)({},i,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("mermaid",{value:"sequenceDiagram\n Alice->>DNS Server: (1) Execute DNS Discovery\n DNS Server--\x3e>Alice: (2) Bob's connection details (UDP + TCP)\n activate Alice\n Alice->>Bob: (3) Execute Discv5 over UDP\n Bob--\x3e>Alice: (4) ENRs (UDP + TCP): Carol, David, Erin\n Alice->>Alice: (5) Decode ENRs\n Alice->>Carol: (6) Execute Discv5 over UDP\n Carol--\x3e>Alice: (7) ENRs (UDP + TCP): Frank, Gwen, Harry\n Alice->>Alice: (8) Decode ENRs\n deactivate Alice\n Alice->>Alice: (9) Select peers to dial\n Alice->>David: (10) Libp2p dial (TCP)\n Alice->>Frank: (10) Libp2p dial (TCP)\n Alice->>Gwen: (10) Libp2p dial (TCP)"}),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"DNS Discovery protocol is executed."),(0,o.kt)("li",{parentName:"ol"},"Alice retrieves Bob's ENR (Ethereum Node Record) from DNS Server."),(0,o.kt)("li",{parentName:"ol"},"Alice executes the Discv5 protocol with Bob using UDP connection details from ENR."),(0,o.kt)("li",{parentName:"ol"},"Bob returns Carol's, David's and Erin's ENRs to Alice."),(0,o.kt)("li",{parentName:"ol"},"Alice decodes ENRs and extracts the details of Carol, David, and Erin's TCP and UDP connections."),(0,o.kt)("li",{parentName:"ol"},"Alice executes the Discv5 protocol with Carol using UDP connection details from ENR."),(0,o.kt)("li",{parentName:"ol"},"Carol returns Frank's, Gwen's and Harry's ENRs to Alice."),(0,o.kt)("li",{parentName:"ol"},"Alice decodes ENRs and extracts Frank's, Gwen's and Harry's TCP and UDP connection details."),(0,o.kt)("li",{parentName:"ol"},"Alice selects to dial David, Frank and Gwen."),(0,o.kt)("li",{parentName:"ol"},"Alice dials David, Frank and Gwen over libp2p using TCP connection details from ENRs.")))}s.isMDXComponent=!0;const c={title:"Discv5",hide_table_of_contents:!0},l=void 0,p={unversionedId:"learn/concepts/discv5",id:"learn/concepts/discv5",title:"Discv5",description:"Discv5 is a decentralised and efficient peer discovery mechanism for the Waku Network. It uses a Distributed Hash Table (DHT) for storing ENR records, providing resistance to censorship. Discv5 offers a global view of participating nodes, enabling random sampling for load distribution. It uses bootstrap nodes as an entry point to the network, providing randomised sets of nodes for mesh expansion. Have a look at the Discv5 specification to learn more.",source:"@site/docs/learn/concepts/discv5.md",sourceDirName:"learn/concepts",slug:"/learn/concepts/discv5",permalink:"/learn/concepts/discv5",draft:!1,editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/docs/learn/concepts/discv5.md",tags:[],version:"current",lastUpdatedAt:1700737292,formattedLastUpdatedAt:"23 Nov 2023",frontMatter:{title:"Discv5",hide_table_of_contents:!0},sidebar:"learn",previous:{title:"DNS Discovery",permalink:"/learn/concepts/dns-discovery"},next:{title:"Peer Exchange",permalink:"/learn/concepts/peer-exchange"}},d={},u=[{value:"Pros",id:"pros",level:4},{value:"Cons",id:"cons",level:4},{value:"Overview",id:"overview",level:2}],v={toc:u},m="wrapper";function f(e){let{components:t,...n}=e;return(0,o.kt)(m,(0,r.Z)({},v,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Discv5")," is a decentralised and efficient peer discovery mechanism for the Waku Network. It uses a ",(0,o.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/Distributed_hash_table"},"Distributed Hash Table (DHT)")," for storing ",(0,o.kt)("inlineCode",{parentName:"p"},"ENR")," records, providing resistance to censorship. ",(0,o.kt)("inlineCode",{parentName:"p"},"Discv5")," offers a global view of participating nodes, enabling random sampling for load distribution. It uses bootstrap nodes as an entry point to the network, providing randomised sets of nodes for mesh expansion. Have a look at the ",(0,o.kt)("a",{parentName:"p",href:"https://rfc.vac.dev/spec/33/"},"Discv5")," specification to learn more."),(0,o.kt)("h4",{id:"pros"},"Pros"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Decentralised with random sampling from a global view."),(0,o.kt)("li",{parentName:"ul"},"Continuously researched and improved.")),(0,o.kt)("h4",{id:"cons"},"Cons"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Requires lots of connections and involves frequent churn."),(0,o.kt)("li",{parentName:"ul"},"Relies on User Datagram Protocol (UDP), which is not supported in web browsers.")),(0,o.kt)("h2",{id:"overview"},"Overview"),(0,o.kt)(s,{mdxType:"Discv5"}))}f.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[231],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>m});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=r.createContext({}),l=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},p=function(e){var t=l(e.components);return r.createElement(c.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},v=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,c=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),d=l(n),v=o,m=d["".concat(c,".").concat(v)]||d[v]||u[v]||i;return n?r.createElement(m,a(a({ref:t},p),{},{components:n})):r.createElement(m,a({ref:t},p))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,a=new Array(i);a[0]=v;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[d]="string"==typeof e?e:o,a[1]=s;for(var l=2;l{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>l,default:()=>f,frontMatter:()=>c,metadata:()=>p,toc:()=>u});var r=n(87462),o=(n(67294),n(3905));const i={toc:[]},a="wrapper";function s(e){let{components:t,...n}=e;return(0,o.kt)(a,(0,r.Z)({},i,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("mermaid",{value:"sequenceDiagram\n Alice->>DNS Server: (1) Execute DNS Discovery\n DNS Server--\x3e>Alice: (2) Bob's connection details (UDP + TCP)\n activate Alice\n Alice->>Bob: (3) Execute Discv5 over UDP\n Bob--\x3e>Alice: (4) ENRs (UDP + TCP): Carol, David, Erin\n Alice->>Alice: (5) Decode ENRs\n Alice->>Carol: (6) Execute Discv5 over UDP\n Carol--\x3e>Alice: (7) ENRs (UDP + TCP): Frank, Gwen, Harry\n Alice->>Alice: (8) Decode ENRs\n deactivate Alice\n Alice->>Alice: (9) Select peers to dial\n Alice->>David: (10) Libp2p dial (TCP)\n Alice->>Frank: (10) Libp2p dial (TCP)\n Alice->>Gwen: (10) Libp2p dial (TCP)"}),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"DNS Discovery protocol is executed."),(0,o.kt)("li",{parentName:"ol"},"Alice retrieves Bob's ENR (Ethereum Node Record) from DNS Server."),(0,o.kt)("li",{parentName:"ol"},"Alice executes the Discv5 protocol with Bob using UDP connection details from ENR."),(0,o.kt)("li",{parentName:"ol"},"Bob returns Carol's, David's and Erin's ENRs to Alice."),(0,o.kt)("li",{parentName:"ol"},"Alice decodes ENRs and extracts the details of Carol, David, and Erin's TCP and UDP connections."),(0,o.kt)("li",{parentName:"ol"},"Alice executes the Discv5 protocol with Carol using UDP connection details from ENR."),(0,o.kt)("li",{parentName:"ol"},"Carol returns Frank's, Gwen's and Harry's ENRs to Alice."),(0,o.kt)("li",{parentName:"ol"},"Alice decodes ENRs and extracts Frank's, Gwen's and Harry's TCP and UDP connection details."),(0,o.kt)("li",{parentName:"ol"},"Alice selects to dial David, Frank and Gwen."),(0,o.kt)("li",{parentName:"ol"},"Alice dials David, Frank and Gwen over libp2p using TCP connection details from ENRs.")))}s.isMDXComponent=!0;const c={title:"Discv5",hide_table_of_contents:!0},l=void 0,p={unversionedId:"learn/concepts/discv5",id:"learn/concepts/discv5",title:"Discv5",description:"Discv5 is a decentralised and efficient peer discovery mechanism for the Waku Network. It uses a Distributed Hash Table (DHT) for storing ENR records, providing resistance to censorship. Discv5 offers a global view of participating nodes, enabling random sampling for load distribution. It uses bootstrap nodes as an entry point to the network, providing randomised sets of nodes for mesh expansion. Have a look at the Discv5 specification to learn more.",source:"@site/docs/learn/concepts/discv5.md",sourceDirName:"learn/concepts",slug:"/learn/concepts/discv5",permalink:"/learn/concepts/discv5",draft:!1,editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/docs/learn/concepts/discv5.md",tags:[],version:"current",lastUpdatedAt:1715880135,formattedLastUpdatedAt:"16 May 2024",frontMatter:{title:"Discv5",hide_table_of_contents:!0},sidebar:"learn",previous:{title:"DNS Discovery",permalink:"/learn/concepts/dns-discovery"},next:{title:"Peer Exchange",permalink:"/learn/concepts/peer-exchange"}},d={},u=[{value:"Pros",id:"pros",level:4},{value:"Cons",id:"cons",level:4},{value:"Overview",id:"overview",level:2}],v={toc:u},m="wrapper";function f(e){let{components:t,...n}=e;return(0,o.kt)(m,(0,r.Z)({},v,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Discv5")," is a decentralised and efficient peer discovery mechanism for the Waku Network. It uses a ",(0,o.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/Distributed_hash_table"},"Distributed Hash Table (DHT)")," for storing ",(0,o.kt)("inlineCode",{parentName:"p"},"ENR")," records, providing resistance to censorship. ",(0,o.kt)("inlineCode",{parentName:"p"},"Discv5")," offers a global view of participating nodes, enabling random sampling for load distribution. It uses bootstrap nodes as an entry point to the network, providing randomised sets of nodes for mesh expansion. Have a look at the ",(0,o.kt)("a",{parentName:"p",href:"https://rfc.vac.dev/waku/standards/core/33/discv5"},"Discv5")," specification to learn more."),(0,o.kt)("h4",{id:"pros"},"Pros"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Decentralised with random sampling from a global view."),(0,o.kt)("li",{parentName:"ul"},"Continuously researched and improved.")),(0,o.kt)("h4",{id:"cons"},"Cons"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Requires lots of connections and involves frequent churn."),(0,o.kt)("li",{parentName:"ul"},"Relies on User Datagram Protocol (UDP), which is not supported in web browsers.")),(0,o.kt)("h2",{id:"overview"},"Overview"),(0,o.kt)(s,{mdxType:"Discv5"}))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/406e0176.52445de5.js b/assets/js/406e0176.52445de5.js deleted file mode 100644 index e0d013f..0000000 --- a/assets/js/406e0176.52445de5.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[3855],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>k});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var d=a.createContext({}),u=function(e){var t=a.useContext(d),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},s=function(e){var t=u(e.components);return a.createElement(d.Provider,{value:t},e.children)},p="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,d=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),p=u(n),m=r,k=p["".concat(d,".").concat(m)]||p[m]||c[m]||o;return n?a.createElement(k,i(i({ref:t},s),{},{components:n})):a.createElement(k,i({ref:t},s))}));function k(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=m;var l={};for(var d in t)hasOwnProperty.call(t,d)&&(l[d]=t[d]);l.originalType=e,l[p]="string"==typeof e?e:r,i[1]=l;for(var u=2;u{n.d(t,{Z:()=>i});var a=n(67294),r=n(86010);const o={tabItem:"tabItem_Ymn6"};function i(e){let{children:t,hidden:n,className:i}=e;return a.createElement("div",{role:"tabpanel",className:(0,r.default)(o.tabItem,i),hidden:n},t)}},65488:(e,t,n)=>{n.d(t,{Z:()=>m});var a=n(87462),r=n(67294),o=n(86010),i=n(12466),l=n(70989),d=n(72389);const u={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function s(e){let{className:t,block:n,selectedValue:l,selectValue:d,tabValues:s}=e;const p=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.o5)(),m=e=>{const t=e.currentTarget,n=p.indexOf(t),a=s[n].value;a!==l&&(c(t),d(a))},k=e=>{let t=null;switch(e.key){case"Enter":m(e);break;case"ArrowRight":{const n=p.indexOf(e.currentTarget)+1;t=p[n]??p[0];break}case"ArrowLeft":{const n=p.indexOf(e.currentTarget)-1;t=p[n]??p[p.length-1];break}}t?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.default)("tabs",{"tabs--block":n},t)},s.map((e=>{let{value:t,label:n,attributes:i}=e;return r.createElement("li",(0,a.Z)({role:"tab",tabIndex:l===t?0:-1,"aria-selected":l===t,key:t,ref:e=>p.push(e),onKeyDown:k,onClick:m},i,{className:(0,o.default)("tabs__item",u.tabItem,i?.className,{"tabs__item--active":l===t})}),n??t)})))}function p(e){let{lazy:t,children:n,selectedValue:a}=e;const o=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=o.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},o.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==a}))))}function c(e){const t=(0,l.Y)(e);return r.createElement("div",{className:(0,o.default)("tabs-container",u.tabList)},r.createElement(s,(0,a.Z)({},e,t)),r.createElement(p,(0,a.Z)({},e,t)))}function m(e){const t=(0,d.default)();return r.createElement(c,(0,a.Z)({key:String(t)},e))}},89472:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>d,default:()=>k,frontMatter:()=>l,metadata:()=>u,toc:()=>p});var a=n(87462),r=(n(67294),n(3905)),o=n(65488),i=n(85162);const l={title:"Run a Nwaku Node",hide_table_of_contents:!0},d=void 0,u={unversionedId:"guides/nwaku/run-node",id:"guides/nwaku/run-node",title:"Run a Nwaku Node",description:"Nwaku is a lightweight and robust Nim client for running a Waku node, equipped with tools to monitor and maintain a running node. Nwaku is highly configurable, enabling operators to select the protocols they want to support based on their needs, motivations, and available resources.",source:"@site/docs/guides/nwaku/run-node.md",sourceDirName:"guides/nwaku",slug:"/guides/nwaku/run-node",permalink:"/guides/nwaku/run-node",draft:!1,editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/docs/guides/nwaku/run-node.md",tags:[],version:"current",lastUpdatedAt:1709637863,formattedLastUpdatedAt:"5 Mar 2024",frontMatter:{title:"Run a Nwaku Node",hide_table_of_contents:!0},sidebar:"guides",previous:{title:"Getting Started",permalink:"/"},next:{title:"Run Nwaku with Docker Compose",permalink:"/guides/nwaku/run-docker-compose"}},s={},p=[{value:"Get the node binary",id:"get-the-node-binary",level:2},{value:"Run nwaku in Docker (recommended)",id:"run-nwaku-in-docker-recommended",level:4},{value:"Download the binary",id:"download-the-binary",level:4},{value:"Build the binary",id:"build-the-binary",level:4},{value:"Run the node",id:"run-the-node",level:2},{value:"Bootstrap the node",id:"bootstrap-the-node",level:2},{value:"Interact with the node",id:"interact-with-the-node",level:2},{value:"Find the node addresses",id:"find-the-node-addresses",level:2},{value:"Listening addresses",id:"listening-addresses",level:3},{value:"Discoverable ENR addresses",id:"discoverable-enr-addresses",level:3},{value:"ENR for DNS discovery",id:"enr-for-dns-discovery",level:4},{value:"ENR for Discv5",id:"enr-for-discv5",level:4}],c={toc:p},m="wrapper";function k(e){let{components:t,...n}=e;return(0,r.kt)(m,(0,a.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Nwaku is a lightweight and robust Nim client for running a Waku node, equipped with tools to monitor and maintain a running node. Nwaku is highly configurable, enabling operators to select the ",(0,r.kt)("a",{parentName:"p",href:"/learn/concepts/protocols"},"protocols")," they want to support based on their needs, motivations, and available resources."),(0,r.kt)("p",null,"This guide provides detailed steps to download, build, configure, and connect a ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," node to the Waku Network. It also includes interacting with the node and finding its addresses."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"We recommend running a ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," node with at least 2GB of RAM, especially if ",(0,r.kt)("inlineCode",{parentName:"p"},"WSS")," is enabled. If running just a ",(0,r.kt)("inlineCode",{parentName:"p"},"Relay")," node, 0.5GB of RAM is sufficient.")),(0,r.kt)("h2",{id:"get-the-node-binary"},"Get the node binary"),(0,r.kt)("p",null,"To run a node, you must have the ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," binary. Nwaku provides multiple options for running a node:"),(0,r.kt)("h4",{id:"run-nwaku-in-docker-recommended"},"Run nwaku in Docker (recommended)"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null}),(0,r.kt)("th",{parentName:"tr",align:null},"Description"),(0,r.kt)("th",{parentName:"tr",align:null},"Documentation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Docker Compose"),(0,r.kt)("td",{parentName:"tr",align:null},"Run a ",(0,r.kt)("inlineCode",{parentName:"td"},"nwaku")," node with Docker Compose"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/guides/nwaku/run-docker-compose"},"Run Nwaku with Docker Compose"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Docker Container"),(0,r.kt)("td",{parentName:"tr",align:null},"Run a ",(0,r.kt)("inlineCode",{parentName:"td"},"nwaku")," node in a Docker Container"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/guides/nwaku/run-docker"},"Run Nwaku in a Docker Container"))))),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"We recommend ",(0,r.kt)("a",{parentName:"p",href:"/guides/nwaku/run-docker-compose"},"using Docker Compose")," to run a node because it's the simplest and fastest way to configure and run one.")),(0,r.kt)("h4",{id:"download-the-binary"},"Download the binary"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null}),(0,r.kt)("th",{parentName:"tr",align:null},"Description"),(0,r.kt)("th",{parentName:"tr",align:null},"Documentation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Precompiled Binary"),(0,r.kt)("td",{parentName:"tr",align:null},"Download a precompiled binary of the ",(0,r.kt)("inlineCode",{parentName:"td"},"nwaku")," node"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"https://github.com/waku-org/nwaku/tags"},"Download Nwaku Binary"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Nightly Release"),(0,r.kt)("td",{parentName:"tr",align:null},"Try the latest ",(0,r.kt)("inlineCode",{parentName:"td"},"nwaku")," updates without compiling the binaries"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"https://github.com/waku-org/nwaku/releases/tag/nightly"},"Download Nightly Release"))))),(0,r.kt)("h4",{id:"build-the-binary"},"Build the binary"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null}),(0,r.kt)("th",{parentName:"tr",align:null},"Description"),(0,r.kt)("th",{parentName:"tr",align:null},"Documentation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Build from Source"),(0,r.kt)("td",{parentName:"tr",align:null},"Build the node from the ",(0,r.kt)("a",{parentName:"td",href:"https://github.com/waku-org/nwaku"},"nwaku source code")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/guides/nwaku/build-source"},"Build Nwaku from Source"))))),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"You can run the ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," binaries and Docker images on cloud service providers like ",(0,r.kt)("a",{parentName:"p",href:"https://cloud.google.com/"},"Google Cloud"),", ",(0,r.kt)("a",{parentName:"p",href:"https://azure.microsoft.com/"},"Microsoft Azure"),", ",(0,r.kt)("a",{parentName:"p",href:"https://aws.amazon.com/"},"Amazon Web Services"),", and ",(0,r.kt)("a",{parentName:"p",href:"https://www.digitalocean.com/"},"DigitalOcean"),".")),(0,r.kt)("h2",{id:"run-the-node"},"Run the node"),(0,r.kt)("p",null,"Once you have gotten the ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," binary, run it using the ",(0,r.kt)("a",{parentName:"p",href:"/guides/nwaku/config-methods#default-configuration-values"},"default configuration"),":"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"# Run with default configuration\n./build/wakunode2\n\n# See available command line options\n./build/wakunode2 --help\n")),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"To learn how to customise the configuration of a ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," node, have a look at the ",(0,r.kt)("a",{parentName:"p",href:"/guides/nwaku/config-methods"},"Node Configuration Methods")," and ",(0,r.kt)("a",{parentName:"p",href:"/guides/nwaku/configure-nwaku"},"Node Configuration Examples")," guides.")),(0,r.kt)("h2",{id:"bootstrap-the-node"},"Bootstrap the node"),(0,r.kt)("p",null,"To join the Waku Network, nodes must ",(0,r.kt)("a",{parentName:"p",href:"/learn/glossary#bootstrapping"},"bootstrap")," for an entry point before discovering more peers. Nwaku provides multiple ",(0,r.kt)("a",{parentName:"p",href:"/learn/concepts/peer-discovery"},"peer discovery")," mechanisms:"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null}),(0,r.kt)("th",{parentName:"tr",align:null},"Description"),(0,r.kt)("th",{parentName:"tr",align:null},"Documentation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Static Peers"),(0,r.kt)("td",{parentName:"tr",align:null},"Configure the bootstrap nodes that ",(0,r.kt)("inlineCode",{parentName:"td"},"nwaku")," should establish connections upon startup"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/guides/nwaku/configure-discovery#configure-static-peers"},"Configure Static Peers"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"DNS Discovery"),(0,r.kt)("td",{parentName:"tr",align:null},"Enable ",(0,r.kt)("inlineCode",{parentName:"td"},"nwaku")," to bootstrap nodes using the ",(0,r.kt)("a",{parentName:"td",href:"/learn/concepts/dns-discovery"},"DNS Discovery")," mechanism"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/guides/nwaku/configure-discovery#configure-dns-discovery"},"Configure DNS Discovery"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Discv5"),(0,r.kt)("td",{parentName:"tr",align:null},"Enable ",(0,r.kt)("inlineCode",{parentName:"td"},"nwaku")," to discover peers using the ",(0,r.kt)("a",{parentName:"td",href:"/learn/concepts/discv5"},"Discv5")," mechanism"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/guides/nwaku/configure-discovery#configure-discv5"},"Configure Discv5"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Peer Exchange"),(0,r.kt)("td",{parentName:"tr",align:null},"Enable ",(0,r.kt)("a",{parentName:"td",href:"/learn/concepts/peer-exchange"},"Peer Exchange")," protocol for light nodes to request peers from your ",(0,r.kt)("inlineCode",{parentName:"td"},"nwaku")," node"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/guides/nwaku/configure-discovery#configure-peer-exchange"},"Configure Peer Exchange"))))),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"You can configure a ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," node to use multiple peer discovery mechanisms simultaneously.")),(0,r.kt)("h2",{id:"interact-with-the-node"},"Interact with the node"),(0,r.kt)("p",null,"You can interact with a running ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," node through the ",(0,r.kt)("a",{parentName:"p",href:"https://waku-org.github.io/waku-rest-api/"},"REST API"),", such as querying the node information using the ",(0,r.kt)("a",{parentName:"p",href:"https://waku-org.github.io/waku-rest-api/#get-/debug/v1/info"},"Get node info")," endpoint:"),(0,r.kt)(o.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"curl --location 'http://127.0.0.1:8645/debug/v1/info' \\\n--header 'Accept: application/json'\n"))),(0,r.kt)(i.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "listenAddresses": [\n "/ip4/0.0.0.0/tcp/60000/p2p/16Uiu2HAmUbPquFQqje3jiqoB5YoiUbBya59NB4qqEzeiTNGHeA6w"\n ],\n "enrUri": "enr:-Iu4QCQZXZDb_JsYmLoYor0F5E_95HbIywgO_wgx2rIdDbmCJZkTzmlCr0wmMzV47lgik_tVwww5mIng90Ris83TisMBgmlkgnY0gmlwhAAAAACJc2VjcDI1NmsxoQPszztG-Ev52ZB7tk0jF8s6Md4KvyY_rhzNZokaaB_ABIN0Y3CC6mCFd2FrdTIB"\n}\n')))),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"The ",(0,r.kt)("inlineCode",{parentName:"p"},"listenAddresses")," field stores the node's listening addresses, while the ",(0,r.kt)("inlineCode",{parentName:"p"},"enrUri")," field stores the discoverable ",(0,r.kt)("inlineCode",{parentName:"p"},"ENR")," URI for peer discovery.")),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"We suggest ",(0,r.kt)("a",{parentName:"p",href:"/guides/nwaku/configure-nwaku#configure-websocket-transport"},"configuring WebSocket transport")," for your node to enable support and serving of browser peers using ",(0,r.kt)("a",{parentName:"p",href:"/guides/js-waku/"},"@waku/sdk"),".")),(0,r.kt)("h2",{id:"find-the-node-addresses"},"Find the node addresses"),(0,r.kt)("p",null,"You can find the addresses of a running node through its logs or by calling the ",(0,r.kt)("a",{parentName:"p",href:"https://waku-org.github.io/waku-rest-api/#get-/debug/v1/info"},"Get node info")," endpoint of the ",(0,r.kt)("a",{parentName:"p",href:"https://waku-org.github.io/waku-rest-api/"},"REST API"),"."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"When starting the node, ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," will display all the public listening and discovery addresses at the ",(0,r.kt)("inlineCode",{parentName:"p"},"INFO")," log level.")),(0,r.kt)("h3",{id:"listening-addresses"},"Listening addresses"),(0,r.kt)("p",null,"Look for the log entry that begins with ",(0,r.kt)("inlineCode",{parentName:"p"},"Listening on"),", for example:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-txt",metastring:'title="Nwaku Log Output"',title:'"Nwaku',Log:!0,'Output"':!0},'INF 2023-06-15 16:09:54.448+01:00 Listening on topics="waku node" tid=1623445 file=waku_node.nim:922 full=[/ip4/0.0.0.0/tcp/60000/p2p/16Uiu2HAmQCsH9V81xoqTwGuT3qwkZWbwY1TtTQwpr3DjHU2TSwMn][/ip4/0.0.0.0/tcp/8000/ws/p2p/16Uiu2HAmQCsH9V81xoqTwGuT3qwkZWbwY1TtTQwpr3DjHU2TSwMn]\n')),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"# Listening TCP transport address\n/ip4/0.0.0.0/tcp/60000/p2p/16Uiu2HAmQCsH9V81xoqTwGuT3qwkZWbwY1TtTQwpr3DjHU2TSwMn\n\n# Listening WebSocket address\n/ip4/0.0.0.0/tcp/8000/ws/p2p/16Uiu2HAmQCsH9V81xoqTwGuT3qwkZWbwY1TtTQwpr3DjHU2TSwMn\n")),(0,r.kt)("h3",{id:"discoverable-enr-addresses"},"Discoverable ENR addresses"),(0,r.kt)("p",null,"A ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," node can encode its addressing information in an ",(0,r.kt)("a",{parentName:"p",href:"https://eips.ethereum.org/EIPS/eip-778"},"Ethereum Node Record (ENR)")," following the ",(0,r.kt)("a",{parentName:"p",href:"https://rfc.vac.dev/spec/31/"},"WAKU2-ENR")," specification, primarily for peer discovery."),(0,r.kt)("h4",{id:"enr-for-dns-discovery"},"ENR for DNS discovery"),(0,r.kt)("p",null,"Look for the log entry that begins with ",(0,r.kt)("inlineCode",{parentName:"p"},"DNS: discoverable ENR"),", for example:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-txt",metastring:'title="Nwaku Log Output"',title:'"Nwaku',Log:!0,'Output"':!0},'INF 2023-06-15 16:09:54.448+01:00 DNS: discoverable ENR topics="waku node" tid=1623445 file=waku_node.nim:923 enr=enr:-Iu4QBKYj8Ovxwz4fIalxZ_1a8dOCU2WC-1LQrcBCCb4Np93f9-UuSZXn3vagJL1S3k3hwRYfOp3JSbW7_VqwtqMIeMBgmlkgnY0gmlwhAAAAACJc2VjcDI1NmsxoQOrmyV59dAzY4ZKrvrj32VOoZbLby8dCKFnXnqhIdQ0NYN0Y3CC6mCFd2FrdTIB\n')),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"# ENR the node addresses are encoded in\nenr:-Iu4QBKYj8Ovxwz4fIalxZ_1a8dOCU2WC-1LQrcBCCb4Np93f9-UuSZXn3vagJL1S3k3hwRYfOp3JSbW7_VqwtqMIeMBgmlkgnY0gmlwhAAAAACJc2VjcDI1NmsxoQOrmyV59dAzY4ZKrvrj32VOoZbLby8dCKFnXnqhIdQ0NYN0Y3CC6mCFd2FrdTIB\n")),(0,r.kt)("h4",{id:"enr-for-discv5"},"ENR for Discv5"),(0,r.kt)("p",null,"Look for the log entry that begins with ",(0,r.kt)("inlineCode",{parentName:"p"},"Discv5: discoverable ENR"),", for example:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-txt",metastring:'title="Nwaku Log Output"',title:'"Nwaku',Log:!0,'Output"':!0},'INF 2023-06-15 16:09:54.448+01:00 Discv5: discoverable ENR topics="waku node" tid=1623445 file=waku_node.nim:924 enr=enr:-IO4QDxToTg86pPCK2KvMeVCXC2ADVZWrxXSvNZeaoa0JhShbM5qed69RQz1s1mWEEqJ3aoklo_7EU9iIBcPMVeKlCQBgmlkgnY0iXNlY3AyNTZrMaEDdBHK1Gx6y_zv5DVw5Qb3DtSOMmVHTZO1WSORrF2loL2DdWRwgiMohXdha3UyAw\n')),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"# ENR the node addresses are encoded in\nenr:-IO4QDxToTg86pPCK2KvMeVCXC2ADVZWrxXSvNZeaoa0JhShbM5qed69RQz1s1mWEEqJ3aoklo_7EU9iIBcPMVeKlCQBgmlkgnY0iXNlY3AyNTZrMaEDdBHK1Gx6y_zv5DVw5Qb3DtSOMmVHTZO1WSORrF2loL2DdWRwgiMohXdha3UyAw\n")),(0,r.kt)("admonition",{title:"Congratulations!",type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"You have successfully started, configured, and connected a ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," node to the Waku Network. Have a look at the ",(0,r.kt)("a",{parentName:"p",href:"/guides/nwaku/configure-nwaku"},"Node Configuration Examples")," guide to learn how to configure ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," for different use cases.")))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/406e0176.849f2378.js b/assets/js/406e0176.849f2378.js new file mode 100644 index 0000000..6c62dd2 --- /dev/null +++ b/assets/js/406e0176.849f2378.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[3855],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>m});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var u=a.createContext({}),d=function(e){var t=a.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},s=function(e){var t=d(e.components);return a.createElement(u.Provider,{value:t},e.children)},p="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},k=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,u=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),p=d(n),k=r,m=p["".concat(u,".").concat(k)]||p[k]||c[k]||o;return n?a.createElement(m,i(i({ref:t},s),{},{components:n})):a.createElement(m,i({ref:t},s))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=k;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[p]="string"==typeof e?e:r,i[1]=l;for(var d=2;d{n.d(t,{Z:()=>i});var a=n(67294),r=n(86010);const o={tabItem:"tabItem_Ymn6"};function i(e){let{children:t,hidden:n,className:i}=e;return a.createElement("div",{role:"tabpanel",className:(0,r.default)(o.tabItem,i),hidden:n},t)}},65488:(e,t,n)=>{n.d(t,{Z:()=>k});var a=n(87462),r=n(67294),o=n(86010),i=n(12466),l=n(70989),u=n(72389);const d={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function s(e){let{className:t,block:n,selectedValue:l,selectValue:u,tabValues:s}=e;const p=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.o5)(),k=e=>{const t=e.currentTarget,n=p.indexOf(t),a=s[n].value;a!==l&&(c(t),u(a))},m=e=>{let t=null;switch(e.key){case"Enter":k(e);break;case"ArrowRight":{const n=p.indexOf(e.currentTarget)+1;t=p[n]??p[0];break}case"ArrowLeft":{const n=p.indexOf(e.currentTarget)-1;t=p[n]??p[p.length-1];break}}t?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.default)("tabs",{"tabs--block":n},t)},s.map((e=>{let{value:t,label:n,attributes:i}=e;return r.createElement("li",(0,a.Z)({role:"tab",tabIndex:l===t?0:-1,"aria-selected":l===t,key:t,ref:e=>p.push(e),onKeyDown:m,onClick:k},i,{className:(0,o.default)("tabs__item",d.tabItem,i?.className,{"tabs__item--active":l===t})}),n??t)})))}function p(e){let{lazy:t,children:n,selectedValue:a}=e;const o=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=o.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},o.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==a}))))}function c(e){const t=(0,l.Y)(e);return r.createElement("div",{className:(0,o.default)("tabs-container",d.tabList)},r.createElement(s,(0,a.Z)({},e,t)),r.createElement(p,(0,a.Z)({},e,t)))}function k(e){const t=(0,u.default)();return r.createElement(c,(0,a.Z)({key:String(t)},e))}},89472:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>u,default:()=>m,frontMatter:()=>l,metadata:()=>d,toc:()=>p});var a=n(87462),r=(n(67294),n(3905)),o=n(65488),i=n(85162);const l={title:"Run a Nwaku Node",hide_table_of_contents:!0},u=void 0,d={unversionedId:"guides/nwaku/run-node",id:"guides/nwaku/run-node",title:"Run a Nwaku Node",description:"Nwaku is a lightweight and robust Nim client for running a Waku node, equipped with tools to monitor and maintain a running node. Nwaku is highly configurable, enabling operators to select the protocols they want to support based on their needs, motivations, and available resources.",source:"@site/docs/guides/nwaku/run-node.md",sourceDirName:"guides/nwaku",slug:"/guides/nwaku/run-node",permalink:"/guides/nwaku/run-node",draft:!1,editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/docs/guides/nwaku/run-node.md",tags:[],version:"current",lastUpdatedAt:1715880135,formattedLastUpdatedAt:"16 May 2024",frontMatter:{title:"Run a Nwaku Node",hide_table_of_contents:!0},sidebar:"guides",previous:{title:"Introduction to Waku",permalink:"/"},next:{title:"Run Nwaku with Docker Compose",permalink:"/guides/nwaku/run-docker-compose"}},s={},p=[{value:"Get the node binary",id:"get-the-node-binary",level:2},{value:"Run nwaku in Docker (recommended)",id:"run-nwaku-in-docker-recommended",level:4},{value:"Download the binary",id:"download-the-binary",level:4},{value:"Build the binary",id:"build-the-binary",level:4},{value:"Run the node",id:"run-the-node",level:2},{value:"Bootstrap the node",id:"bootstrap-the-node",level:2},{value:"Interact with the node",id:"interact-with-the-node",level:2},{value:"Check the node health status",id:"check-the-node-health-status",level:2}],c={toc:p},k="wrapper";function m(e){let{components:t,...l}=e;return(0,r.kt)(k,(0,a.Z)({},c,l,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Nwaku is a lightweight and robust Nim client for running a Waku node, equipped with tools to monitor and maintain a running node. Nwaku is highly configurable, enabling operators to select the ",(0,r.kt)("a",{parentName:"p",href:"/learn/concepts/protocols"},"protocols")," they want to support based on their needs, motivations, and available resources."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"waku architecture",src:n(13401).Z,width:"1376",height:"1083"})),(0,r.kt)("p",null,"This guide provides detailed steps to download, build, configure, and connect a ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," node to the Waku Network. It also includes interacting with the node and finding its addresses."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"We recommend running a ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," node with at least 2GB of RAM, especially if ",(0,r.kt)("inlineCode",{parentName:"p"},"WSS")," is enabled. If running just a ",(0,r.kt)("inlineCode",{parentName:"p"},"Relay")," node, 0.5GB of RAM is sufficient.")),(0,r.kt)("h2",{id:"get-the-node-binary"},"Get the node binary"),(0,r.kt)("p",null,"To run a node, you must have the ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," binary. Nwaku provides multiple options for running a node:"),(0,r.kt)("h4",{id:"run-nwaku-in-docker-recommended"},"Run nwaku in Docker (recommended)"),(0,r.kt)("p",null,"We recommend ",(0,r.kt)("a",{parentName:"p",href:"/guides/nwaku/run-docker-compose"},"using Docker Compose")," to run a node because it's the simplest and fastest way to configure and run one:"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null}),(0,r.kt)("th",{parentName:"tr",align:null},"Description"),(0,r.kt)("th",{parentName:"tr",align:null},"Documentation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Docker Compose"),(0,r.kt)("td",{parentName:"tr",align:null},"Run a ",(0,r.kt)("inlineCode",{parentName:"td"},"nwaku")," node with Docker Compose"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/guides/nwaku/run-docker-compose"},"Run Nwaku with Docker Compose"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Docker Container"),(0,r.kt)("td",{parentName:"tr",align:null},"Run a ",(0,r.kt)("inlineCode",{parentName:"td"},"nwaku")," node in a Docker Container"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/guides/nwaku/run-docker"},"Run Nwaku in a Docker Container"))))),(0,r.kt)("h4",{id:"download-the-binary"},"Download the binary"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null}),(0,r.kt)("th",{parentName:"tr",align:null},"Description"),(0,r.kt)("th",{parentName:"tr",align:null},"Documentation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Precompiled Binary"),(0,r.kt)("td",{parentName:"tr",align:null},"Download a precompiled binary of the ",(0,r.kt)("inlineCode",{parentName:"td"},"nwaku")," node"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"https://github.com/waku-org/nwaku/tags"},"Download Nwaku Binary"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Nightly Release"),(0,r.kt)("td",{parentName:"tr",align:null},"Try the latest ",(0,r.kt)("inlineCode",{parentName:"td"},"nwaku")," updates without compiling the binaries"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"https://github.com/waku-org/nwaku/releases/tag/nightly"},"Download Nightly Release"))))),(0,r.kt)("h4",{id:"build-the-binary"},"Build the binary"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null}),(0,r.kt)("th",{parentName:"tr",align:null},"Description"),(0,r.kt)("th",{parentName:"tr",align:null},"Documentation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Build from Source"),(0,r.kt)("td",{parentName:"tr",align:null},"Build the node from the ",(0,r.kt)("a",{parentName:"td",href:"https://github.com/waku-org/nwaku"},"nwaku source code")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/guides/nwaku/build-source"},"Build Nwaku from Source"))))),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"You can run the ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," binaries and Docker images on cloud service providers like ",(0,r.kt)("a",{parentName:"p",href:"https://cloud.google.com/"},"Google Cloud"),", ",(0,r.kt)("a",{parentName:"p",href:"https://azure.microsoft.com/"},"Microsoft Azure"),", ",(0,r.kt)("a",{parentName:"p",href:"https://aws.amazon.com/"},"Amazon Web Services"),", and ",(0,r.kt)("a",{parentName:"p",href:"https://www.digitalocean.com/"},"DigitalOcean"),".")),(0,r.kt)("h2",{id:"run-the-node"},"Run the node"),(0,r.kt)("p",null,"Once you have gotten the ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," binary, run it using the ",(0,r.kt)("a",{parentName:"p",href:"/guides/nwaku/config-methods#default-configuration-values"},"default configuration"),":"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"# Run the Docker Compose\ndocker-compose up -d\n\n# Run the standalone binary\n./build/wakunode2\n")),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"To learn how to customise the configuration of a ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," node, have a look at the ",(0,r.kt)("a",{parentName:"p",href:"/guides/nwaku/config-methods"},"Node Configuration Methods")," and ",(0,r.kt)("a",{parentName:"p",href:"/guides/nwaku/configure-nwaku"},"Node Configuration Examples")," guides.")),(0,r.kt)("h2",{id:"bootstrap-the-node"},"Bootstrap the node"),(0,r.kt)("p",null,"To join the Waku Network, nodes must ",(0,r.kt)("a",{parentName:"p",href:"/learn/glossary#bootstrapping"},"bootstrap")," for an entry point before discovering more peers. Nwaku provides multiple ",(0,r.kt)("a",{parentName:"p",href:"/learn/concepts/peer-discovery"},"peer discovery")," mechanisms:"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null}),(0,r.kt)("th",{parentName:"tr",align:null},"Description"),(0,r.kt)("th",{parentName:"tr",align:null},"Documentation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Static Peers"),(0,r.kt)("td",{parentName:"tr",align:null},"Configure the bootstrap nodes that ",(0,r.kt)("inlineCode",{parentName:"td"},"nwaku")," should establish connections upon startup"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/guides/nwaku/configure-discovery#configure-static-peers"},"Configure Static Peers"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"DNS Discovery"),(0,r.kt)("td",{parentName:"tr",align:null},"Enable ",(0,r.kt)("inlineCode",{parentName:"td"},"nwaku")," to bootstrap nodes using the ",(0,r.kt)("a",{parentName:"td",href:"/learn/concepts/dns-discovery"},"DNS Discovery")," mechanism"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/guides/nwaku/configure-discovery#configure-dns-discovery"},"Configure DNS Discovery"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Discv5"),(0,r.kt)("td",{parentName:"tr",align:null},"Enable ",(0,r.kt)("inlineCode",{parentName:"td"},"nwaku")," to discover peers using the ",(0,r.kt)("a",{parentName:"td",href:"/learn/concepts/discv5"},"Discv5")," mechanism"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/guides/nwaku/configure-discovery#configure-discv5"},"Configure Discv5"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Peer Exchange"),(0,r.kt)("td",{parentName:"tr",align:null},"Enable ",(0,r.kt)("a",{parentName:"td",href:"/learn/concepts/peer-exchange"},"Peer Exchange")," protocol for light nodes to request peers from your ",(0,r.kt)("inlineCode",{parentName:"td"},"nwaku")," node"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/guides/nwaku/configure-discovery#configure-peer-exchange"},"Configure Peer Exchange"))))),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"We suggest ",(0,r.kt)("a",{parentName:"p",href:"/guides/nwaku/configure-nwaku#configure-websocket-transport"},"configuring WebSocket transport")," for your node to enable support and serving of browser peers using ",(0,r.kt)("a",{parentName:"p",href:"/guides/js-waku/"},"@waku/sdk"),".")),(0,r.kt)("h2",{id:"interact-with-the-node"},"Interact with the node"),(0,r.kt)("p",null,"You can interact with a running ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," node through the ",(0,r.kt)("a",{parentName:"p",href:"https://waku-org.github.io/waku-rest-api/"},"REST API"),", such as querying the node information using the ",(0,r.kt)("a",{parentName:"p",href:"https://waku-org.github.io/waku-rest-api/#get-/debug/v1/info"},"Get node info")," endpoint:"),(0,r.kt)(o.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"curl --location 'http://127.0.0.1:8645/debug/v1/info' \\\n--header 'Accept: application/json'\n"))),(0,r.kt)(i.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "listenAddresses": [\n "/ip4/0.0.0.0/tcp/60000/p2p/16Uiu2HAmUbPquFQqje3jiqoB5YoiUbBya59NB4qqEzeiTNGHeA6w"\n ],\n "enrUri": "enr:-Iu4QCQZXZDb_JsYmLoYor0F5E_95HbIywgO_wgx2rIdDbmCJZkTzmlCr0wmMzV47lgik_tVwww5mIng90Ris83TisMBgmlkgnY0gmlwhAAAAACJc2VjcDI1NmsxoQPszztG-Ev52ZB7tk0jF8s6Md4KvyY_rhzNZokaaB_ABIN0Y3CC6mCFd2FrdTIB"\n}\n')))),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"The ",(0,r.kt)("inlineCode",{parentName:"p"},"listenAddresses")," field stores the node's listening addresses, while the ",(0,r.kt)("inlineCode",{parentName:"p"},"enrUri")," field stores the discoverable ",(0,r.kt)("inlineCode",{parentName:"p"},"ENR")," URI for peer discovery.")),(0,r.kt)("h2",{id:"check-the-node-health-status"},"Check the node health status"),(0,r.kt)("p",null,"You can check the health status of the node by calling the ",(0,r.kt)("a",{parentName:"p",href:"https://waku-org.github.io/waku-rest-api/#get-/health"},"Get node health status")," endpoint of the ",(0,r.kt)("a",{parentName:"p",href:"https://waku-org.github.io/waku-rest-api/"},"REST API"),":"),(0,r.kt)(o.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"curl --location 'http://127.0.0.1:8645/health' \\\n--header 'Accept: text/plain'\n"))),(0,r.kt)(i.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-txt"},"Node is healthy\n")))),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"If you encounter issues running your node or require assistance with anything, please visit the ",(0,r.kt)("a",{parentName:"p",href:"https://discord.com/channels/1110799176264056863/1216748184592711691"},"#node-help channel")," on our Discord.")),(0,r.kt)("admonition",{title:"Congratulations!",type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"You have successfully started, configured, and connected a ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," node to the Waku Network. Have a look at the ",(0,r.kt)("a",{parentName:"p",href:"/guides/nwaku/configure-nwaku"},"Node Configuration Examples")," guide to learn how to configure ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," for different use cases.")))}m.isMDXComponent=!0},13401:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/architecture-c96184127d80feae83e3f85471c5112a.png"}}]); \ No newline at end of file diff --git a/assets/js/4aba8864.2a78a1c0.js b/assets/js/4aba8864.2a78a1c0.js deleted file mode 100644 index fe6e93a..0000000 --- a/assets/js/4aba8864.2a78a1c0.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[357],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>k});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var l=r.createContext({}),p=function(e){var t=r.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},c=function(e){var t=p(e.components);return r.createElement(l.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),d=p(a),h=n,k=d["".concat(l,".").concat(h)]||d[h]||u[h]||o;return a?r.createElement(k,i(i({ref:t},c),{},{components:a})):r.createElement(k,i({ref:t},c))}));function k(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[d]="string"==typeof e?e:n,i[1]=s;for(var p=2;p{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>s,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const o={title:"Glossary",hide_table_of_contents:!0},i="Waku Docs Glossary",s={unversionedId:"learn/glossary",id:"learn/glossary",title:"Glossary",description:"Definitions and usage of the terminology used in the Waku ecosystem.",source:"@site/docs/learn/glossary.md",sourceDirName:"learn",slug:"/learn/glossary",permalink:"/learn/glossary",draft:!1,editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/docs/learn/glossary.md",tags:[],version:"current",lastUpdatedAt:1704966176,formattedLastUpdatedAt:"11 Jan 2024",frontMatter:{title:"Glossary",hide_table_of_contents:!0},sidebar:"learn",previous:{title:"Comparing Waku and libp2p",permalink:"/learn/waku-vs-libp2p"},next:{title:"Frequently Asked Questions",permalink:"/learn/faq"}},l={},p=[{value:"Bootstrapping",id:"bootstrapping",level:3},{value:"Content topic",id:"content-topic",level:3},{value:"Dappnode",id:"dappnode",level:3},{value:"Discv5",id:"discv5",level:3},{value:"DNS discovery",id:"dns-discovery",level:3},{value:"ENR",id:"enr",level:3},{value:"Filter",id:"filter",level:3},{value:"GossipSub",id:"gossipsub",level:3},{value:"Libp2p",id:"libp2p",level:3},{value:"Light node",id:"light-node",level:3},{value:"Light push",id:"light-push",level:3},{value:"Mostly offline",id:"mostly-offline",level:3},{value:"Node",id:"node",level:3},{value:"Node key",id:"node-key",level:3},{value:"Out-of-band",id:"out-of-band",level:3},{value:"Payload",id:"payload",level:3},{value:"Peer",id:"peer",level:3},{value:"Peer discovery",id:"peer-discovery",level:3},{value:"Peer exchange",id:"peer-exchange",level:3},{value:"Peer ID",id:"peer-id",level:3},{value:"Protocol",id:"protocol",level:3},{value:"Pub/Sub",id:"pubsub",level:3},{value:"Pub/Sub topic",id:"pubsub-topic",level:3},{value:"Rate limit nullifiers",id:"rate-limit-nullifiers",level:3},{value:"Relay",id:"relay",level:3},{value:"Resource-limited",id:"resource-limited",level:3},{value:"RLN relay",id:"rln-relay",level:3},{value:"SDK",id:"sdk",level:3},{value:"Store",id:"store",level:3},{value:"Transport",id:"transport",level:3},{value:"Waku",id:"waku",level:3},{value:"Waku message",id:"waku-message",level:3},{value:"Waku message payload encryption",id:"waku-message-payload-encryption",level:3},{value:"Waku network",id:"waku-network",level:3},{value:"Waku noise",id:"waku-noise",level:3}],c={toc:p},d="wrapper";function u(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,r.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"waku-docs-glossary"},"Waku Docs Glossary"),(0,n.kt)("p",null,"Definitions and usage of the terminology used in the Waku ecosystem."),(0,n.kt)("h3",{id:"bootstrapping"},"Bootstrapping"),(0,n.kt)("p",null,"Bootstrapping is the initial entry point of a ",(0,n.kt)("a",{parentName:"p",href:"#node"},"node")," to the ",(0,n.kt)("a",{parentName:"p",href:"#waku-network"},"Waku Network"),". Once connected, other ",(0,n.kt)("a",{parentName:"p",href:"#peer-discovery"},"peer discovery")," methods can be employed to locate other ",(0,n.kt)("a",{parentName:"p",href:"#peer"},"peers")," in the network."),(0,n.kt)("h3",{id:"content-topic"},(0,n.kt)("a",{parentName:"h3",href:"/learn/concepts/content-topics"},"Content topic")),(0,n.kt)("p",null,"A content topic is a string attached to ",(0,n.kt)("a",{parentName:"p",href:"#waku-message"},"messages")," to enable ",(0,n.kt)("a",{parentName:"p",href:"#protocol"},"protocol-level")," features like selective message processing and retrieval based on specific criteria."),(0,n.kt)("h3",{id:"dappnode"},(0,n.kt)("a",{parentName:"h3",href:"https://dappnode.com/"},"Dappnode")),(0,n.kt)("p",null,"Dappnode is an open-source platform that simplifies the hosting and management of decentralised applications and blockchain nodes, including ",(0,n.kt)("a",{parentName:"p",href:"#waku"},"Waku"),"."),(0,n.kt)("h3",{id:"discv5"},(0,n.kt)("a",{parentName:"h3",href:"/learn/concepts/discv5"},"Discv5")),(0,n.kt)("p",null,"Discv5 is a ",(0,n.kt)("a",{parentName:"p",href:"#peer-discovery"},"peer discovery")," mechanism using a Distributed Hash Table (DHT) to store ",(0,n.kt)("a",{parentName:"p",href:"#enr"},"ENR")," records, providing censorship resistance, load distribution, and enhanced network resilience."),(0,n.kt)("h3",{id:"dns-discovery"},(0,n.kt)("a",{parentName:"h3",href:"/learn/concepts/dns-discovery"},"DNS discovery")),(0,n.kt)("p",null,"DNS discovery is a ",(0,n.kt)("a",{parentName:"p",href:"#peer-discovery"},"peer discovery")," mechanism that allows the retrieval of an ",(0,n.kt)("a",{parentName:"p",href:"#enr"},"ENR")," tree from the TXT field of a domain name, enabling the storage of ",(0,n.kt)("a",{parentName:"p",href:"#node"},"node")," connection details and promoting decentralisation."),(0,n.kt)("h3",{id:"enr"},(0,n.kt)("a",{parentName:"h3",href:"https://rfc.vac.dev/spec/31/"},"ENR")),(0,n.kt)("p",null,"Ethereum Node Record (ENR) is a specification used to represent and identify ",(0,n.kt)("a",{parentName:"p",href:"#node"},"nodes"),", facilitating ",(0,n.kt)("a",{parentName:"p",href:"#peer-discovery"},"discovery")," and communication within the network. Besides connection details, ",(0,n.kt)("inlineCode",{parentName:"p"},"ENR")," also includes node configuration information like enabled protocol and shards."),(0,n.kt)("h3",{id:"filter"},(0,n.kt)("a",{parentName:"h3",href:"/learn/concepts/protocols#filter"},"Filter")),(0,n.kt)("p",null,"Filter is a ",(0,n.kt)("a",{parentName:"p",href:"#protocol"},"protocol")," that enables ",(0,n.kt)("a",{parentName:"p",href:"#light-node"},"light nodes")," to selectively subscribe to specific ",(0,n.kt)("a",{parentName:"p",href:"#waku-message"},"messages")," transmitted by ",(0,n.kt)("a",{parentName:"p",href:"#peer"},"peers")," using ",(0,n.kt)("a",{parentName:"p",href:"#content-topic"},"content topics"),". It is designed to be a lightweight alternative for accessing the ",(0,n.kt)("a",{parentName:"p",href:"#relay"},"Relay")," network."),(0,n.kt)("h3",{id:"gossipsub"},(0,n.kt)("a",{parentName:"h3",href:"/learn/concepts/network-domains#gossip-domain"},"GossipSub")),(0,n.kt)("p",null,"GossipSub is a ",(0,n.kt)("a",{parentName:"p",href:"#protocol"},"protocol")," for efficient and scalable information dissemination in decentralised networks commonly used in blockchain systems."),(0,n.kt)("h3",{id:"libp2p"},(0,n.kt)("a",{parentName:"h3",href:"https://libp2p.io/"},"Libp2p")),(0,n.kt)("p",null,"Libp2p is a modular network stack and protocol suite that allows developers to build decentralised, peer-to-peer applications across various network protocols."),(0,n.kt)("h3",{id:"light-node"},"Light node"),(0,n.kt)("p",null,"A light node is a ",(0,n.kt)("a",{parentName:"p",href:"#resource-limited"},"resource-limited")," device or client that leverages service nodes to access the ",(0,n.kt)("a",{parentName:"p",href:"#relay"},"Relay")," network."),(0,n.kt)("h3",{id:"light-push"},(0,n.kt)("a",{parentName:"h3",href:"/learn/concepts/protocols#light-push"},"Light push")),(0,n.kt)("p",null,"Light push is a protocol enabling ",(0,n.kt)("a",{parentName:"p",href:"#light-node"},"light nodes")," to send ",(0,n.kt)("a",{parentName:"p",href:"#waku-message"},"messages")," to the ",(0,n.kt)("a",{parentName:"p",href:"#relay"},"Relay")," network and receive acknowledgements confirming that a ",(0,n.kt)("a",{parentName:"p",href:"#peer"},"peer")," has received them."),(0,n.kt)("h3",{id:"mostly-offline"},"Mostly offline"),(0,n.kt)("p",null,"Mostly offline devices are clients who spend most of their time offline or disconnected from the internet and only occasionally to the internet and ",(0,n.kt)("a",{parentName:"p",href:"#waku-network"},"Waku Network"),". Examples include browsers and mobile phones."),(0,n.kt)("h3",{id:"node"},"Node"),(0,n.kt)("p",null,"A node is a device or client that implements Waku ",(0,n.kt)("a",{parentName:"p",href:"#protocol"},"protocols")," and leverages the ",(0,n.kt)("a",{parentName:"p",href:"#waku-network"},"Waku Network")," to enable secure and private peer-to-peer web3 communication."),(0,n.kt)("h3",{id:"node-key"},"Node key"),(0,n.kt)("p",null,"A node key is a ",(0,n.kt)("a",{parentName:"p",href:"https://en.bitcoin.it/wiki/Secp256k1"},"Secp256k1")," (64-char hex string) private key for generating the ",(0,n.kt)("a",{parentName:"p",href:"#peer-id"},"PeerID"),", ",(0,n.kt)("a",{parentName:"p",href:"#transport"},"listening")," addresses, and ",(0,n.kt)("a",{parentName:"p",href:"#peer-discovery"},"discovery")," addresses of a Waku node."),(0,n.kt)("h3",{id:"out-of-band"},"Out-of-band"),(0,n.kt)("p",null,"Out-of-band refers to exchanging information through a separate, secure channel distinct from the main communication method to enhance security."),(0,n.kt)("h3",{id:"payload"},"Payload"),(0,n.kt)("p",null,"The payload field in a ",(0,n.kt)("a",{parentName:"p",href:"#waku-message"},"Waku Message")," contains the application data, serving as the business logic message transmitted between clients over Waku. Applications can encrypt the payload or employ encryption methods specified in ",(0,n.kt)("a",{parentName:"p",href:"#waku-message-payload-encryption"},"Waku Message Payload Encryption"),"."),(0,n.kt)("h3",{id:"peer"},"Peer"),(0,n.kt)("p",null,"A peer refers to other ",(0,n.kt)("a",{parentName:"p",href:"#node"},"nodes")," and participants of the ",(0,n.kt)("a",{parentName:"p",href:"#waku-network"},"Waku Network")," with whom communication and interaction are possible."),(0,n.kt)("h3",{id:"peer-discovery"},(0,n.kt)("a",{parentName:"h3",href:"/learn/concepts/peer-discovery"},"Peer discovery")),(0,n.kt)("p",null,"Peer discovery is when a ",(0,n.kt)("a",{parentName:"p",href:"#node"},"node")," locates and gets information about other ",(0,n.kt)("a",{parentName:"p",href:"#peer"},"peers")," in the ",(0,n.kt)("a",{parentName:"p",href:"#waku-network"},"Waku Network"),"."),(0,n.kt)("h3",{id:"peer-exchange"},(0,n.kt)("a",{parentName:"h3",href:"/learn/concepts/peer-exchange"},"Peer exchange")),(0,n.kt)("p",null,"Peer exchange is a ",(0,n.kt)("a",{parentName:"p",href:"#peer-discovery"},"peer discovery")," mechanism that enables ",(0,n.kt)("a",{parentName:"p",href:"#light-node"},"light nodes")," to request and receive peers from other nodes in the network, allowing them to bootstrap and expand their connections without depending on ",(0,n.kt)("a",{parentName:"p",href:"#discv5"},"Discv5"),"."),(0,n.kt)("h3",{id:"peer-id"},"Peer ID"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"PeerID")," is the unique identifier of a ",(0,n.kt)("a",{parentName:"p",href:"#node"},"node")," in the ",(0,n.kt)("a",{parentName:"p",href:"#waku-network"},"Waku Network")," generated from the cryptographic hash of the node's public key."),(0,n.kt)("h3",{id:"protocol"},(0,n.kt)("a",{parentName:"h3",href:"/learn/concepts/protocols"},"Protocol")),(0,n.kt)("p",null,"A protocol is a set of rules that enables ",(0,n.kt)("a",{parentName:"p",href:"#node"},"nodes")," within the ",(0,n.kt)("a",{parentName:"p",href:"#waku-network"},"Waku Network")," to perform various functionalities such as message sending, relaying, filtering, storing, retrieving, and more."),(0,n.kt)("h3",{id:"pubsub"},"Pub/Sub"),(0,n.kt)("p",null,"Publish/Subscribe (Pub/Sub) is an asynchronous messaging pattern where publishers send messages to topics, and subscribers receive messages from topics of interest, allowing efficient one-to-many communication."),(0,n.kt)("h3",{id:"pubsub-topic"},"Pub/Sub topic"),(0,n.kt)("p",null,"A Pub/Sub topic is a string that serves as an identifier for the topic of interest among ",(0,n.kt)("a",{parentName:"p",href:"#gossipsub"},"GossipSub")," peers. Peers interested in the same topic are likely to maintain a connection and forward messages received on that topic."),(0,n.kt)("h3",{id:"rate-limit-nullifiers"},(0,n.kt)("a",{parentName:"h3",href:"https://rfc.vac.dev/spec/64/#rln-rate-limiting"},"Rate limit nullifiers")),(0,n.kt)("p",null,"Rate Limit Nullifiers (RLN) are a construct based on zero-knowledge proofs that enables rate limiting functionality while preserving the users's anonymity."),(0,n.kt)("h3",{id:"relay"},(0,n.kt)("a",{parentName:"h3",href:"/learn/concepts/protocols#relay"},"Relay")),(0,n.kt)("p",null,"Relay is a ",(0,n.kt)("a",{parentName:"p",href:"#protocol"},"protocol")," that extends the ",(0,n.kt)("a",{parentName:"p",href:"#gossipsub"},"GossipSub protocol")," to enable secure and censorship resistant ",(0,n.kt)("a",{parentName:"p",href:"#waku-message"},"message")," sending and receiving among ",(0,n.kt)("a",{parentName:"p",href:"#peer"},"peers")," while preserving privacy. It also scales the ",(0,n.kt)("a",{parentName:"p",href:"#waku-network"},"Waku Network")," to accommodate many nodes efficiently."),(0,n.kt)("h3",{id:"resource-limited"},"Resource-limited"),(0,n.kt)("p",null,"Resource-limited refers to environments or devices restricting available resources, including bandwidth, CPU, memory, disk, and battery power."),(0,n.kt)("h3",{id:"rln-relay"},(0,n.kt)("a",{parentName:"h3",href:"/learn/concepts/protocols#rln-relay"},"RLN relay")),(0,n.kt)("p",null,"RLN Relay is an extension of the ",(0,n.kt)("a",{parentName:"p",href:"#relay"},"Relay protocol")," that uses ",(0,n.kt)("a",{parentName:"p",href:"#rate-limit-nullifiers"},"Rate Limit Nullifiers (RLN)")," to prevent spam economically by enforcing a rate limit on messages over time, imposing penalties, and facilitating network removal for spammers."),(0,n.kt)("h3",{id:"sdk"},(0,n.kt)("a",{parentName:"h3",href:"/"},"SDK")),(0,n.kt)("p",null,"SDKs are tools, libraries, and resources to integrate Waku's private, secure, and censorship-free communication features into various applications."),(0,n.kt)("h3",{id:"store"},(0,n.kt)("a",{parentName:"h3",href:"/learn/concepts/protocols#store"},"Store")),(0,n.kt)("p",null,"Store is a ",(0,n.kt)("a",{parentName:"p",href:"#protocol"},"protocol")," that enables the storage of relayed ",(0,n.kt)("a",{parentName:"p",href:"#waku-message"},"messages")," in the network, allowing offline peers to retrieve missed messages upon reconnecting to the network."),(0,n.kt)("h3",{id:"transport"},(0,n.kt)("a",{parentName:"h3",href:"/learn/concepts/transports"},"Transport")),(0,n.kt)("p",null,"A transport is a network mechanism that establishes connections between ",(0,n.kt)("a",{parentName:"p",href:"#peer"},"peers")," and enables efficient transmission, routing, and delivery of data packets."),(0,n.kt)("h3",{id:"waku"},"Waku"),(0,n.kt)("p",null,"Waku is a family of private, secure, decentralised, and peer-to-peer web3 communication ",(0,n.kt)("a",{parentName:"p",href:"#protocol"},"protocols")," designed to operate in ",(0,n.kt)("a",{parentName:"p",href:"#resource-limited"},"resource-limited")," environments and suitable for ",(0,n.kt)("a",{parentName:"p",href:"#node"},"node")," or desktop application use. Additionally, these protocols collectively form the ",(0,n.kt)("a",{parentName:"p",href:"#waku-network"},"Waku Network"),"."),(0,n.kt)("h3",{id:"waku-message"},(0,n.kt)("a",{parentName:"h3",href:"/learn/concepts/protocols#waku-message"},"Waku message")),(0,n.kt)("p",null,"Waku Message defines the structure of messages in the ",(0,n.kt)("a",{parentName:"p",href:"#waku-network"},"Waku Network"),", including the ",(0,n.kt)("a",{parentName:"p",href:"#content-topic"},"content topic"),", ",(0,n.kt)("a",{parentName:"p",href:"#payload"},"payload"),", and metadata for application-specific processing."),(0,n.kt)("h3",{id:"waku-message-payload-encryption"},(0,n.kt)("a",{parentName:"h3",href:"https://rfc.vac.dev/spec/26/"},"Waku message payload encryption")),(0,n.kt)("p",null,"Waku Message Payload Encryption provides guidelines for implementing secure and private communication in the ",(0,n.kt)("a",{parentName:"p",href:"#waku-network"},"Waku Network"),". It covers encryption, decryption, and signing methods for message ",(0,n.kt)("a",{parentName:"p",href:"#payload"},"payloads"),", focusing on confidentiality, authenticity, integrity, and unlinkability."),(0,n.kt)("h3",{id:"waku-network"},(0,n.kt)("a",{parentName:"h3",href:"/learn/waku-network"},"Waku network")),(0,n.kt)("p",null,"The Waku Network is an open-access, scalable peer-to-peer messaging network emphasizing privacy protection and accessibility to ",(0,n.kt)("a",{parentName:"p",href:"#resource-limited"},"resource limited")," devices."),(0,n.kt)("h3",{id:"waku-noise"},(0,n.kt)("a",{parentName:"h3",href:"https://rfc.vac.dev/spec/35/"},"Waku noise")),(0,n.kt)("p",null,"Waku Noise is a specified way to use the ",(0,n.kt)("a",{parentName:"p",href:"http://noiseprotocol.org/"},"Noise Protocol Framework")," to build protocols that enable secure key-exchange mechanisms for encrypted communication with confidentiality, authenticity, integrity, strong forward secrecy, and identity-hiding properties."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4aba8864.449560fb.js b/assets/js/4aba8864.449560fb.js new file mode 100644 index 0000000..065c171 --- /dev/null +++ b/assets/js/4aba8864.449560fb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[357],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>k});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var l=r.createContext({}),p=function(e){var t=r.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},c=function(e){var t=p(e.components);return r.createElement(l.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),d=p(a),h=n,k=d["".concat(l,".").concat(h)]||d[h]||u[h]||o;return a?r.createElement(k,i(i({ref:t},c),{},{components:a})):r.createElement(k,i({ref:t},c))}));function k(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[d]="string"==typeof e?e:n,i[1]=s;for(var p=2;p{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>s,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const o={title:"Glossary",hide_table_of_contents:!0},i="Waku Docs Glossary",s={unversionedId:"learn/glossary",id:"learn/glossary",title:"Glossary",description:"Definitions and usage of the terminology used in the Waku ecosystem.",source:"@site/docs/learn/glossary.md",sourceDirName:"learn",slug:"/learn/glossary",permalink:"/learn/glossary",draft:!1,editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/docs/learn/glossary.md",tags:[],version:"current",lastUpdatedAt:1715880135,formattedLastUpdatedAt:"16 May 2024",frontMatter:{title:"Glossary",hide_table_of_contents:!0},sidebar:"learn",previous:{title:"Comparing Waku and libp2p",permalink:"/learn/waku-vs-libp2p"},next:{title:"Frequently Asked Questions",permalink:"/learn/faq"}},l={},p=[{value:"Bootstrapping",id:"bootstrapping",level:3},{value:"Content topic",id:"content-topic",level:3},{value:"Dappnode",id:"dappnode",level:3},{value:"Discv5",id:"discv5",level:3},{value:"DNS discovery",id:"dns-discovery",level:3},{value:"ENR",id:"enr",level:3},{value:"Filter",id:"filter",level:3},{value:"GossipSub",id:"gossipsub",level:3},{value:"Libp2p",id:"libp2p",level:3},{value:"Light node",id:"light-node",level:3},{value:"Light push",id:"light-push",level:3},{value:"Mostly offline",id:"mostly-offline",level:3},{value:"Node",id:"node",level:3},{value:"Node key",id:"node-key",level:3},{value:"Out-of-band",id:"out-of-band",level:3},{value:"Payload",id:"payload",level:3},{value:"Peer",id:"peer",level:3},{value:"Peer discovery",id:"peer-discovery",level:3},{value:"Peer exchange",id:"peer-exchange",level:3},{value:"Peer ID",id:"peer-id",level:3},{value:"Protocol",id:"protocol",level:3},{value:"Pub/Sub",id:"pubsub",level:3},{value:"Pub/Sub topic",id:"pubsub-topic",level:3},{value:"Rate limit nullifiers",id:"rate-limit-nullifiers",level:3},{value:"Relay",id:"relay",level:3},{value:"Resource-limited",id:"resource-limited",level:3},{value:"RLN relay",id:"rln-relay",level:3},{value:"SDK",id:"sdk",level:3},{value:"Store",id:"store",level:3},{value:"Transport",id:"transport",level:3},{value:"Waku",id:"waku",level:3},{value:"Waku message",id:"waku-message",level:3},{value:"Waku message payload encryption",id:"waku-message-payload-encryption",level:3},{value:"Waku network",id:"waku-network",level:3},{value:"Waku noise",id:"waku-noise",level:3}],c={toc:p},d="wrapper";function u(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,r.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"waku-docs-glossary"},"Waku Docs Glossary"),(0,n.kt)("p",null,"Definitions and usage of the terminology used in the Waku ecosystem."),(0,n.kt)("h3",{id:"bootstrapping"},"Bootstrapping"),(0,n.kt)("p",null,"Bootstrapping is the initial entry point of a ",(0,n.kt)("a",{parentName:"p",href:"#node"},"node")," to the ",(0,n.kt)("a",{parentName:"p",href:"#waku-network"},"Waku Network"),". Once connected, other ",(0,n.kt)("a",{parentName:"p",href:"#peer-discovery"},"peer discovery")," methods can be employed to locate other ",(0,n.kt)("a",{parentName:"p",href:"#peer"},"peers")," in the network."),(0,n.kt)("h3",{id:"content-topic"},(0,n.kt)("a",{parentName:"h3",href:"/learn/concepts/content-topics"},"Content topic")),(0,n.kt)("p",null,"A content topic is a string attached to ",(0,n.kt)("a",{parentName:"p",href:"#waku-message"},"messages")," to enable ",(0,n.kt)("a",{parentName:"p",href:"#protocol"},"protocol-level")," features like selective message processing and retrieval based on specific criteria."),(0,n.kt)("h3",{id:"dappnode"},(0,n.kt)("a",{parentName:"h3",href:"https://dappnode.com/"},"Dappnode")),(0,n.kt)("p",null,"Dappnode is an open-source platform that simplifies the hosting and management of decentralised applications and blockchain nodes, including ",(0,n.kt)("a",{parentName:"p",href:"#waku"},"Waku"),"."),(0,n.kt)("h3",{id:"discv5"},(0,n.kt)("a",{parentName:"h3",href:"/learn/concepts/discv5"},"Discv5")),(0,n.kt)("p",null,"Discv5 is a ",(0,n.kt)("a",{parentName:"p",href:"#peer-discovery"},"peer discovery")," mechanism using a Distributed Hash Table (DHT) to store ",(0,n.kt)("a",{parentName:"p",href:"#enr"},"ENR")," records, providing censorship resistance, load distribution, and enhanced network resilience."),(0,n.kt)("h3",{id:"dns-discovery"},(0,n.kt)("a",{parentName:"h3",href:"/learn/concepts/dns-discovery"},"DNS discovery")),(0,n.kt)("p",null,"DNS discovery is a ",(0,n.kt)("a",{parentName:"p",href:"#peer-discovery"},"peer discovery")," mechanism that allows the retrieval of an ",(0,n.kt)("a",{parentName:"p",href:"#enr"},"ENR")," tree from the TXT field of a domain name, enabling the storage of ",(0,n.kt)("a",{parentName:"p",href:"#node"},"node")," connection details and promoting decentralisation."),(0,n.kt)("h3",{id:"enr"},(0,n.kt)("a",{parentName:"h3",href:"https://eips.ethereum.org/EIPS/eip-778"},"ENR")),(0,n.kt)("p",null,"Ethereum Node Record (ENR) is a specification used to represent and identify ",(0,n.kt)("a",{parentName:"p",href:"#node"},"nodes"),", facilitating ",(0,n.kt)("a",{parentName:"p",href:"#peer-discovery"},"discovery")," and communication within the network. Besides connection details, ",(0,n.kt)("inlineCode",{parentName:"p"},"ENR")," also includes node configuration information like enabled protocol and shards."),(0,n.kt)("h3",{id:"filter"},(0,n.kt)("a",{parentName:"h3",href:"/learn/concepts/protocols#filter"},"Filter")),(0,n.kt)("p",null,"Filter is a ",(0,n.kt)("a",{parentName:"p",href:"#protocol"},"protocol")," that enables ",(0,n.kt)("a",{parentName:"p",href:"#light-node"},"light nodes")," to selectively subscribe to specific ",(0,n.kt)("a",{parentName:"p",href:"#waku-message"},"messages")," transmitted by ",(0,n.kt)("a",{parentName:"p",href:"#peer"},"peers")," using ",(0,n.kt)("a",{parentName:"p",href:"#content-topic"},"content topics"),". It is designed to be a lightweight alternative for accessing the ",(0,n.kt)("a",{parentName:"p",href:"#relay"},"Relay")," network."),(0,n.kt)("h3",{id:"gossipsub"},(0,n.kt)("a",{parentName:"h3",href:"/learn/concepts/network-domains#gossip-domain"},"GossipSub")),(0,n.kt)("p",null,"GossipSub is a ",(0,n.kt)("a",{parentName:"p",href:"#protocol"},"protocol")," for efficient and scalable information dissemination in decentralised networks commonly used in blockchain systems."),(0,n.kt)("h3",{id:"libp2p"},(0,n.kt)("a",{parentName:"h3",href:"https://libp2p.io/"},"Libp2p")),(0,n.kt)("p",null,"Libp2p is a modular network stack and protocol suite that allows developers to build decentralised, peer-to-peer applications across various network protocols."),(0,n.kt)("h3",{id:"light-node"},"Light node"),(0,n.kt)("p",null,"A light node is a ",(0,n.kt)("a",{parentName:"p",href:"#resource-limited"},"resource-limited")," device or client that leverages service nodes to access the ",(0,n.kt)("a",{parentName:"p",href:"#relay"},"Relay")," network."),(0,n.kt)("h3",{id:"light-push"},(0,n.kt)("a",{parentName:"h3",href:"/learn/concepts/protocols#light-push"},"Light push")),(0,n.kt)("p",null,"Light push is a protocol enabling ",(0,n.kt)("a",{parentName:"p",href:"#light-node"},"light nodes")," to send ",(0,n.kt)("a",{parentName:"p",href:"#waku-message"},"messages")," to the ",(0,n.kt)("a",{parentName:"p",href:"#relay"},"Relay")," network and receive acknowledgements confirming that a ",(0,n.kt)("a",{parentName:"p",href:"#peer"},"peer")," has received them."),(0,n.kt)("h3",{id:"mostly-offline"},"Mostly offline"),(0,n.kt)("p",null,"Mostly offline devices are clients who spend most of their time offline or disconnected from the internet and only occasionally to the internet and ",(0,n.kt)("a",{parentName:"p",href:"#waku-network"},"Waku Network"),". Examples include browsers and mobile phones."),(0,n.kt)("h3",{id:"node"},"Node"),(0,n.kt)("p",null,"A node is a device or client that implements Waku ",(0,n.kt)("a",{parentName:"p",href:"#protocol"},"protocols")," and leverages the ",(0,n.kt)("a",{parentName:"p",href:"#waku-network"},"Waku Network")," to enable secure and private peer-to-peer web3 communication."),(0,n.kt)("h3",{id:"node-key"},"Node key"),(0,n.kt)("p",null,"A node key is a ",(0,n.kt)("a",{parentName:"p",href:"https://en.bitcoin.it/wiki/Secp256k1"},"Secp256k1")," (64-char hex string) private key for generating the ",(0,n.kt)("a",{parentName:"p",href:"#peer-id"},"PeerID"),", ",(0,n.kt)("a",{parentName:"p",href:"#transport"},"listening")," addresses, and ",(0,n.kt)("a",{parentName:"p",href:"#peer-discovery"},"discovery")," addresses of a Waku node."),(0,n.kt)("h3",{id:"out-of-band"},"Out-of-band"),(0,n.kt)("p",null,"Out-of-band refers to exchanging information through a separate, secure channel distinct from the main communication method to enhance security."),(0,n.kt)("h3",{id:"payload"},"Payload"),(0,n.kt)("p",null,"The payload field in a ",(0,n.kt)("a",{parentName:"p",href:"#waku-message"},"Waku Message")," contains the application data, serving as the business logic message transmitted between clients over Waku. Applications can encrypt the payload or employ encryption methods specified in ",(0,n.kt)("a",{parentName:"p",href:"#waku-message-payload-encryption"},"Waku Message Payload Encryption"),"."),(0,n.kt)("h3",{id:"peer"},"Peer"),(0,n.kt)("p",null,"A peer refers to other ",(0,n.kt)("a",{parentName:"p",href:"#node"},"nodes")," and participants of the ",(0,n.kt)("a",{parentName:"p",href:"#waku-network"},"Waku Network")," with whom communication and interaction are possible."),(0,n.kt)("h3",{id:"peer-discovery"},(0,n.kt)("a",{parentName:"h3",href:"/learn/concepts/peer-discovery"},"Peer discovery")),(0,n.kt)("p",null,"Peer discovery is when a ",(0,n.kt)("a",{parentName:"p",href:"#node"},"node")," locates and gets information about other ",(0,n.kt)("a",{parentName:"p",href:"#peer"},"peers")," in the ",(0,n.kt)("a",{parentName:"p",href:"#waku-network"},"Waku Network"),"."),(0,n.kt)("h3",{id:"peer-exchange"},(0,n.kt)("a",{parentName:"h3",href:"/learn/concepts/peer-exchange"},"Peer exchange")),(0,n.kt)("p",null,"Peer exchange is a ",(0,n.kt)("a",{parentName:"p",href:"#peer-discovery"},"peer discovery")," mechanism that enables ",(0,n.kt)("a",{parentName:"p",href:"#light-node"},"light nodes")," to request and receive peers from other nodes in the network, allowing them to bootstrap and expand their connections without depending on ",(0,n.kt)("a",{parentName:"p",href:"#discv5"},"Discv5"),"."),(0,n.kt)("h3",{id:"peer-id"},"Peer ID"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"PeerID")," is the unique identifier of a ",(0,n.kt)("a",{parentName:"p",href:"#node"},"node")," in the ",(0,n.kt)("a",{parentName:"p",href:"#waku-network"},"Waku Network")," generated from the cryptographic hash of the node's public key."),(0,n.kt)("h3",{id:"protocol"},(0,n.kt)("a",{parentName:"h3",href:"/learn/concepts/protocols"},"Protocol")),(0,n.kt)("p",null,"A protocol is a set of rules that enables ",(0,n.kt)("a",{parentName:"p",href:"#node"},"nodes")," within the ",(0,n.kt)("a",{parentName:"p",href:"#waku-network"},"Waku Network")," to perform various functionalities such as message sending, relaying, filtering, storing, retrieving, and more."),(0,n.kt)("h3",{id:"pubsub"},"Pub/Sub"),(0,n.kt)("p",null,"Publish/Subscribe (Pub/Sub) is an asynchronous messaging pattern where publishers send messages to topics, and subscribers receive messages from topics of interest, allowing efficient one-to-many communication."),(0,n.kt)("h3",{id:"pubsub-topic"},"Pub/Sub topic"),(0,n.kt)("p",null,"A Pub/Sub topic is a string that serves as an identifier for the topic of interest among ",(0,n.kt)("a",{parentName:"p",href:"#gossipsub"},"GossipSub")," peers. Peers interested in the same topic are likely to maintain a connection and forward messages received on that topic."),(0,n.kt)("h3",{id:"rate-limit-nullifiers"},(0,n.kt)("a",{parentName:"h3",href:"https://rate-limiting-nullifier.github.io/rln-docs/"},"Rate limit nullifiers")),(0,n.kt)("p",null,"Rate Limit Nullifiers (RLN) are a construct based on zero-knowledge proofs that enables rate limiting functionality while preserving the users's anonymity."),(0,n.kt)("h3",{id:"relay"},(0,n.kt)("a",{parentName:"h3",href:"/learn/concepts/protocols#relay"},"Relay")),(0,n.kt)("p",null,"Relay is a ",(0,n.kt)("a",{parentName:"p",href:"#protocol"},"protocol")," that extends the ",(0,n.kt)("a",{parentName:"p",href:"#gossipsub"},"GossipSub protocol")," to enable secure and censorship resistant ",(0,n.kt)("a",{parentName:"p",href:"#waku-message"},"message")," sending and receiving among ",(0,n.kt)("a",{parentName:"p",href:"#peer"},"peers")," while preserving privacy. It also scales the ",(0,n.kt)("a",{parentName:"p",href:"#waku-network"},"Waku Network")," to accommodate many nodes efficiently."),(0,n.kt)("h3",{id:"resource-limited"},"Resource-limited"),(0,n.kt)("p",null,"Resource-limited refers to environments or devices restricting available resources, including bandwidth, CPU, memory, disk, and battery power."),(0,n.kt)("h3",{id:"rln-relay"},(0,n.kt)("a",{parentName:"h3",href:"/learn/concepts/protocols#rln-relay"},"RLN relay")),(0,n.kt)("p",null,"RLN Relay is an extension of the ",(0,n.kt)("a",{parentName:"p",href:"#relay"},"Relay protocol")," that uses ",(0,n.kt)("a",{parentName:"p",href:"#rate-limit-nullifiers"},"Rate Limit Nullifiers (RLN)")," to prevent spam economically by enforcing a rate limit on messages over time, imposing penalties, and facilitating network removal for spammers."),(0,n.kt)("h3",{id:"sdk"},(0,n.kt)("a",{parentName:"h3",href:"/"},"SDK")),(0,n.kt)("p",null,"SDKs are tools, libraries, and resources to integrate Waku's private, secure, and censorship-free communication features into various applications."),(0,n.kt)("h3",{id:"store"},(0,n.kt)("a",{parentName:"h3",href:"/learn/concepts/protocols#store"},"Store")),(0,n.kt)("p",null,"Store is a ",(0,n.kt)("a",{parentName:"p",href:"#protocol"},"protocol")," that enables the storage of relayed ",(0,n.kt)("a",{parentName:"p",href:"#waku-message"},"messages")," in the network, allowing offline peers to retrieve missed messages upon reconnecting to the network."),(0,n.kt)("h3",{id:"transport"},(0,n.kt)("a",{parentName:"h3",href:"/learn/concepts/transports"},"Transport")),(0,n.kt)("p",null,"A transport is a network mechanism that establishes connections between ",(0,n.kt)("a",{parentName:"p",href:"#peer"},"peers")," and enables efficient transmission, routing, and delivery of data packets."),(0,n.kt)("h3",{id:"waku"},"Waku"),(0,n.kt)("p",null,"Waku is a family of private, secure, decentralised, and peer-to-peer web3 communication ",(0,n.kt)("a",{parentName:"p",href:"#protocol"},"protocols")," designed to operate in ",(0,n.kt)("a",{parentName:"p",href:"#resource-limited"},"resource-limited")," environments and suitable for ",(0,n.kt)("a",{parentName:"p",href:"#node"},"node")," or desktop application use. Additionally, these protocols collectively form the ",(0,n.kt)("a",{parentName:"p",href:"#waku-network"},"Waku Network"),"."),(0,n.kt)("h3",{id:"waku-message"},(0,n.kt)("a",{parentName:"h3",href:"/learn/concepts/protocols#waku-message"},"Waku message")),(0,n.kt)("p",null,"Waku Message defines the structure of messages in the ",(0,n.kt)("a",{parentName:"p",href:"#waku-network"},"Waku Network"),", including the ",(0,n.kt)("a",{parentName:"p",href:"#content-topic"},"content topic"),", ",(0,n.kt)("a",{parentName:"p",href:"#payload"},"payload"),", and metadata for application-specific processing."),(0,n.kt)("h3",{id:"waku-message-payload-encryption"},(0,n.kt)("a",{parentName:"h3",href:"https://rfc.vac.dev/waku/standards/application/26/payload"},"Waku message payload encryption")),(0,n.kt)("p",null,"Waku Message Payload Encryption provides guidelines for implementing secure and private communication in the ",(0,n.kt)("a",{parentName:"p",href:"#waku-network"},"Waku Network"),". It covers encryption, decryption, and signing methods for message ",(0,n.kt)("a",{parentName:"p",href:"#payload"},"payloads"),", focusing on confidentiality, authenticity, integrity, and unlinkability."),(0,n.kt)("h3",{id:"waku-network"},(0,n.kt)("a",{parentName:"h3",href:"/learn/waku-network"},"Waku network")),(0,n.kt)("p",null,"The Waku Network is an open-access, scalable peer-to-peer messaging network emphasizing privacy protection and accessibility to ",(0,n.kt)("a",{parentName:"p",href:"#resource-limited"},"resource limited")," devices."),(0,n.kt)("h3",{id:"waku-noise"},"Waku noise"),(0,n.kt)("p",null,"Waku Noise is a specified way to use the ",(0,n.kt)("a",{parentName:"p",href:"http://noiseprotocol.org/"},"Noise Protocol Framework")," to build protocols that enable secure key-exchange mechanisms for encrypted communication with confidentiality, authenticity, integrity, strong forward secrecy, and identity-hiding properties."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/606377f0.580ec420.js b/assets/js/606377f0.580ec420.js deleted file mode 100644 index 4dcafa2..0000000 --- a/assets/js/606377f0.580ec420.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[5832],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>y});var r=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var c=r.createContext({}),l=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=l(e.components);return r.createElement(c.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,a=e.originalType,c=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=l(n),h=i,y=u["".concat(c,".").concat(h)]||u[h]||d[h]||a;return n?r.createElement(y,o(o({ref:t},p),{},{components:n})):r.createElement(y,o({ref:t},p))}));function y(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=n.length,o=new Array(a);o[0]=h;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[u]="string"==typeof e?e:i,o[1]=s;for(var l=2;l{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>d,frontMatter:()=>a,metadata:()=>s,toc:()=>l});var r=n(87462),i=(n(67294),n(3905));const a={title:"Security Features",hide_table_of_contents:!0},o=void 0,s={unversionedId:"learn/security-features",id:"learn/security-features",title:"Security Features",description:"Waku's protocol layers offer different services and security considerations, shaping the overall security of Waku. We document the security models in the RFCs of the protocols, aiming to provide transparent and open-source references. This empowers Waku users to understand each protocol's security guarantees and limitations.",source:"@site/docs/learn/security-features.md",sourceDirName:"learn",slug:"/learn/security-features",permalink:"/learn/security-features",draft:!1,editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/docs/learn/security-features.md",tags:[],version:"current",lastUpdatedAt:1700737292,formattedLastUpdatedAt:"23 Nov 2023",frontMatter:{title:"Security Features",hide_table_of_contents:!0},sidebar:"learn",previous:{title:"Peer Exchange",permalink:"/learn/concepts/peer-exchange"},next:{title:"Research",permalink:"/learn/research"}},c={},l=[{value:"Pseudonymity",id:"pseudonymity",level:2},{value:"Anonymity/unlinkability",id:"anonymityunlinkability",level:2},{value:"Spam protection",id:"spam-protection",level:2},{value:"Data confidentiality, integrity, and authenticity",id:"data-confidentiality-integrity-and-authenticity",level:2},{value:"Security considerations",id:"security-considerations",level:2}],p={toc:l},u="wrapper";function d(e){let{components:t,...n}=e;return(0,i.kt)(u,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"Waku's protocol layers offer different services and security considerations, shaping the overall security of Waku. We document the security models in the ",(0,i.kt)("a",{parentName:"p",href:"https://rfc.vac.dev/"},"RFCs of the protocols"),", aiming to provide transparent and open-source references. This empowers Waku users to understand each protocol's security guarantees and limitations."),(0,i.kt)("p",null,"Some of the Waku's security features include the following:"),(0,i.kt)("h2",{id:"pseudonymity"},(0,i.kt)("a",{parentName:"h2",href:"https://rfc.vac.dev/spec/10/#pseudonymity"},"Pseudonymity")),(0,i.kt)("p",null,"Waku ensures pseudonymity across its protocol layers, using libp2p ",(0,i.kt)("inlineCode",{parentName:"p"},"PeerID")," as identifiers instead of disclosing true identities. However, it is important to note that pseudonymity does not provide complete anonymity. Actions performed under the same pseudonym (",(0,i.kt)("inlineCode",{parentName:"p"},"PeerID"),") can be linked, leading to the potential re-identification of the actual actor."),(0,i.kt)("h2",{id:"anonymityunlinkability"},(0,i.kt)("a",{parentName:"h2",href:"https://rfc.vac.dev/spec/10/#anonymity--unlinkability"},"Anonymity/unlinkability")),(0,i.kt)("p",null,"Anonymity means an adversary cannot connect an actor to their actions or data. To achieve anonymity, avoiding linking activities with actors or their Personally Identifiable Information (PII) is crucial. In Waku, the following anonymity features are provided:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://rfc.vac.dev/spec/11/#security-analysis"},"Publisher-message unlinkability"),": Ensures that the publisher of messages in the ",(0,i.kt)("inlineCode",{parentName:"li"},"Relay")," protocol cannot be linked to their published messages."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://rfc.vac.dev/spec/11/#security-analysis"},"Subscriber-topic unlinkability"),": Ensures that the subscriber of topics in the ",(0,i.kt)("inlineCode",{parentName:"li"},"Relay")," protocol cannot be linked to the topics they have subscribed to.")),(0,i.kt)("h2",{id:"spam-protection"},(0,i.kt)("a",{parentName:"h2",href:"https://rfc.vac.dev/spec/10/#spam-protection"},"Spam protection")),(0,i.kt)("p",null,"The spam protection feature in ",(0,i.kt)("inlineCode",{parentName:"p"},"Relay")," ensures that no adversary can flood the system with many messages, intentionally or not, regardless of the content's validity or usefulness. This protection is achieved through the ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.1.md#spam-protection-measures"},"scoring mechanism")," of ",(0,i.kt)("inlineCode",{parentName:"p"},"GossipSub v1.1"),". Peers assign scores to their connections based on their behaviour and remove peers with low scores."),(0,i.kt)("p",null,"Ongoing research is being conducted, including developing ",(0,i.kt)("a",{parentName:"p",href:"/learn/concepts/protocols#rln-relay"},"Rate Limit Nullifiers (RLN)"),", which can be explored further at: ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/vacp2p/research/issues/148"},"https://github.com/vacp2p/research/issues/148"),"."),(0,i.kt)("h2",{id:"data-confidentiality-integrity-and-authenticity"},(0,i.kt)("a",{parentName:"h2",href:"https://rfc.vac.dev/spec/10/#data-confidentiality-integrity-and-authenticity"},"Data confidentiality, integrity, and authenticity")),(0,i.kt)("p",null,"Confidentiality in Waku is ensured through data encryption, while integrity and authenticity are achieved through digital signatures. These security measures are available in ",(0,i.kt)("a",{parentName:"p",href:"https://rfc.vac.dev/spec/14#version-1"},"Waku Message (version 1)")," and ",(0,i.kt)("a",{parentName:"p",href:"https://rfc.vac.dev/spec/35/"},"Noise")," protocols, which offer payload encryption and encrypted signatures. ",(0,i.kt)("a",{parentName:"p",href:"https://rfc.vac.dev/spec/35/"},"Noise")," protocols also facilitate secure channel negotiation within the Waku Network."),(0,i.kt)("h2",{id:"security-considerations"},(0,i.kt)("a",{parentName:"h2",href:"https://rfc.vac.dev/spec/10/#security-considerations"},"Security considerations")),(0,i.kt)("p",null,"In protocols like ",(0,i.kt)("inlineCode",{parentName:"p"},"Store")," and ",(0,i.kt)("inlineCode",{parentName:"p"},"Filter"),", where direct connections are required for the designated service, anonymity or unlinkability is not guaranteed. This is because nodes use their ",(0,i.kt)("inlineCode",{parentName:"p"},"PeerID")," to identify each other during direct connections, making the service obtained in these protocols linkable to the beneficiary's ",(0,i.kt)("inlineCode",{parentName:"p"},"PeerID"),", considered Personally Identifiable Information (PII). In ",(0,i.kt)("inlineCode",{parentName:"p"},"Store"),", the queried node can link the querying node's ",(0,i.kt)("inlineCode",{parentName:"p"},"PeerID")," to the topics being queried. Similarly, in ",(0,i.kt)("inlineCode",{parentName:"p"},"Filter"),", a node can link the ",(0,i.kt)("inlineCode",{parentName:"p"},"PeerID")," of a light node to its content filter."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/606377f0.753fc738.js b/assets/js/606377f0.753fc738.js new file mode 100644 index 0000000..b88ceda --- /dev/null +++ b/assets/js/606377f0.753fc738.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[5832],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var c=r.createContext({}),l=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=l(e.components);return r.createElement(c.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},y=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,c=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),p=l(n),y=a,h=p["".concat(c,".").concat(y)]||p[y]||d[y]||i;return n?r.createElement(h,o(o({ref:t},u),{},{components:n})):r.createElement(h,o({ref:t},u))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=y;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[p]="string"==typeof e?e:a,o[1]=s;for(var l=2;l{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>s,toc:()=>l});var r=n(87462),a=(n(67294),n(3905));const i={title:"Security Features",hide_table_of_contents:!0},o=void 0,s={unversionedId:"learn/security-features",id:"learn/security-features",title:"Security Features",description:"Waku's protocol layers offer different services and security considerations, shaping the overall security of Waku. We document the security models in the RFCs of the protocols, aiming to provide transparent and open-source references. This empowers Waku users to understand each protocol's security guarantees and limitations.",source:"@site/docs/learn/security-features.md",sourceDirName:"learn",slug:"/learn/security-features",permalink:"/learn/security-features",draft:!1,editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/docs/learn/security-features.md",tags:[],version:"current",lastUpdatedAt:1715880135,formattedLastUpdatedAt:"16 May 2024",frontMatter:{title:"Security Features",hide_table_of_contents:!0},sidebar:"learn",previous:{title:"Peer Exchange",permalink:"/learn/concepts/peer-exchange"},next:{title:"Research",permalink:"/learn/research"}},c={},l=[{value:"Pseudonymity",id:"pseudonymity",level:2},{value:"Anonymity/unlinkability",id:"anonymityunlinkability",level:2},{value:"Spam protection",id:"spam-protection",level:2},{value:"Data confidentiality, integrity, and authenticity",id:"data-confidentiality-integrity-and-authenticity",level:2},{value:"Security considerations",id:"security-considerations",level:2}],u={toc:l},p="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"Waku's protocol layers offer different services and security considerations, shaping the overall security of Waku. We document the security models in the ",(0,a.kt)("a",{parentName:"p",href:"https://rfc.vac.dev/"},"RFCs of the protocols"),", aiming to provide transparent and open-source references. This empowers Waku users to understand each protocol's security guarantees and limitations."),(0,a.kt)("p",null,"Some of the Waku's security features include the following:"),(0,a.kt)("h2",{id:"pseudonymity"},(0,a.kt)("a",{parentName:"h2",href:"https://rfc.vac.dev/waku/standards/core/10/waku2/#pseudonymity"},"Pseudonymity")),(0,a.kt)("p",null,"Waku ensures pseudonymity across its protocol layers, using libp2p ",(0,a.kt)("inlineCode",{parentName:"p"},"PeerID")," as identifiers instead of disclosing true identities. However, it is important to note that pseudonymity does not provide complete anonymity. Actions performed under the same pseudonym (",(0,a.kt)("inlineCode",{parentName:"p"},"PeerID"),") can be linked, leading to the potential re-identification of the actual actor."),(0,a.kt)("h2",{id:"anonymityunlinkability"},(0,a.kt)("a",{parentName:"h2",href:"https://rfc.vac.dev/waku/standards/core/10/waku2/#anonymity--unlinkability"},"Anonymity/unlinkability")),(0,a.kt)("p",null,"Anonymity means an adversary cannot connect an actor to their actions or data. To achieve anonymity, avoiding linking activities with actors or their Personally Identifiable Information (PII) is crucial. In Waku, the following anonymity features are provided:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://rfc.vac.dev/waku/standards/core/11/relay/#security-analysis"},"Publisher-message unlinkability"),": Ensures that the publisher of messages in the ",(0,a.kt)("inlineCode",{parentName:"li"},"Relay")," protocol cannot be linked to their published messages."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://rfc.vac.dev/waku/standards/core/11/relay/#security-analysis"},"Subscriber-topic unlinkability"),": Ensures that the subscriber of topics in the ",(0,a.kt)("inlineCode",{parentName:"li"},"Relay")," protocol cannot be linked to the topics they have subscribed to.")),(0,a.kt)("h2",{id:"spam-protection"},(0,a.kt)("a",{parentName:"h2",href:"https://rfc.vac.dev/waku/standards/core/10/waku2/#spam-protection"},"Spam protection")),(0,a.kt)("p",null,"The spam protection feature in ",(0,a.kt)("inlineCode",{parentName:"p"},"Relay")," ensures that no adversary can flood the system with many messages, intentionally or not, regardless of the content's validity or usefulness. This protection is achieved through the ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.1.md#spam-protection-measures"},"scoring mechanism")," of ",(0,a.kt)("inlineCode",{parentName:"p"},"GossipSub v1.1"),". Peers assign scores to their connections based on their behaviour and remove peers with low scores."),(0,a.kt)("p",null,"Ongoing research is being conducted, including developing ",(0,a.kt)("a",{parentName:"p",href:"/learn/concepts/protocols#rln-relay"},"Rate Limit Nullifiers (RLN)"),", which can be explored further at: ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/vacp2p/research/issues/148"},"https://github.com/vacp2p/research/issues/148"),"."),(0,a.kt)("h2",{id:"data-confidentiality-integrity-and-authenticity"},(0,a.kt)("a",{parentName:"h2",href:"https://rfc.vac.dev/waku/standards/core/10/waku2/#data-confidentiality-integrity-and-authenticity"},"Data confidentiality, integrity, and authenticity")),(0,a.kt)("p",null,"Confidentiality in Waku is ensured through data encryption, while integrity and authenticity are achieved through digital signatures. These security measures are available in ",(0,a.kt)("a",{parentName:"p",href:"https://rfc.vac.dev/waku/standards/core/14/message/#version-1"},"Waku Message (version 1)")," and Noise protocols, which offer payload encryption and encrypted signatures. Noise protocols also facilitate secure channel negotiation within the Waku Network."),(0,a.kt)("h2",{id:"security-considerations"},(0,a.kt)("a",{parentName:"h2",href:"https://rfc.vac.dev/waku/standards/core/10/waku2/#security-considerations"},"Security considerations")),(0,a.kt)("p",null,"In protocols like ",(0,a.kt)("inlineCode",{parentName:"p"},"Store")," and ",(0,a.kt)("inlineCode",{parentName:"p"},"Filter"),", where direct connections are required for the designated service, anonymity or unlinkability is not guaranteed. This is because nodes use their ",(0,a.kt)("inlineCode",{parentName:"p"},"PeerID")," to identify each other during direct connections, making the service obtained in these protocols linkable to the beneficiary's ",(0,a.kt)("inlineCode",{parentName:"p"},"PeerID"),", considered Personally Identifiable Information (PII). In ",(0,a.kt)("inlineCode",{parentName:"p"},"Store"),", the queried node can link the querying node's ",(0,a.kt)("inlineCode",{parentName:"p"},"PeerID")," to the topics being queried. Similarly, in ",(0,a.kt)("inlineCode",{parentName:"p"},"Filter"),", a node can link the ",(0,a.kt)("inlineCode",{parentName:"p"},"PeerID")," of a light node to its content filter."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/6c6e315a.0aae848c.js b/assets/js/6c6e315a.741b14f0.js similarity index 62% rename from assets/js/6c6e315a.0aae848c.js rename to assets/js/6c6e315a.741b14f0.js index 13429b8..4dc8e67 100644 --- a/assets/js/6c6e315a.0aae848c.js +++ b/assets/js/6c6e315a.741b14f0.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[8319],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>h});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=n.createContext({}),l=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},p=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,c=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=l(r),m=a,h=u["".concat(c,".").concat(m)]||u[m]||d[m]||i;return r?n.createElement(h,o(o({ref:t},p),{},{components:r})):n.createElement(h,o({ref:t},p))}));function h(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,o=new Array(i);o[0]=m;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[u]="string"==typeof e?e:a,o[1]=s;for(var l=2;l{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>s,toc:()=>l});var n=r(87462),a=(r(67294),r(3905));const i={title:"Research",hide_table_of_contents:!0},o=void 0,s={unversionedId:"learn/research",id:"learn/research",title:"Research",description:"The following features are currently experimental and under research and initial implementation:",source:"@site/docs/learn/research.md",sourceDirName:"learn",slug:"/learn/research",permalink:"/learn/research",draft:!1,editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/docs/learn/research.md",tags:[],version:"current",lastUpdatedAt:1700737292,formattedLastUpdatedAt:"23 Nov 2023",frontMatter:{title:"Research",hide_table_of_contents:!0},sidebar:"learn",previous:{title:"Security Features",permalink:"/learn/security-features"},next:{title:"Comparing Waku and libp2p",permalink:"/learn/waku-vs-libp2p"}},c={},l=[{value:"Economic spam resistance",id:"economic-spam-resistance",level:2},{value:"Prevention of denial of service (DoS) and node incentivisation",id:"prevention-of-denial-of-service-dos-and-node-incentivisation",level:2}],p={toc:l},u="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(u,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"The following features are currently experimental and under research and initial implementation:"),(0,a.kt)("h2",{id:"economic-spam-resistance"},"Economic spam resistance"),(0,a.kt)("p",null,"We aim to enable an incentivised spam protection technique to enhance ",(0,a.kt)("inlineCode",{parentName:"p"},"Relay")," by using ",(0,a.kt)("a",{parentName:"p",href:"https://rfc.vac.dev/spec/32/"},"Rate Limit Nullifiers (RLN)"),". In this advanced method, peers are limited to a certain messaging rate per epoch, and an immediate financial penalty is enforced for spammers who break this rate. You can find more details in the ",(0,a.kt)("a",{parentName:"p",href:"https://vac.dev/rln-relay"},"RLN Relay blog post"),"."),(0,a.kt)("p",null,"We have prepared a PoC implementation of this method in JS: ",(0,a.kt)("a",{parentName:"p",href:"https://examples.waku.org/rln-js/"},"https://examples.waku.org/rln-js/")),(0,a.kt)("h2",{id:"prevention-of-denial-of-service-dos-and-node-incentivisation"},"Prevention of denial of service (DoS) and node incentivisation"),(0,a.kt)("p",null,"Denial of service signifies the case where an adversarial peer exhausts another node's service capacity (e.g., by making a large number of requests) and makes it unavailable to the rest of the system. RnD on DoS attack mitigation can tracked from here: ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/vacp2p/research/issues/148"},"https://github.com/vacp2p/research/issues/148"),"."),(0,a.kt)("p",null,"In a nutshell, peers have to pay for the service they obtain from each other. In addition to incentivising the service provider, accounting also makes DoS attacks costly for malicious peers. The accounting model can be used in ",(0,a.kt)("inlineCode",{parentName:"p"},"Store")," and ",(0,a.kt)("inlineCode",{parentName:"p"},"Filter")," to protect against DoS attacks."),(0,a.kt)("p",null,"Additionally, along with RLN, this gives node operators who provide a useful service to the network an incentive to perform that service. Read more here: ",(0,a.kt)("a",{parentName:"p",href:"https://vac.dev/building-privacy-protecting-infrastructure"},"https://vac.dev/building-privacy-protecting-infrastructure")),(0,a.kt)("p",null,"You can also read more about the ongoing challenges the Waku team is working on here: ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/waku-org/research"},"https://github.com/waku-org/research")))}d.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[8319],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>h});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=n.createContext({}),l=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},p=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,c=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=l(r),m=a,h=u["".concat(c,".").concat(m)]||u[m]||d[m]||i;return r?n.createElement(h,o(o({ref:t},p),{},{components:r})):n.createElement(h,o({ref:t},p))}));function h(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,o=new Array(i);o[0]=m;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[u]="string"==typeof e?e:a,o[1]=s;for(var l=2;l{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>s,toc:()=>l});var n=r(87462),a=(r(67294),r(3905));const i={title:"Research",hide_table_of_contents:!0},o=void 0,s={unversionedId:"learn/research",id:"learn/research",title:"Research",description:"The following features are currently experimental and under research and initial implementation:",source:"@site/docs/learn/research.md",sourceDirName:"learn",slug:"/learn/research",permalink:"/learn/research",draft:!1,editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/docs/learn/research.md",tags:[],version:"current",lastUpdatedAt:1715880135,formattedLastUpdatedAt:"16 May 2024",frontMatter:{title:"Research",hide_table_of_contents:!0},sidebar:"learn",previous:{title:"Security Features",permalink:"/learn/security-features"},next:{title:"Comparing Waku and libp2p",permalink:"/learn/waku-vs-libp2p"}},c={},l=[{value:"Economic spam resistance",id:"economic-spam-resistance",level:2},{value:"Prevention of denial of service (DoS) and node incentivisation",id:"prevention-of-denial-of-service-dos-and-node-incentivisation",level:2}],p={toc:l},u="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(u,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"The following features are currently experimental and under research and initial implementation:"),(0,a.kt)("h2",{id:"economic-spam-resistance"},"Economic spam resistance"),(0,a.kt)("p",null,"We aim to enable an incentivised spam protection technique to enhance ",(0,a.kt)("inlineCode",{parentName:"p"},"Relay")," by using ",(0,a.kt)("a",{parentName:"p",href:"https://rfc.vac.dev/vac/32/rln-v1/"},"Rate Limit Nullifiers (RLN)"),". In this advanced method, peers are limited to a certain messaging rate per epoch, and an immediate financial penalty is enforced for spammers who break this rate. You can find more details in the ",(0,a.kt)("a",{parentName:"p",href:"https://vac.dev/rln-relay"},"RLN Relay blog post"),"."),(0,a.kt)("p",null,"We have prepared a PoC implementation of this method in JS: ",(0,a.kt)("a",{parentName:"p",href:"https://examples.waku.org/rln-js/"},"https://examples.waku.org/rln-js/")),(0,a.kt)("h2",{id:"prevention-of-denial-of-service-dos-and-node-incentivisation"},"Prevention of denial of service (DoS) and node incentivisation"),(0,a.kt)("p",null,"Denial of service signifies the case where an adversarial peer exhausts another node's service capacity (e.g., by making a large number of requests) and makes it unavailable to the rest of the system. RnD on DoS attack mitigation can tracked from here: ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/vacp2p/research/issues/148"},"https://github.com/vacp2p/research/issues/148"),"."),(0,a.kt)("p",null,"In a nutshell, peers have to pay for the service they obtain from each other. In addition to incentivising the service provider, accounting also makes DoS attacks costly for malicious peers. The accounting model can be used in ",(0,a.kt)("inlineCode",{parentName:"p"},"Store")," and ",(0,a.kt)("inlineCode",{parentName:"p"},"Filter")," to protect against DoS attacks."),(0,a.kt)("p",null,"Additionally, along with RLN, this gives node operators who provide a useful service to the network an incentive to perform that service. Read more here: ",(0,a.kt)("a",{parentName:"p",href:"https://vac.dev/building-privacy-protecting-infrastructure"},"https://vac.dev/building-privacy-protecting-infrastructure")),(0,a.kt)("p",null,"You can also read more about the ongoing challenges the Waku team is working on here: ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/waku-org/research"},"https://github.com/waku-org/research")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/6e8bfb6f.bf5d76ca.js b/assets/js/6e8bfb6f.bf5d76ca.js new file mode 100644 index 0000000..de0aeca --- /dev/null +++ b/assets/js/6e8bfb6f.bf5d76ca.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[6512],{3905:(e,n,t)=>{t.d(n,{Zo:()=>c,kt:()=>m});var r=t(67294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function i(e){for(var n=1;n=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var s=r.createContext({}),l=function(e){var n=r.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},c=function(e){var n=l(e.components);return r.createElement(s.Provider,{value:n},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},k=r.forwardRef((function(e,n){var t=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,c=u(e,["components","mdxType","originalType","parentName"]),p=l(t),k=a,m=p["".concat(s,".").concat(k)]||p[k]||d[k]||o;return t?r.createElement(m,i(i({ref:n},c),{},{components:t})):r.createElement(m,i({ref:n},c))}));function m(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var o=t.length,i=new Array(o);i[0]=k;var u={};for(var s in n)hasOwnProperty.call(n,s)&&(u[s]=n[s]);u.originalType=e,u[p]="string"==typeof e?e:a,i[1]=u;for(var l=2;l{t.r(n),t.d(n,{assets:()=>s,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>u,toc:()=>l});var r=t(87462),a=(t(67294),t(3905));const o={title:"Run Nwaku in a Docker Container",hide_table_of_contents:!0},i=void 0,u={unversionedId:"guides/nwaku/run-docker",id:"guides/nwaku/run-docker",title:"Run Nwaku in a Docker Container",description:"This guide provides detailed steps to build and run a nwaku node in a Docker container. If you prefer a pre-configured setup with a monitoring dashboard, see the Run Nwaku with Docker Compose guide.",source:"@site/docs/guides/nwaku/run-docker.md",sourceDirName:"guides/nwaku",slug:"/guides/nwaku/run-docker",permalink:"/guides/nwaku/run-docker",draft:!1,editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/docs/guides/nwaku/run-docker.md",tags:[],version:"current",lastUpdatedAt:1715880135,formattedLastUpdatedAt:"16 May 2024",frontMatter:{title:"Run Nwaku in a Docker Container",hide_table_of_contents:!0},sidebar:"guides",previous:{title:"Run Nwaku with Docker Compose",permalink:"/guides/nwaku/run-docker-compose"},next:{title:"Build Nwaku from Source",permalink:"/guides/nwaku/build-source"}},s={},l=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Get Docker image",id:"get-docker-image",level:2},{value:"Run Docker container",id:"run-docker-container",level:2}],c={toc:l},p="wrapper";function d(e){let{components:n,...t}=e;return(0,a.kt)(p,(0,r.Z)({},c,t,{components:n,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"This guide provides detailed steps to build and run a ",(0,a.kt)("inlineCode",{parentName:"p"},"nwaku")," node in a Docker container. If you prefer a pre-configured setup with a monitoring dashboard, see the ",(0,a.kt)("a",{parentName:"p",href:"/guides/nwaku/run-docker-compose"},"Run Nwaku with Docker Compose")," guide."),(0,a.kt)("h2",{id:"prerequisites"},"Prerequisites"),(0,a.kt)("p",null,"Ensure ",(0,a.kt)("a",{parentName:"p",href:"https://www.docker.com/"},"Docker")," is installed on your system using the appropriate instructions provided in the ",(0,a.kt)("a",{parentName:"p",href:"https://docs.docker.com/engine/install/"},"Docker documentation"),"."),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"We recommend running a ",(0,a.kt)("inlineCode",{parentName:"p"},"nwaku")," node with at least 2GB of RAM, especially if ",(0,a.kt)("inlineCode",{parentName:"p"},"WSS")," is enabled. If running just a ",(0,a.kt)("inlineCode",{parentName:"p"},"Relay")," node, 0.5GB of RAM is sufficient.")),(0,a.kt)("h2",{id:"get-docker-image"},"Get Docker image"),(0,a.kt)("p",null,"The Nwaku Docker images are available on the Docker Hub public registry under the ",(0,a.kt)("a",{parentName:"p",href:"https://hub.docker.com/r/statusteam/nim-waku"},"statusteam/nim-waku")," repository. Please visit ",(0,a.kt)("a",{parentName:"p",href:"https://hub.docker.com/r/statusteam/nim-waku/tags"},"statusteam/nim-waku/tags")," for images of specific releases."),(0,a.kt)("p",null,"You can also build the Docker image locally:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-shell"},"# Clone the repository\ngit clone --recurse-submodules https://github.com/waku-org/nwaku\ncd nwaku\n\n# Build docker image\nmake docker-image\n")),(0,a.kt)("h2",{id:"run-docker-container"},"Run Docker container"),(0,a.kt)("p",null,"Run ",(0,a.kt)("inlineCode",{parentName:"p"},"nwaku")," in a new Docker container:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-shell"},"docker run [OPTIONS] [IMAGE] [ARG...]\n")),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"OPTIONS")," are your selected ",(0,a.kt)("a",{parentName:"li",href:"https://docs.docker.com/engine/reference/commandline/run/#options"},"Docker options")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"IMAGE")," is the image and tag you pulled from the registry or built locally"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"ARG...")," is the list of arguments for your ",(0,a.kt)("a",{parentName:"li",href:"/guides/nwaku/config-options"},"node configuration options"))),(0,a.kt)("p",null,"Run ",(0,a.kt)("inlineCode",{parentName:"p"},"nwaku")," using the most typical configuration:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-shell"},"docker run -i -t -p 60000:60000 -p 9000:9000/udp statusteam/nim-waku:v0.20.0 \\\n --dns-discovery=true \\\n --dns-discovery-url=enrtree://AIRVQ5DDA4FFWLRBCHJWUWOO6X6S4ZTZ5B667LQ6AJU6PEYDLRD5O@sandbox.waku.nodes.status.im \\\n --discv5-discovery=true \\\n --nat=extip:[YOUR PUBLIC IP] # or, if you are behind a nat: --nat=any\n")),(0,a.kt)("p",null,"To find your public IP, use:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-shell"},"dig TXT +short o-o.myaddr.l.google.com @ns1.google.com | awk -F'\"' '{ print $2}'\n")),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"We recommend using explicit port mappings (",(0,a.kt)("inlineCode",{parentName:"p"},"-p"),") when exposing ports accessible from outside the host (listening and discovery ports, API servers).")),(0,a.kt)("admonition",{type:"tip"},(0,a.kt)("p",{parentName:"admonition"},"If you encounter issues running your node or require assistance with anything, please visit the ",(0,a.kt)("a",{parentName:"p",href:"https://discord.com/channels/1110799176264056863/1216748184592711691"},"#node-help channel")," on our Discord.")),(0,a.kt)("admonition",{title:"Congratulations!",type:"tip"},(0,a.kt)("p",{parentName:"admonition"},"You have successfully built and started a ",(0,a.kt)("inlineCode",{parentName:"p"},"nwaku")," node in a Docker container. Have a look at the ",(0,a.kt)("a",{parentName:"p",href:"/guides/nwaku/configure-nwaku"},"Node Configuration Examples")," guide to learn how to configure ",(0,a.kt)("inlineCode",{parentName:"p"},"nwaku")," for different use cases.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/6e8bfb6f.fc30110e.js b/assets/js/6e8bfb6f.fc30110e.js deleted file mode 100644 index 641742e..0000000 --- a/assets/js/6e8bfb6f.fc30110e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[6512],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>m});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),l=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},c=function(e){var t=l(e.components);return r.createElement(s.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},k=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,c=u(e,["components","mdxType","originalType","parentName"]),p=l(n),k=a,m=p["".concat(s,".").concat(k)]||p[k]||d[k]||o;return n?r.createElement(m,i(i({ref:t},c),{},{components:n})):r.createElement(m,i({ref:t},c))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=k;var u={};for(var s in t)hasOwnProperty.call(t,s)&&(u[s]=t[s]);u.originalType=e,u[p]="string"==typeof e?e:a,i[1]=u;for(var l=2;l{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>u,toc:()=>l});var r=n(87462),a=(n(67294),n(3905));const o={title:"Run Nwaku in a Docker Container",hide_table_of_contents:!0},i=void 0,u={unversionedId:"guides/nwaku/run-docker",id:"guides/nwaku/run-docker",title:"Run Nwaku in a Docker Container",description:"This guide provides detailed steps to build and run a nwaku node in a Docker container. If you prefer a pre-configured setup with a monitoring dashboard, see the Run Nwaku with Docker Compose guide.",source:"@site/docs/guides/nwaku/run-docker.md",sourceDirName:"guides/nwaku",slug:"/guides/nwaku/run-docker",permalink:"/guides/nwaku/run-docker",draft:!1,editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/docs/guides/nwaku/run-docker.md",tags:[],version:"current",lastUpdatedAt:1710942990,formattedLastUpdatedAt:"20 Mar 2024",frontMatter:{title:"Run Nwaku in a Docker Container",hide_table_of_contents:!0},sidebar:"guides",previous:{title:"Run Nwaku with Docker Compose",permalink:"/guides/nwaku/run-docker-compose"},next:{title:"Build Nwaku from Source",permalink:"/guides/nwaku/build-source"}},s={},l=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Get Docker image",id:"get-docker-image",level:2},{value:"Run Docker container",id:"run-docker-container",level:2}],c={toc:l},p="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"This guide provides detailed steps to build and run a ",(0,a.kt)("inlineCode",{parentName:"p"},"nwaku")," node in a Docker container. If you prefer a pre-configured setup with a monitoring dashboard, see the ",(0,a.kt)("a",{parentName:"p",href:"/guides/nwaku/run-docker-compose"},"Run Nwaku with Docker Compose")," guide."),(0,a.kt)("h2",{id:"prerequisites"},"Prerequisites"),(0,a.kt)("p",null,"Ensure ",(0,a.kt)("a",{parentName:"p",href:"https://www.docker.com/"},"Docker")," is installed on your system using the appropriate instructions provided in the ",(0,a.kt)("a",{parentName:"p",href:"https://docs.docker.com/engine/install/"},"Docker documentation"),"."),(0,a.kt)("h2",{id:"get-docker-image"},"Get Docker image"),(0,a.kt)("p",null,"The Nwaku Docker images are available on the Docker Hub public registry under the ",(0,a.kt)("a",{parentName:"p",href:"https://hub.docker.com/r/statusteam/nim-waku"},"statusteam/nim-waku")," repository. Please visit ",(0,a.kt)("a",{parentName:"p",href:"https://hub.docker.com/r/statusteam/nim-waku/tags"},"statusteam/nim-waku/tags")," for images of specific releases."),(0,a.kt)("p",null,"You can also build the Docker image locally:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-shell"},"# Clone the repository\ngit clone --recurse-submodules https://github.com/waku-org/nwaku\ncd nwaku\n\n# Build docker image\nmake docker-image\n")),(0,a.kt)("h2",{id:"run-docker-container"},"Run Docker container"),(0,a.kt)("p",null,"Run ",(0,a.kt)("inlineCode",{parentName:"p"},"nwaku")," in a new Docker container:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-shell"},"docker run [OPTIONS] [IMAGE] [ARG...]\n")),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"OPTIONS")," are your selected ",(0,a.kt)("a",{parentName:"li",href:"https://docs.docker.com/engine/reference/commandline/run/#options"},"Docker options")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"IMAGE")," is the image and tag you pulled from the registry or built locally"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"ARG...")," is the list of arguments for your ",(0,a.kt)("a",{parentName:"li",href:"/guides/nwaku/config-options"},"node configuration options"))),(0,a.kt)("p",null,"Run ",(0,a.kt)("inlineCode",{parentName:"p"},"nwaku")," using the most typical configuration:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-shell"},"docker run -i -t -p 60000:60000 -p 9000:9000/udp statusteam/nim-waku:v0.20.0 \\\n --dns-discovery=true \\\n --dns-discovery-url=enrtree://AIRVQ5DDA4FFWLRBCHJWUWOO6X6S4ZTZ5B667LQ6AJU6PEYDLRD5O@sandbox.waku.nodes.status.im \\\n --discv5-discovery=true \\\n --nat=extip:[YOUR PUBLIC IP] # or, if you are behind a nat: --nat=any\n")),(0,a.kt)("p",null,"To find your public IP, use:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-shell"},"dig TXT +short o-o.myaddr.l.google.com @ns1.google.com | awk -F'\"' '{ print $2}'\n")),(0,a.kt)("admonition",{type:"tip"},(0,a.kt)("p",{parentName:"admonition"},"We recommend using explicit port mappings (",(0,a.kt)("inlineCode",{parentName:"p"},"-p"),") when exposing ports accessible from outside the host (listening and discovery ports, API servers).")),(0,a.kt)("admonition",{title:"Congratulations!",type:"tip"},(0,a.kt)("p",{parentName:"admonition"},"You have successfully built and started a ",(0,a.kt)("inlineCode",{parentName:"p"},"nwaku")," node in a Docker container. Have a look at the ",(0,a.kt)("a",{parentName:"p",href:"/guides/nwaku/configure-nwaku"},"Node Configuration Examples")," guide to learn how to configure ",(0,a.kt)("inlineCode",{parentName:"p"},"nwaku")," for different use cases.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/7c28fd94.0e9f43e3.js b/assets/js/7c28fd94.0e9f43e3.js deleted file mode 100644 index f7694ab..0000000 --- a/assets/js/7c28fd94.0e9f43e3.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[906],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>k});var a=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var p=a.createContext({}),l=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=l(e.components);return a.createElement(p.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,r=e.originalType,p=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),c=l(n),m=o,k=c["".concat(p,".").concat(m)]||c[m]||d[m]||r;return n?a.createElement(k,i(i({ref:t},u),{},{components:n})):a.createElement(k,i({ref:t},u))}));function k(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=n.length,i=new Array(r);i[0]=m;var s={};for(var p in t)hasOwnProperty.call(t,p)&&(s[p]=t[p]);s.originalType=e,s[c]="string"==typeof e?e:o,i[1]=s;for(var l=2;l{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>d,frontMatter:()=>r,metadata:()=>s,toc:()=>l});var a=n(87462),o=(n(67294),n(3905));const r={title:"Run Nwaku with Docker Compose",hide_table_of_contents:!0},i=void 0,s={unversionedId:"guides/nwaku/run-docker-compose",id:"guides/nwaku/run-docker-compose",title:"Run Nwaku with Docker Compose",description:"nwaku-compose is a ready-to-use Docker Compose setup that runs the following:",source:"@site/docs/guides/nwaku/run-docker-compose.md",sourceDirName:"guides/nwaku",slug:"/guides/nwaku/run-docker-compose",permalink:"/guides/nwaku/run-docker-compose",draft:!1,editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/docs/guides/nwaku/run-docker-compose.md",tags:[],version:"current",lastUpdatedAt:1710241592,formattedLastUpdatedAt:"12 Mar 2024",frontMatter:{title:"Run Nwaku with Docker Compose",hide_table_of_contents:!0},sidebar:"guides",previous:{title:"Run a Nwaku Node",permalink:"/guides/nwaku/run-node"},next:{title:"Run Nwaku in a Docker Container",permalink:"/guides/nwaku/run-docker"}},p={},l=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Clone the repository",id:"clone-the-repository",level:2},{value:"Configure the setup",id:"configure-the-setup",level:2},{value:"Register for RLN membership",id:"register-for-rln-membership",level:2},{value:"Run the node",id:"run-the-node",level:2},{value:"Interact with the node",id:"interact-with-the-node",level:2},{value:"Use the REST API",id:"use-the-rest-api",level:2}],u={toc:l},c="wrapper";function d(e){let{components:t,...r}=e;return(0,o.kt)(c,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"nwaku-compose")," is a ready-to-use Docker Compose setup that runs the following:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"nwaku")," node running ",(0,o.kt)("a",{parentName:"li",href:"/learn/concepts/protocols#relay"},"Relay")," and ",(0,o.kt)("a",{parentName:"li",href:"/learn/concepts/protocols#store"},"Store")," protocols with ",(0,o.kt)("a",{parentName:"li",href:"/learn/concepts/protocols#rln-relay"},"RLN")," enabled."),(0,o.kt)("li",{parentName:"ul"},"Simple frontend to interact with the node and Waku network to send and receive messages."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://grafana.com/"},"Grafana")," metrics dashboard for advanced users and node operators to monitor the node.")),(0,o.kt)("p",null,"This guide provides detailed steps to configure, run, monitor, and interact with a ",(0,o.kt)("inlineCode",{parentName:"p"},"nwaku")," node with ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/waku-org/nwaku-compose"},"nwaku-compose"),"."),(0,o.kt)("h2",{id:"prerequisites"},"Prerequisites"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://git-scm.com/"},"Git")," or ",(0,o.kt)("a",{parentName:"li",href:"https://desktop.github.com/"},"GitHub Desktop")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://docs.docker.com/engine/install/"},"Docker")," and ",(0,o.kt)("a",{parentName:"li",href:"https://docs.docker.com/compose/install/"},"Docker Compose")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/waku-org/nwaku/blob/master/docs/tutorial/pre-requisites-of-running-on-chain-spam-protected-chat2.md#3-access-a-node-on-the-sepolia-testnet-using-infura"},"Ethereum Sepolia WebSocket Endpoint")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/waku-org/nwaku/blob/master/docs/tutorial/pre-requisites-of-running-on-chain-spam-protected-chat2.md#2-obtain-sepolia-eth-from-faucet"},"Wallet with Sepolia Ethereum")," (less than 0.01 Sepolia ETH)"),(0,o.kt)("li",{parentName:"ul"},"A password to protect your RLN membership")),(0,o.kt)("h2",{id:"clone-the-repository"},"Clone the repository"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"git clone https://github.com/waku-org/nwaku-compose\ncd nwaku-compose\n")),(0,o.kt)("h2",{id:"configure-the-setup"},"Configure the setup"),(0,o.kt)("p",null,"Docker Compose ",(0,o.kt)("a",{parentName:"p",href:"https://docs.docker.com/compose/environment-variables/set-environment-variables/#additional-information-3"},"reads the ./.env file")," from the filesystem. You can use ",(0,o.kt)("inlineCode",{parentName:"p"},".env.example")," as a template to provide the above values. The recommended process for working with ",(0,o.kt)("inlineCode",{parentName:"p"},".env")," files is to duplicate ",(0,o.kt)("inlineCode",{parentName:"p"},".env.example"),", rename it as ",(0,o.kt)("inlineCode",{parentName:"p"},".env"),", and then make the necessary value edits."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"cp .env.example .env\n${EDITOR} .env\n")),(0,o.kt)("admonition",{type:"caution"},(0,o.kt)("p",{parentName:"admonition"},"Ensure that you do ",(0,o.kt)("strong",{parentName:"p"},"NOT")," include any secrets in the ",(0,o.kt)("inlineCode",{parentName:"p"},".env.example")," file, as it could accidentally be shared in the Git repository.")),(0,o.kt)("h2",{id:"register-for-rln-membership"},"Register for RLN membership"),(0,o.kt)("p",null,"The RLN membership is your access key to The Waku Network. Its registration is done on-chain, allowing your ",(0,o.kt)("inlineCode",{parentName:"p"},"nwaku")," node to send messages decentralised and privately, respecting some ",(0,o.kt)("a",{parentName:"p",href:"https://rfc.vac.dev/spec/64/#rate-limit-exceeded"},"rate limits"),". Other peers won't relay messages that exceed the rate limit."),(0,o.kt)("p",null,"This command registers your membership and saves it in the ",(0,o.kt)("inlineCode",{parentName:"p"},"keystore/keystore.json")," file:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"./register_rln.sh\n")),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"If you only want to relay traffic without sending messages to the network, you don't need to register for RLN membership.")),(0,o.kt)("h2",{id:"run-the-node"},"Run the node"),(0,o.kt)("p",null,"Start all processes: ",(0,o.kt)("inlineCode",{parentName:"p"},"nwaku")," node, database for storing messages, and Grafana for metrics. Your RLN membership is loaded into nwaku under the hood:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"docker-compose up -d\n")),(0,o.kt)("p",null,"View the logs of the node to confirm that it is running correctly:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"docker-compose logs -f nwaku\n")),(0,o.kt)("h2",{id:"interact-with-the-node"},"Interact with the node"),(0,o.kt)("p",null,"Visit ",(0,o.kt)("a",{parentName:"p",href:"http://localhost:3000/d/yns_4vFVk/nwaku-monitoring"},"http://localhost:3000/d/yns_4vFVk/nwaku-monitoring")," to view your node metrics in real time."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"nwaku compose dashboard",src:n(72308).Z,width:"1080",height:"721"})),(0,o.kt)("admonition",{type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"To access Grafana from outside your machine, remove ",(0,o.kt)("inlineCode",{parentName:"p"},"127.0.0.1")," and open the port. Consider setting up a password for Grafana to ensure security.")),(0,o.kt)("h2",{id:"use-the-rest-api"},"Use the REST API"),(0,o.kt)("p",null,"Your ",(0,o.kt)("inlineCode",{parentName:"p"},"nwaku")," node provides a ",(0,o.kt)("a",{parentName:"p",href:"https://waku-org.github.io/waku-rest-api/"},"REST API")," on port ",(0,o.kt)("inlineCode",{parentName:"p"},"8645")," for interacting with it:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"# Get nwaku version\ncurl --location 'http://127.0.0.1:8645/debug/v1/version'\n\n# Get nwaku info\ncurl --location 'http://127.0.0.1:8645/debug/v1/info'\n")),(0,o.kt)("p",null,"Send a message to a ",(0,o.kt)("inlineCode",{parentName:"p"},"contentTopic"),", which all subscribers will receive. Please note that the ",(0,o.kt)("inlineCode",{parentName:"p"},"payload")," is encoded in ",(0,o.kt)("inlineCode",{parentName:"p"},"base64"),"."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},'curl --location \'http://127.0.0.1:8645/relay/v1/auto/messages\' \\\n--header \'Content-Type: application/json\' \\\n--data \'{\n "payload": "\'$(echo -n "Hello Waku Network - from Anonymous User" | base64)\'",\n "contentTopic": "/my-app/2/chatroom-1/proto"\n}\'\n')),(0,o.kt)("p",null,"Retrieve messages sent to a ",(0,o.kt)("inlineCode",{parentName:"p"},"contentTopic"),". Please note that this query can be made to any ",(0,o.kt)("inlineCode",{parentName:"p"},"Store")," node within the network:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"curl --location 'http://127.0.0.1:8645/store/v1/messages?contentTopics=%2Fmy-app%2F2%2Fchatroom-1%2Fproto&pageSize=50&ascending=true' \\\n--header 'Accept: application/json'\n")),(0,o.kt)("admonition",{title:"Congratulations!",type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"You have successfully started a ",(0,o.kt)("inlineCode",{parentName:"p"},"nwaku")," node with ",(0,o.kt)("inlineCode",{parentName:"p"},"RLN")," enabled using Docker Compose. Have a look at the ",(0,o.kt)("a",{parentName:"p",href:"/guides/nwaku/configure-nwaku"},"Node Configuration Examples")," and ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/waku-org/nwaku-compose/blob/master/ADVANCED.md"},"Advanced Configuration")," guides to learn how to configure ",(0,o.kt)("inlineCode",{parentName:"p"},"nwaku")," for different use cases.")))}d.isMDXComponent=!0},72308:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/nwaku-compose-dashboard-c0fdabab598b734808be427ff6b24672.png"}}]); \ No newline at end of file diff --git a/assets/js/7c28fd94.b39bfc8f.js b/assets/js/7c28fd94.b39bfc8f.js new file mode 100644 index 0000000..f023d4e --- /dev/null +++ b/assets/js/7c28fd94.b39bfc8f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[906],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>k});var a=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=a.createContext({}),p=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=p(e.components);return a.createElement(l.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,r=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),c=p(n),m=o,k=c["".concat(l,".").concat(m)]||c[m]||d[m]||r;return n?a.createElement(k,i(i({ref:t},u),{},{components:n})):a.createElement(k,i({ref:t},u))}));function k(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=n.length,i=new Array(r);i[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[c]="string"==typeof e?e:o,i[1]=s;for(var p=2;p{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>r,metadata:()=>s,toc:()=>p});var a=n(87462),o=(n(67294),n(3905));const r={title:"Run Nwaku with Docker Compose",hide_table_of_contents:!0},i=void 0,s={unversionedId:"guides/nwaku/run-docker-compose",id:"guides/nwaku/run-docker-compose",title:"Run Nwaku with Docker Compose",description:"nwaku-compose is a ready-to-use Docker Compose setup that configures the following automatically:",source:"@site/docs/guides/nwaku/run-docker-compose.md",sourceDirName:"guides/nwaku",slug:"/guides/nwaku/run-docker-compose",permalink:"/guides/nwaku/run-docker-compose",draft:!1,editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/docs/guides/nwaku/run-docker-compose.md",tags:[],version:"current",lastUpdatedAt:1715880135,formattedLastUpdatedAt:"16 May 2024",frontMatter:{title:"Run Nwaku with Docker Compose",hide_table_of_contents:!0},sidebar:"guides",previous:{title:"Run a Nwaku Node",permalink:"/guides/nwaku/run-node"},next:{title:"Run Nwaku in a Docker Container",permalink:"/guides/nwaku/run-docker"}},l={},p=[{value:"Video tutorial",id:"video-tutorial",level:2},{value:"Prerequisites",id:"prerequisites",level:2},{value:"Clone the repository",id:"clone-the-repository",level:2},{value:"Configure the setup",id:"configure-the-setup",level:2},{value:"Register for RLN membership",id:"register-for-rln-membership",level:2},{value:"Run the node",id:"run-the-node",level:2},{value:"Monitor the node",id:"monitor-the-node",level:2},{value:"Interact with the node",id:"interact-with-the-node",level:2}],u={toc:p},c="wrapper";function d(e){let{components:t,...r}=e;return(0,o.kt)(c,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://github.com/waku-org/nwaku-compose"},"nwaku-compose")," is a ready-to-use Docker Compose setup that configures the following automatically:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"nwaku")," node running ",(0,o.kt)("a",{parentName:"li",href:"/learn/concepts/protocols#relay"},"Relay")," and ",(0,o.kt)("a",{parentName:"li",href:"/learn/concepts/protocols#store"},"Store")," protocols with ",(0,o.kt)("a",{parentName:"li",href:"/learn/concepts/protocols#rln-relay"},"RLN")," enabled."),(0,o.kt)("li",{parentName:"ul"},"Simple frontend to interact with the node and Waku network to send and receive messages."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://grafana.com/"},"Grafana")," metrics dashboard for advanced users and node operators to monitor the node.")),(0,o.kt)("h2",{id:"video-tutorial"},"Video tutorial"),(0,o.kt)("div",{class:"video-container"},(0,o.kt)("iframe",{class:"yt-video",src:"https://www.youtube.com/embed/fs0ynLk4z0I",title:"How to run a Waku node using Nwaku Compose",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0})),(0,o.kt)("admonition",{type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"Check out the ",(0,o.kt)("a",{target:"_blank",href:n(18058).Z},"Waku Node Operator Cheatsheet")," to learn how to easily run, monitor, and interact with a node.")),(0,o.kt)("h2",{id:"prerequisites"},"Prerequisites"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://git-scm.com/"},"Git")," or ",(0,o.kt)("a",{parentName:"li",href:"https://desktop.github.com/"},"GitHub Desktop")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://docs.docker.com/engine/install/"},"Docker")," and ",(0,o.kt)("a",{parentName:"li",href:"https://docs.docker.com/compose/install/"},"Docker Compose")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/waku-org/nwaku/blob/master/docs/tutorial/pre-requisites-of-running-on-chain-spam-protected-chat2.md#3-access-a-node-on-the-sepolia-testnet-using-infura"},"Ethereum Sepolia WebSocket Endpoint")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/waku-org/nwaku/blob/master/docs/tutorial/pre-requisites-of-running-on-chain-spam-protected-chat2.md#2-obtain-sepolia-eth-from-faucet"},"Wallet with Sepolia Ethereum")," (less than 0.01 Sepolia ETH)"),(0,o.kt)("li",{parentName:"ul"},"A password to protect your RLN membership")),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"We recommend running a ",(0,o.kt)("inlineCode",{parentName:"p"},"nwaku")," node with at least 2GB of RAM, especially if ",(0,o.kt)("inlineCode",{parentName:"p"},"WSS")," is enabled. If running just a ",(0,o.kt)("inlineCode",{parentName:"p"},"Relay")," node, 0.5GB of RAM is sufficient.")),(0,o.kt)("h2",{id:"clone-the-repository"},"Clone the repository"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"git clone https://github.com/waku-org/nwaku-compose\ncd nwaku-compose\n")),(0,o.kt)("h2",{id:"configure-the-setup"},"Configure the setup"),(0,o.kt)("p",null,"Docker Compose ",(0,o.kt)("a",{parentName:"p",href:"https://docs.docker.com/compose/environment-variables/set-environment-variables/#additional-information-3"},"reads the ./.env file")," from the filesystem. You can use ",(0,o.kt)("inlineCode",{parentName:"p"},".env.example")," as a template to provide the above values. The recommended process for working with ",(0,o.kt)("inlineCode",{parentName:"p"},".env")," files is to duplicate ",(0,o.kt)("inlineCode",{parentName:"p"},".env.example"),", rename it as ",(0,o.kt)("inlineCode",{parentName:"p"},".env"),", and then make the necessary value edits."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"cp .env.example .env\n${EDITOR} .env\n")),(0,o.kt)("admonition",{type:"caution"},(0,o.kt)("p",{parentName:"admonition"},"Ensure that you do ",(0,o.kt)("strong",{parentName:"p"},"NOT")," include any secrets in the ",(0,o.kt)("inlineCode",{parentName:"p"},".env.example")," file, as it could accidentally be shared in the Git repository.")),(0,o.kt)("h2",{id:"register-for-rln-membership"},"Register for RLN membership"),(0,o.kt)("p",null,"The RLN membership is your access key to The Waku Network. Its registration is done on-chain, allowing your ",(0,o.kt)("inlineCode",{parentName:"p"},"nwaku")," node to send messages decentralised and privately, respecting some rate limits. Other peers won't relay messages that exceed the rate limit."),(0,o.kt)("p",null,"This command registers your membership and saves it in the ",(0,o.kt)("inlineCode",{parentName:"p"},"keystore/keystore.json")," file:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"./register_rln.sh\n")),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"If you only want to relay traffic without sending messages to the network, you don't need to register for RLN membership.")),(0,o.kt)("h2",{id:"run-the-node"},"Run the node"),(0,o.kt)("p",null,"Launch all the processes: ",(0,o.kt)("inlineCode",{parentName:"p"},"nwaku")," node, database for storing messages, and Grafana for metrics with the following command. Your RLN membership is loaded into ",(0,o.kt)("inlineCode",{parentName:"p"},"nwaku")," under the hood:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"docker-compose up -d\n")),(0,o.kt)("p",null,"View the logs of the node to confirm that it is running correctly:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"docker-compose logs -f nwaku\n")),(0,o.kt)("h2",{id:"monitor-the-node"},"Monitor the node"),(0,o.kt)("p",null,"Visit ",(0,o.kt)("a",{parentName:"p",href:"http://localhost:3000/d/yns_4vFVk/nwaku-monitoring"},"http://localhost:3000/d/yns_4vFVk/nwaku-monitoring")," to view your node metrics in real time."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"nwaku compose dashboard",src:n(72308).Z,width:"1080",height:"721"})),(0,o.kt)("admonition",{type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"To access Grafana from outside your machine, remove ",(0,o.kt)("inlineCode",{parentName:"p"},"127.0.0.1")," and open the port. Consider setting up a password for Grafana to ensure security.")),(0,o.kt)("h2",{id:"interact-with-the-node"},"Interact with the node"),(0,o.kt)("p",null,"Your ",(0,o.kt)("inlineCode",{parentName:"p"},"nwaku")," node provides a ",(0,o.kt)("a",{parentName:"p",href:"https://waku-org.github.io/waku-rest-api/"},"REST API")," on port ",(0,o.kt)("inlineCode",{parentName:"p"},"8645")," for interacting with it:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"# Get nwaku version\ncurl --location 'http://127.0.0.1:8645/debug/v1/version'\n\n# Get nwaku info\ncurl --location 'http://127.0.0.1:8645/debug/v1/info'\n")),(0,o.kt)("p",null,"Send a message to a ",(0,o.kt)("inlineCode",{parentName:"p"},"contentTopic"),", which all subscribers will receive. Please note that the ",(0,o.kt)("inlineCode",{parentName:"p"},"payload")," is encoded in ",(0,o.kt)("inlineCode",{parentName:"p"},"base64"),"."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},'curl --location \'http://127.0.0.1:8645/relay/v1/auto/messages\' \\\n--header \'Content-Type: application/json\' \\\n--data \'{\n "payload": "\'$(echo -n "Hello Waku Network - from Anonymous User" | base64)\'",\n "contentTopic": "/my-app/2/chatroom-1/proto"\n}\'\n')),(0,o.kt)("p",null,"Retrieve messages sent to a ",(0,o.kt)("inlineCode",{parentName:"p"},"contentTopic"),". Please note that this query can be made to any ",(0,o.kt)("inlineCode",{parentName:"p"},"Store")," node within the network:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"curl --location 'http://127.0.0.1:8645/store/v1/messages?contentTopics=%2Fmy-app%2F2%2Fchatroom-1%2Fproto&pageSize=50&ascending=true' \\\n--header 'Accept: application/json'\n")),(0,o.kt)("admonition",{type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"If you encounter issues running your node or require assistance with anything, please visit the ",(0,o.kt)("a",{parentName:"p",href:"https://discord.com/channels/1110799176264056863/1216748184592711691"},"#node-help channel")," on our Discord.")),(0,o.kt)("admonition",{title:"Congratulations!",type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"You have successfully started a ",(0,o.kt)("inlineCode",{parentName:"p"},"nwaku")," node with ",(0,o.kt)("inlineCode",{parentName:"p"},"RLN")," enabled using Docker Compose. Have a look at the ",(0,o.kt)("a",{parentName:"p",href:"/guides/nwaku/configure-nwaku"},"Node Configuration Examples")," and ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/waku-org/nwaku-compose/blob/master/ADVANCED.md"},"Advanced Configuration")," guides to learn how to configure ",(0,o.kt)("inlineCode",{parentName:"p"},"nwaku")," for different use cases.")))}d.isMDXComponent=!0},18058:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/files/Waku-NodeOperator-7fabb782473f2619b0b05dc209f12f53.pdf"},72308:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/nwaku-compose-dashboard-c0fdabab598b734808be427ff6b24672.png"}}]); \ No newline at end of file diff --git a/assets/js/80a3009a.a9c45f09.js b/assets/js/80a3009a.a9c45f09.js new file mode 100644 index 0000000..6d650d2 --- /dev/null +++ b/assets/js/80a3009a.a9c45f09.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[3116],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>v});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var l=n.createContext({}),s=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},p=function(e){var t=s(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,i=e.originalType,l=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),u=s(r),m=o,v=u["".concat(l,".").concat(m)]||u[m]||d[m]||i;return r?n.createElement(v,a(a({ref:t},p),{},{components:r})):n.createElement(v,a({ref:t},p))}));function v(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=r.length,a=new Array(i);a[0]=m;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[u]="string"==typeof e?e:o,a[1]=c;for(var s=2;s{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>s,default:()=>f,frontMatter:()=>l,metadata:()=>p,toc:()=>d});var n=r(87462),o=(r(67294),r(3905));const i={toc:[]},a="wrapper";function c(e){let{components:t,...r}=e;return(0,o.kt)(a,(0,n.Z)({},i,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("mermaid",{value:"sequenceDiagram\n Alice->>DNS Server: (1) Execute DNS Discovery\n DNS Server--\x3e>Alice: (2) Bob's multiaddr (websocket)\n Alice--\x3e>Bob: (3) Dial\n Alice->>Bob: (4) Peer Exchange Query\n Bob--\x3e>Alice: (5) Carol's ENR, David's ENR\n Alice->>Alice: (6) Decode ENRs\n Alice->>Carol: (7) Dial\n Alice->>David: (7) Dial\n Alice--\x3e>Bob: (8) Disconnect"}),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"DNS Discovery protocol is executed."),(0,o.kt)("li",{parentName:"ol"},"Alice retrieves Bob's websocket multiaddr from DNS Server."),(0,o.kt)("li",{parentName:"ol"},"Alice dials Bob using libp2p protocols."),(0,o.kt)("li",{parentName:"ol"},"Alice executes a Peer Exchange query to Bob."),(0,o.kt)("li",{parentName:"ol"},"Bob returns Carol's and David's ENR to Alice."),(0,o.kt)("li",{parentName:"ol"},"Alice decodes ENRs and extracts Carol's and David's websocket multiaddrs."),(0,o.kt)("li",{parentName:"ol"},"Alice dials Carol and David."),(0,o.kt)("li",{parentName:"ol"},"Alice can now drop the connection with Bob (bootstrap node); Alice has 2 connections to the Waku Network.")))}c.isMDXComponent=!0;const l={title:"Peer Exchange",hide_table_of_contents:!0},s=void 0,p={unversionedId:"learn/concepts/peer-exchange",id:"learn/concepts/peer-exchange",title:"Peer Exchange",description:"The primary objective of this protocol is to facilitate peer connectivity for resource-limited devices without relying on Discv5. The peer exchange protocol enables light nodes to request peers from other nodes within the network.",source:"@site/docs/learn/concepts/peer-exchange.md",sourceDirName:"learn/concepts",slug:"/learn/concepts/peer-exchange",permalink:"/learn/concepts/peer-exchange",draft:!1,editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/docs/learn/concepts/peer-exchange.md",tags:[],version:"current",lastUpdatedAt:1715880135,formattedLastUpdatedAt:"16 May 2024",frontMatter:{title:"Peer Exchange",hide_table_of_contents:!0},sidebar:"learn",previous:{title:"Discv5",permalink:"/learn/concepts/discv5"},next:{title:"Security Features",permalink:"/learn/security-features"}},u={},d=[{value:"Pros",id:"pros",level:4},{value:"Cons",id:"cons",level:4},{value:"Overview",id:"overview",level:2}],m={toc:d},v="wrapper";function f(e){let{components:t,...r}=e;return(0,o.kt)(v,(0,n.Z)({},m,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"The primary objective of this protocol is to facilitate peer connectivity for resource-limited devices without relying on ",(0,o.kt)("inlineCode",{parentName:"p"},"Discv5"),". The peer exchange protocol enables light nodes to request peers from other nodes within the network."),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},(0,o.kt)("inlineCode",{parentName:"p"},"Peer Exchange")," enables requesting random peers from other network nodes without revealing information about their connectivity or neighbourhood.")),(0,o.kt)("h4",{id:"pros"},"Pros"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Low resource requirements."),(0,o.kt)("li",{parentName:"ul"},"Decentralised with random sampling of nodes from a global view using ",(0,o.kt)("inlineCode",{parentName:"li"},"Discv5"),".")),(0,o.kt)("h4",{id:"cons"},"Cons"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Decreased anonymity."),(0,o.kt)("li",{parentName:"ul"},"Imposes additional load on responder nodes.")),(0,o.kt)("h2",{id:"overview"},"Overview"),(0,o.kt)(c,{mdxType:"PeerExchange"}))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/80a3009a.cbca04d0.js b/assets/js/80a3009a.cbca04d0.js deleted file mode 100644 index a9b4bad..0000000 --- a/assets/js/80a3009a.cbca04d0.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[3116],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>v});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var l=n.createContext({}),s=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=s(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),u=s(r),m=o,v=u["".concat(l,".").concat(m)]||u[m]||d[m]||a;return r?n.createElement(v,i(i({ref:t},p),{},{components:r})):n.createElement(v,i({ref:t},p))}));function v(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=m;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[u]="string"==typeof e?e:o,i[1]=c;for(var s=2;s{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>s,default:()=>f,frontMatter:()=>l,metadata:()=>p,toc:()=>d});var n=r(87462),o=(r(67294),r(3905));const a={toc:[]},i="wrapper";function c(e){let{components:t,...r}=e;return(0,o.kt)(i,(0,n.Z)({},a,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("mermaid",{value:"sequenceDiagram\n Alice->>DNS Server: (1) Execute DNS Discovery\n DNS Server--\x3e>Alice: (2) Bob's multiaddr (websocket)\n Alice--\x3e>Bob: (3) Dial\n Alice->>Bob: (4) Peer Exchange Query\n Bob--\x3e>Alice: (5) Carol's ENR, David's ENR\n Alice->>Alice: (6) Decode ENRs\n Alice->>Carol: (7) Dial\n Alice->>David: (7) Dial\n Alice--\x3e>Bob: (8) Disconnect"}),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"DNS Discovery protocol is executed."),(0,o.kt)("li",{parentName:"ol"},"Alice retrieves Bob's websocket multiaddr from DNS Server."),(0,o.kt)("li",{parentName:"ol"},"Alice dials Bob using libp2p protocols."),(0,o.kt)("li",{parentName:"ol"},"Alice executes a Peer Exchange query to Bob."),(0,o.kt)("li",{parentName:"ol"},"Bob returns Carol's and David's ENR to Alice."),(0,o.kt)("li",{parentName:"ol"},"Alice decodes ENRs and extracts Carol's and David's websocket multiaddrs."),(0,o.kt)("li",{parentName:"ol"},"Alice dials Carol and David."),(0,o.kt)("li",{parentName:"ol"},"Alice can now drop the connection with Bob (bootstrap node); Alice has 2 connections to the Waku Network.")))}c.isMDXComponent=!0;const l={title:"Peer Exchange",hide_table_of_contents:!0},s=void 0,p={unversionedId:"learn/concepts/peer-exchange",id:"learn/concepts/peer-exchange",title:"Peer Exchange",description:"The primary objective of this protocol is to facilitate peer connectivity for resource-limited devices without relying on Discv5. The peer exchange protocol enables light nodes to request peers from other nodes within the network. Have a look at the Peer Exchange specification to learn more.",source:"@site/docs/learn/concepts/peer-exchange.md",sourceDirName:"learn/concepts",slug:"/learn/concepts/peer-exchange",permalink:"/learn/concepts/peer-exchange",draft:!1,editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/docs/learn/concepts/peer-exchange.md",tags:[],version:"current",lastUpdatedAt:1700737292,formattedLastUpdatedAt:"23 Nov 2023",frontMatter:{title:"Peer Exchange",hide_table_of_contents:!0},sidebar:"learn",previous:{title:"Discv5",permalink:"/learn/concepts/discv5"},next:{title:"Security Features",permalink:"/learn/security-features"}},u={},d=[{value:"Pros",id:"pros",level:4},{value:"Cons",id:"cons",level:4},{value:"Overview",id:"overview",level:2}],m={toc:d},v="wrapper";function f(e){let{components:t,...r}=e;return(0,o.kt)(v,(0,n.Z)({},m,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"The primary objective of this protocol is to facilitate peer connectivity for resource-limited devices without relying on ",(0,o.kt)("inlineCode",{parentName:"p"},"Discv5"),". The peer exchange protocol enables light nodes to request peers from other nodes within the network. Have a look at the ",(0,o.kt)("a",{parentName:"p",href:"https://rfc.vac.dev/spec/34/"},"Peer Exchange")," specification to learn more."),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},(0,o.kt)("inlineCode",{parentName:"p"},"Peer Exchange")," enables requesting random peers from other network nodes without revealing information about their connectivity or neighbourhood.")),(0,o.kt)("h4",{id:"pros"},"Pros"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Low resource requirements."),(0,o.kt)("li",{parentName:"ul"},"Decentralised with random sampling of nodes from a global view using ",(0,o.kt)("inlineCode",{parentName:"li"},"Discv5"),".")),(0,o.kt)("h4",{id:"cons"},"Cons"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Decreased anonymity."),(0,o.kt)("li",{parentName:"ul"},"Imposes additional load on responder nodes.")),(0,o.kt)("h2",{id:"overview"},"Overview"),(0,o.kt)(c,{mdxType:"PeerExchange"}))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/80ec2a43.411fafd5.js b/assets/js/80ec2a43.411fafd5.js new file mode 100644 index 0000000..ab2b23d --- /dev/null +++ b/assets/js/80ec2a43.411fafd5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[3634],{3905:(e,n,t)=>{t.d(n,{Zo:()=>p,kt:()=>f});var o=t(67294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);n&&(o=o.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,o)}return t}function r(e){for(var n=1;n=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var u=o.createContext({}),s=function(e){var n=o.useContext(u),t=n;return e&&(t="function"==typeof e?e(n):r(r({},n),e)),t},p=function(e){var n=s(e.components);return o.createElement(u.Provider,{value:n},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var n=e.children;return o.createElement(o.Fragment,{},n)}},m=o.forwardRef((function(e,n){var t=e.components,a=e.mdxType,i=e.originalType,u=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=s(t),m=a,f=d["".concat(u,".").concat(m)]||d[m]||c[m]||i;return t?o.createElement(f,r(r({ref:n},p),{},{components:t})):o.createElement(f,r({ref:n},p))}));function f(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var i=t.length,r=new Array(i);r[0]=m;var l={};for(var u in n)hasOwnProperty.call(n,u)&&(l[u]=n[u]);l.originalType=e,l[d]="string"==typeof e?e:a,r[1]=l;for(var s=2;s{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>r,default:()=>c,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var o=t(87462),a=(t(67294),t(3905));const i={title:"Node Configuration Methods",hide_table_of_contents:!0},r=void 0,l={unversionedId:"guides/nwaku/config-methods",id:"guides/nwaku/config-methods",title:"Node Configuration Methods",description:"Waku nodes can be configured using a combination of the following methods:",source:"@site/docs/guides/nwaku/config-methods.md",sourceDirName:"guides/nwaku",slug:"/guides/nwaku/config-methods",permalink:"/guides/nwaku/config-methods",draft:!1,editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/docs/guides/nwaku/config-methods.md",tags:[],version:"current",lastUpdatedAt:1710942990,formattedLastUpdatedAt:"20 Mar 2024",frontMatter:{title:"Node Configuration Methods",hide_table_of_contents:!0},sidebar:"guides",previous:{title:"Find Your Node Address",permalink:"/guides/nwaku/find-node-address"},next:{title:"Node Configuration Options",permalink:"/guides/nwaku/config-options"}},u={},s=[{value:"Command line options",id:"command-line-options",level:2},{value:"Environment variables",id:"environment-variables",level:2},{value:"Configuration files",id:"configuration-files",level:2},{value:"Default configuration values",id:"default-configuration-values",level:2}],p={toc:s},d="wrapper";function c(e){let{components:n,...t}=e;return(0,a.kt)(d,(0,o.Z)({},p,t,{components:n,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"Waku nodes can be configured using a combination of the following methods:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Command line options and flags"),(0,a.kt)("li",{parentName:"ol"},"Environment variables"),(0,a.kt)("li",{parentName:"ol"},"TOML configuration files (currently the only supported format)"),(0,a.kt)("li",{parentName:"ol"},"Default values")),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"Take note of the precedence order: Each configuration method overrides the one below it (e.g., command line options override environment variables and configuration files).")),(0,a.kt)("h2",{id:"command-line-options"},"Command line options"),(0,a.kt)("p",null,"Node configuration is primarily done using command line options, which override other methods. Specify ",(0,a.kt)("a",{parentName:"p",href:"/guides/nwaku/config-options"},"configuration options")," by providing them in this format after the binary name:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-shell"},"./build/wakunode2 --tcp-port=65000\n")),(0,a.kt)("p",null,"When running your node with Docker, provide the command line options after the image name in this format:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-shell"},"docker run statusteam/nim-waku --tcp-port=65000\n")),(0,a.kt)("h2",{id:"environment-variables"},"Environment variables"),(0,a.kt)("p",null,"Nodes can be configured using environment variables by prefixing the variable name with ",(0,a.kt)("inlineCode",{parentName:"p"},"WAKUNODE2_")," and using the configuration option in ",(0,a.kt)("a",{parentName:"p",href:"https://en.wiktionary.org/wiki/screaming_snake_case"},"SCREAMING_SNAKE_CASE")," format."),(0,a.kt)("p",null,"To set the ",(0,a.kt)("inlineCode",{parentName:"p"},"tcp-port")," configuration, the ",(0,a.kt)("inlineCode",{parentName:"p"},"wakunode2")," binary should be called in this format:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-shell"},"WAKUNODE2_TCP_PORT=65000 ./build/wakunode2\n")),(0,a.kt)("p",null,"When running your node with Docker, start the node using the ",(0,a.kt)("inlineCode",{parentName:"p"},"-e")," command option:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-shell"},'docker run -e "WAKUNODE2_TCP_PORT=65000" statusteam/nim-waku\n')),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"This is the second configuration method in order of precedence. ",(0,a.kt)("a",{parentName:"p",href:"#command-line-options"},"Command Line Options")," override environment variables.")),(0,a.kt)("h2",{id:"configuration-files"},"Configuration files"),(0,a.kt)("p",null,"Nodes can be configured using a configuration file following the ",(0,a.kt)("a",{parentName:"p",href:"https://toml.io/en/"},"TOML")," format:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-toml",metastring:'title="TOML Config File" showLineNumbers',title:'"TOML',Config:!0,'File"':!0,showLineNumbers:!0},'log-level = "DEBUG"\ntcp-port = 65000\ntopic = ["/waku/2/default-waku/proto"]\nmetrics-logging = false\n')),(0,a.kt)("p",null,"The ",(0,a.kt)("inlineCode",{parentName:"p"},"config-file")," ",(0,a.kt)("a",{parentName:"p",href:"/guides/nwaku/config-options"},"configuration option")," lets you specify the configuration file path:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-shell"},"./build/wakunode2 --config-file=[TOML CONFIGURATION FILE]\n")),(0,a.kt)("p",null,"You can also specify the configuration file via environment variables:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-shell"},'# Using environment variables\nWAKUNODE2_CONFIG_FILE=[TOML CONFIGURATION FILE] ./build/wakunode2\n\n# Using environment variables with Docker\ndocker run -e "WAKUNODE2_CONFIG_FILE=[TOML CONFIGURATION FILE]" statusteam/nim-waku\n')),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"This is the third configuration method in order of precedence. ",(0,a.kt)("a",{parentName:"p",href:"#command-line-options"},"Command Line Options")," and ",(0,a.kt)("a",{parentName:"p",href:"#environment-variables"},"Environment Variables")," override configuration files.")),(0,a.kt)("h2",{id:"default-configuration-values"},"Default configuration values"),(0,a.kt)("p",null,"The default configuration is used when no other options are specified. By default, a ",(0,a.kt)("inlineCode",{parentName:"p"},"nwaku")," node does the following:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Generate a new ",(0,a.kt)("inlineCode",{parentName:"li"},"Node Key")," and ",(0,a.kt)("inlineCode",{parentName:"li"},"PeerID"),"."),(0,a.kt)("li",{parentName:"ul"},"Listen for incoming libp2p connections on the default TCP port (",(0,a.kt)("inlineCode",{parentName:"li"},"60000"),")."),(0,a.kt)("li",{parentName:"ul"},"Subscribe to the default Pub/Sub topic (",(0,a.kt)("inlineCode",{parentName:"li"},"/waku/2/default-waku/proto"),")."),(0,a.kt)("li",{parentName:"ul"},"Enable the ",(0,a.kt)("inlineCode",{parentName:"li"},"Relay")," protocol for relaying messages."),(0,a.kt)("li",{parentName:"ul"},"Enable the ",(0,a.kt)("inlineCode",{parentName:"li"},"Store")," protocol as a client, allowing it to query peers for historical messages but not store any message itself.")),(0,a.kt)("p",null,"To see the default values of all ",(0,a.kt)("a",{parentName:"p",href:"/guides/nwaku/config-options"},"configuration options"),", run ",(0,a.kt)("inlineCode",{parentName:"p"},"wakunode2 --help"),":"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-shell"},"./build/wakunode2 --help\n")),(0,a.kt)("admonition",{type:"tip"},(0,a.kt)("p",{parentName:"admonition"},"To explore the available node configuration options, have a look at the ",(0,a.kt)("a",{parentName:"p",href:"/guides/nwaku/config-options"},"Node Configuration Options")," guide.")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/80ec2a43.8724ba59.js b/assets/js/80ec2a43.8724ba59.js deleted file mode 100644 index 613a383..0000000 --- a/assets/js/80ec2a43.8724ba59.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[3634],{3905:(e,n,t)=>{t.d(n,{Zo:()=>p,kt:()=>f});var o=t(67294);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);n&&(o=o.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,o)}return t}function r(e){for(var n=1;n=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var u=o.createContext({}),s=function(e){var n=o.useContext(u),t=n;return e&&(t="function"==typeof e?e(n):r(r({},n),e)),t},p=function(e){var n=s(e.components);return o.createElement(u.Provider,{value:n},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var n=e.children;return o.createElement(o.Fragment,{},n)}},m=o.forwardRef((function(e,n){var t=e.components,i=e.mdxType,a=e.originalType,u=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=s(t),m=i,f=d["".concat(u,".").concat(m)]||d[m]||c[m]||a;return t?o.createElement(f,r(r({ref:n},p),{},{components:t})):o.createElement(f,r({ref:n},p))}));function f(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var a=t.length,r=new Array(a);r[0]=m;var l={};for(var u in n)hasOwnProperty.call(n,u)&&(l[u]=n[u]);l.originalType=e,l[d]="string"==typeof e?e:i,r[1]=l;for(var s=2;s{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>r,default:()=>c,frontMatter:()=>a,metadata:()=>l,toc:()=>s});var o=t(87462),i=(t(67294),t(3905));const a={title:"Node Configuration Methods",hide_table_of_contents:!0},r=void 0,l={unversionedId:"guides/nwaku/config-methods",id:"guides/nwaku/config-methods",title:"Node Configuration Methods",description:"Waku nodes can be configured using a combination of the following methods:",source:"@site/docs/guides/nwaku/config-methods.md",sourceDirName:"guides/nwaku",slug:"/guides/nwaku/config-methods",permalink:"/guides/nwaku/config-methods",draft:!1,editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/docs/guides/nwaku/config-methods.md",tags:[],version:"current",lastUpdatedAt:1710942990,formattedLastUpdatedAt:"20 Mar 2024",frontMatter:{title:"Node Configuration Methods",hide_table_of_contents:!0},sidebar:"guides",previous:{title:"Configure Peer Discovery",permalink:"/guides/nwaku/configure-discovery"},next:{title:"Node Configuration Options",permalink:"/guides/nwaku/config-options"}},u={},s=[{value:"Command line options",id:"command-line-options",level:2},{value:"Environment variables",id:"environment-variables",level:2},{value:"Configuration files",id:"configuration-files",level:2},{value:"Default configuration values",id:"default-configuration-values",level:2}],p={toc:s},d="wrapper";function c(e){let{components:n,...t}=e;return(0,i.kt)(d,(0,o.Z)({},p,t,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"Waku nodes can be configured using a combination of the following methods:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Command line options and flags"),(0,i.kt)("li",{parentName:"ol"},"Environment variables"),(0,i.kt)("li",{parentName:"ol"},"TOML configuration files (currently the only supported format)"),(0,i.kt)("li",{parentName:"ol"},"Default values")),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Take note of the precedence order: Each configuration method overrides the one below it (e.g., command line options override environment variables and configuration files).")),(0,i.kt)("h2",{id:"command-line-options"},"Command line options"),(0,i.kt)("p",null,"Node configuration is primarily done using command line options, which override other methods. Specify ",(0,i.kt)("a",{parentName:"p",href:"/guides/nwaku/config-options"},"configuration options")," by providing them in this format after the binary name:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-shell"},"./build/wakunode2 --tcp-port=65000\n")),(0,i.kt)("p",null,"When running your node with Docker, provide the command line options after the image name in this format:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-shell"},"docker run statusteam/nim-waku --tcp-port=65000\n")),(0,i.kt)("h2",{id:"environment-variables"},"Environment variables"),(0,i.kt)("p",null,"Nodes can be configured using environment variables by prefixing the variable name with ",(0,i.kt)("inlineCode",{parentName:"p"},"WAKUNODE2_")," and using the configuration option in ",(0,i.kt)("a",{parentName:"p",href:"https://en.wiktionary.org/wiki/screaming_snake_case"},"SCREAMING_SNAKE_CASE")," format."),(0,i.kt)("p",null,"To set the ",(0,i.kt)("inlineCode",{parentName:"p"},"tcp-port")," configuration, the ",(0,i.kt)("inlineCode",{parentName:"p"},"wakunode2")," binary should be called in this format:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-shell"},"WAKUNODE2_TCP_PORT=65000 ./build/wakunode2\n")),(0,i.kt)("p",null,"When running your node with Docker, start the node using the ",(0,i.kt)("inlineCode",{parentName:"p"},"-e")," command option:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-shell"},'docker run -e "WAKUNODE2_TCP_PORT=65000" statusteam/nim-waku\n')),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"This is the second configuration method in order of precedence. ",(0,i.kt)("a",{parentName:"p",href:"#command-line-options"},"Command Line Options")," override environment variables.")),(0,i.kt)("h2",{id:"configuration-files"},"Configuration files"),(0,i.kt)("p",null,"Nodes can be configured using a configuration file following the ",(0,i.kt)("a",{parentName:"p",href:"https://toml.io/en/"},"TOML")," format:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-toml",metastring:'title="TOML Config File" showLineNumbers',title:'"TOML',Config:!0,'File"':!0,showLineNumbers:!0},'log-level = "DEBUG"\ntcp-port = 65000\ntopic = ["/waku/2/default-waku/proto"]\nmetrics-logging = false\n')),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"config-file")," ",(0,i.kt)("a",{parentName:"p",href:"/guides/nwaku/config-options"},"configuration option")," lets you specify the configuration file path:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-shell"},"./build/wakunode2 --config-file=[TOML CONFIGURATION FILE]\n")),(0,i.kt)("p",null,"You can also specify the configuration file via environment variables:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-shell"},'# Using environment variables\nWAKUNODE2_CONFIG_FILE=[TOML CONFIGURATION FILE] ./build/wakunode2\n\n# Using environment variables with Docker\ndocker run -e "WAKUNODE2_CONFIG_FILE=[TOML CONFIGURATION FILE]" statusteam/nim-waku\n')),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"This is the third configuration method in order of precedence. ",(0,i.kt)("a",{parentName:"p",href:"#command-line-options"},"Command Line Options")," and ",(0,i.kt)("a",{parentName:"p",href:"#environment-variables"},"Environment Variables")," override configuration files.")),(0,i.kt)("h2",{id:"default-configuration-values"},"Default configuration values"),(0,i.kt)("p",null,"The default configuration is used when no other options are specified. By default, a ",(0,i.kt)("inlineCode",{parentName:"p"},"nwaku")," node does the following:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Generate a new ",(0,i.kt)("inlineCode",{parentName:"li"},"Node Key")," and ",(0,i.kt)("inlineCode",{parentName:"li"},"PeerID"),"."),(0,i.kt)("li",{parentName:"ul"},"Listen for incoming libp2p connections on the default TCP port (",(0,i.kt)("inlineCode",{parentName:"li"},"60000"),")."),(0,i.kt)("li",{parentName:"ul"},"Subscribe to the default Pub/Sub topic (",(0,i.kt)("inlineCode",{parentName:"li"},"/waku/2/default-waku/proto"),")."),(0,i.kt)("li",{parentName:"ul"},"Enable the ",(0,i.kt)("inlineCode",{parentName:"li"},"Relay")," protocol for relaying messages."),(0,i.kt)("li",{parentName:"ul"},"Enable the ",(0,i.kt)("inlineCode",{parentName:"li"},"Store")," protocol as a client, allowing it to query peers for historical messages but not store any message itself.")),(0,i.kt)("p",null,"To see the default values of all ",(0,i.kt)("a",{parentName:"p",href:"/guides/nwaku/config-options"},"configuration options"),", run ",(0,i.kt)("inlineCode",{parentName:"p"},"wakunode2 --help"),":"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-shell"},"./build/wakunode2 --help\n")),(0,i.kt)("admonition",{type:"tip"},(0,i.kt)("p",{parentName:"admonition"},"To explore the available node configuration options, have a look at the ",(0,i.kt)("a",{parentName:"p",href:"/guides/nwaku/config-options"},"Node Configuration Options")," guide.")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8a655033.0ca2bbe1.js b/assets/js/8a655033.0ca2bbe1.js new file mode 100644 index 0000000..203bac9 --- /dev/null +++ b/assets/js/8a655033.0ca2bbe1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[1385],{3905:(e,n,t)=>{t.d(n,{Zo:()=>s,kt:()=>k});var a=t(67294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var p=a.createContext({}),d=function(e){var n=a.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},s=function(e){var n=d(e.components);return a.createElement(p.Provider,{value:n},e.children)},u="mdxType",c={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},m=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,p=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),u=d(t),m=r,k=u["".concat(p,".").concat(m)]||u[m]||c[m]||i;return t?a.createElement(k,o(o({ref:n},s),{},{components:t})):a.createElement(k,o({ref:n},s))}));function k(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,o=new Array(i);o[0]=m;var l={};for(var p in n)hasOwnProperty.call(n,p)&&(l[p]=n[p]);l.originalType=e,l[u]="string"==typeof e?e:r,o[1]=l;for(var d=2;d{t.r(n),t.d(n,{assets:()=>p,contentTitle:()=>o,default:()=>c,frontMatter:()=>i,metadata:()=>l,toc:()=>d});var a=t(87462),r=(t(67294),t(3905));const i={title:"Configure Peer Discovery",hide_table_of_contents:!0},o=void 0,l={unversionedId:"guides/nwaku/configure-discovery",id:"guides/nwaku/configure-discovery",title:"Configure Peer Discovery",description:"This guide provides detailed steps to configure a nwaku node to discover and connect with peers in the Waku Network.",source:"@site/docs/guides/nwaku/configure-discovery.md",sourceDirName:"guides/nwaku",slug:"/guides/nwaku/configure-discovery",permalink:"/guides/nwaku/configure-discovery",draft:!1,editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/docs/guides/nwaku/configure-discovery.md",tags:[],version:"current",lastUpdatedAt:1710703788,formattedLastUpdatedAt:"17 Mar 2024",frontMatter:{title:"Configure Peer Discovery",hide_table_of_contents:!0},sidebar:"guides",previous:{title:"Build Nwaku from Source",permalink:"/guides/nwaku/build-source"},next:{title:"Find Your Node Address",permalink:"/guides/nwaku/find-node-address"}},p={},d=[{value:"Configure static peers",id:"configure-static-peers",level:2},{value:"Configure DNS discovery",id:"configure-dns-discovery",level:2},{value:"Configure Discv5",id:"configure-discv5",level:2},{value:"Configure peer exchange",id:"configure-peer-exchange",level:2}],s={toc:d},u="wrapper";function c(e){let{components:n,...t}=e;return(0,r.kt)(u,(0,a.Z)({},s,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"This guide provides detailed steps to configure a ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," node to discover and connect with peers in the Waku Network."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"You can configure a ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," node to use multiple peer discovery mechanisms simultaneously.")),(0,r.kt)("h2",{id:"configure-static-peers"},"Configure static peers"),(0,r.kt)("p",null,"You can provide ",(0,r.kt)("a",{parentName:"p",href:"/learn/concepts/static-peers"},"static peers")," to a ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," node during startup using the ",(0,r.kt)("inlineCode",{parentName:"p"},"staticnode")," configuration option. To connect to multiple peers on startup, repeat the ",(0,r.kt)("inlineCode",{parentName:"p"},"staticnode")," option:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"./build/wakunode2 \\\n --staticnode=[PEER MULTIADDR 1] \\\n --staticnode=[PEER MULTIADDR 2]\n")),(0,r.kt)("p",null,"For example, consider a ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," node that connects to two static peers on the same local host (IP: ",(0,r.kt)("inlineCode",{parentName:"p"},"0.0.0.0"),") using TCP ports ",(0,r.kt)("inlineCode",{parentName:"p"},"60002")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"60003"),":"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"./build/wakunode2 \\\n --staticnode=/ip4/0.0.0.0/tcp/60002/p2p/16Uiu2HAkzjwwgEAXfeGNMKFPSpc6vGBRqCdTLG5q3Gmk2v4pQw7H \\\n --staticnode=/ip4/0.0.0.0/tcp/60003/p2p/16Uiu2HAmFBA7LGtwY5WVVikdmXVo3cKLqkmvVtuDu63fe8safeQJ\n")),(0,r.kt)("h2",{id:"configure-dns-discovery"},"Configure DNS discovery"),(0,r.kt)("p",null,"To enable ",(0,r.kt)("a",{parentName:"p",href:"/learn/concepts/dns-discovery"},"DNS Discovery")," in a ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," node, use the following configuration options:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"dns-discovery"),": Enables ",(0,r.kt)("inlineCode",{parentName:"li"},"DNS Discovery")," on the node (disabled by default)."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"dns-discovery-url"),": URL for DNS node list in the format ",(0,r.kt)("inlineCode",{parentName:"li"},"enrtree://@")," where ",(0,r.kt)("inlineCode",{parentName:"li"},"")," is the fully qualified domain name and ",(0,r.kt)("inlineCode",{parentName:"li"},"")," is the base32 encoding of the compressed 32-byte public key that signed the list at that location."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"dns-discovery-name-server")," (optional): DNS name server IPs to query. You can repeat this option to provide multiple DNS name servers.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"./build/wakunode2 \\\n --dns-discovery=true \\\n --dns-discovery-url=enrtree://[PUBLIC KEY]@[DOMAIN NAME] \\\n --dns-discovery-name-server=[DNS NAME SERVER IP]\n")),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"If you omit the ",(0,r.kt)("inlineCode",{parentName:"p"},"dns-discovery-name-server")," option, ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," will attempt to use the CloudFlare servers ",(0,r.kt)("inlineCode",{parentName:"p"},"1.1.1.1")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"1.0.0.1"),".")),(0,r.kt)("p",null,"For example, consider a ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," node that enables ",(0,r.kt)("inlineCode",{parentName:"p"},"DNS Discovery"),", connects to a DNS node list, and queries the IPs ",(0,r.kt)("inlineCode",{parentName:"p"},"8.8.8.8")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"8.8.4.4"),":"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"./build/wakunode2 \\\n --dns-discovery=true \\\n --dns-discovery-url=enrtree://AIRVQ5DDA4FFWLRBCHJWUWOO6X6S4ZTZ5B667LQ6AJU6PEYDLRD5O@sandbox.waku.nodes.status.im \\\n --dns-discovery-name-server=8.8.8.8 \\\n --dns-discovery-name-server=8.8.4.4\n")),(0,r.kt)("h2",{id:"configure-discv5"},"Configure Discv5"),(0,r.kt)("p",null,"To enable ",(0,r.kt)("a",{parentName:"p",href:"/learn/concepts/discv5"},"Discv5")," in a ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," node, use the following configuration options:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"discv5-discovery"),": Enables ",(0,r.kt)("inlineCode",{parentName:"li"},"Discv5")," on the node (disabled by default)."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"discv5-bootstrap-node"),": ENR for ",(0,r.kt)("inlineCode",{parentName:"li"},"Discv5")," routing table bootstrap node. You can repeat this option to provide multiple bootstrap entries.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"./build/wakunode2 \\\n --discv5-discovery=true \\\n --discv5-bootstrap-node=[DISCV5 ENR BOOTSTRAP ENTRY 1] \\\n --discv5-bootstrap-node=[DISCV5 ENR BOOTSTRAP ENTRY 2]\n")),(0,r.kt)("p",null,"For example, consider a ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," node that enables ",(0,r.kt)("inlineCode",{parentName:"p"},"Discv5")," and bootstraps its routing table using a static ",(0,r.kt)("inlineCode",{parentName:"p"},"ENR"),":"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"./build/wakunode2 \\\n --discv5-discovery=true \\\n --discv5-bootstrap-node=enr:-IO4QDxToTg86pPCK2KvMeVCXC2ADVZWrxXSvNZeaoa0JhShbM5qed69RQz1s1mWEEqJ3aoklo_7EU9iIBcPMVeKlCQBgmlkgnY0iXNlY3AyNTZrMaEDdBHK1Gx6y_zv5DVw5Qb3DtSOMmVHTZO1WSORrF2loL2DdWRwgiMohXdha3UyAw\n")),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"When Discv5 is enabled and used with ",(0,r.kt)("a",{parentName:"p",href:"#configure-dns-discovery"},"DNS Discovery"),", the ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," node will attempt to bootstrap the Discv5 routing table by extracting ",(0,r.kt)("inlineCode",{parentName:"p"},"ENRs")," from peers discovered through DNS.")),(0,r.kt)("h2",{id:"configure-peer-exchange"},"Configure peer exchange"),(0,r.kt)("p",null,"To enable ",(0,r.kt)("a",{parentName:"p",href:"/learn/concepts/peer-exchange"},"Peer Exchange")," in a ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," node, use the following configuration options:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"peer-exchange"),": Enables ",(0,r.kt)("inlineCode",{parentName:"li"},"Peer Exchange")," on the node as a responder (disabled by default)."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"peer-exchange-node")," (optional): Multiaddr for bootstrap node with the peer exchange protocol enabled.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"./build/wakunode2 \\\n --peer-exchange=true \\\n --peer-exchange-node=[PEER MULTIADDR WITH EXCHANGE ENABLED]\n")),(0,r.kt)("p",null,"For example, consider two ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," nodes configured as a ",(0,r.kt)("inlineCode",{parentName:"p"},"server")," (peer exchange responder node) and ",(0,r.kt)("inlineCode",{parentName:"p"},"client")," (node using peer exchange) on the same local host (IP: ",(0,r.kt)("inlineCode",{parentName:"p"},"0.0.0.0"),"):"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell",metastring:'title="Server: Nwaku Node with Peer Exchange Enabled"',title:'"Server:',Nwaku:!0,Node:!0,with:!0,Peer:!0,Exchange:!0,'Enabled"':!0},"./build/wakunode2 --peer-exchange=true\n")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell",metastring:'title="Client: Nwaku Node Bootstrapping with Peer Exchange"',title:'"Client:',Nwaku:!0,Node:!0,Bootstrapping:!0,with:!0,Peer:!0,'Exchange"':!0},"./build/wakunode2 \\\n --tcp-port=30305 \\\n --ports-shift=1 \\\n --peer-exchange-node=/ip4/0.0.0.0/tcp/60000/p2p/16Uiu2HAmLCe6zVqCS6KMqqRbbhyoJjfYZGr1Q3thTSbyKzibQkFR\n")),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," provides a ",(0,r.kt)("a",{parentName:"p",href:"/guides/nwaku/config-options#relay-config"},(0,r.kt)("inlineCode",{parentName:"a"},"relay-peer-exchange"))," option via ",(0,r.kt)("inlineCode",{parentName:"p"},"libp2p")," for peer exchange, allowing network growth through neighbouring nodes. However, this feature can compromise security and network robustness, so we recommend only using it in high-trust environments.")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8a655033.e68ea003.js b/assets/js/8a655033.e68ea003.js deleted file mode 100644 index 318d85f..0000000 --- a/assets/js/8a655033.e68ea003.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[1385],{3905:(e,n,t)=>{t.d(n,{Zo:()=>d,kt:()=>k});var a=t(67294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var p=a.createContext({}),s=function(e){var n=a.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},d=function(e){var n=s(e.components);return a.createElement(p.Provider,{value:n},e.children)},u="mdxType",c={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},m=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,p=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),u=s(t),m=r,k=u["".concat(p,".").concat(m)]||u[m]||c[m]||i;return t?a.createElement(k,o(o({ref:n},d),{},{components:t})):a.createElement(k,o({ref:n},d))}));function k(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,o=new Array(i);o[0]=m;var l={};for(var p in n)hasOwnProperty.call(n,p)&&(l[p]=n[p]);l.originalType=e,l[u]="string"==typeof e?e:r,o[1]=l;for(var s=2;s{t.r(n),t.d(n,{assets:()=>p,contentTitle:()=>o,default:()=>c,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var a=t(87462),r=(t(67294),t(3905));const i={title:"Configure Peer Discovery",hide_table_of_contents:!0},o=void 0,l={unversionedId:"guides/nwaku/configure-discovery",id:"guides/nwaku/configure-discovery",title:"Configure Peer Discovery",description:"This guide provides detailed steps to configure a nwaku node to discover and connect with peers in the Waku Network.",source:"@site/docs/guides/nwaku/configure-discovery.md",sourceDirName:"guides/nwaku",slug:"/guides/nwaku/configure-discovery",permalink:"/guides/nwaku/configure-discovery",draft:!1,editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/docs/guides/nwaku/configure-discovery.md",tags:[],version:"current",lastUpdatedAt:1710703788,formattedLastUpdatedAt:"17 Mar 2024",frontMatter:{title:"Configure Peer Discovery",hide_table_of_contents:!0},sidebar:"guides",previous:{title:"Build Nwaku from Source",permalink:"/guides/nwaku/build-source"},next:{title:"Node Configuration Methods",permalink:"/guides/nwaku/config-methods"}},p={},s=[{value:"Configure static peers",id:"configure-static-peers",level:2},{value:"Configure DNS discovery",id:"configure-dns-discovery",level:2},{value:"Configure Discv5",id:"configure-discv5",level:2},{value:"Configure peer exchange",id:"configure-peer-exchange",level:2}],d={toc:s},u="wrapper";function c(e){let{components:n,...t}=e;return(0,r.kt)(u,(0,a.Z)({},d,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"This guide provides detailed steps to configure a ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," node to discover and connect with peers in the Waku Network."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"You can configure a ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," node to use multiple peer discovery mechanisms simultaneously.")),(0,r.kt)("h2",{id:"configure-static-peers"},"Configure static peers"),(0,r.kt)("p",null,"You can provide ",(0,r.kt)("a",{parentName:"p",href:"/learn/concepts/static-peers"},"static peers")," to a ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," node during startup using the ",(0,r.kt)("inlineCode",{parentName:"p"},"staticnode")," configuration option. To connect to multiple peers on startup, repeat the ",(0,r.kt)("inlineCode",{parentName:"p"},"staticnode")," option:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"./build/wakunode2 \\\n --staticnode=[PEER MULTIADDR 1] \\\n --staticnode=[PEER MULTIADDR 2]\n")),(0,r.kt)("p",null,"For example, consider a ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," node that connects to two static peers on the same local host (IP: ",(0,r.kt)("inlineCode",{parentName:"p"},"0.0.0.0"),") using TCP ports ",(0,r.kt)("inlineCode",{parentName:"p"},"60002")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"60003"),":"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"./build/wakunode2 \\\n --staticnode=/ip4/0.0.0.0/tcp/60002/p2p/16Uiu2HAkzjwwgEAXfeGNMKFPSpc6vGBRqCdTLG5q3Gmk2v4pQw7H \\\n --staticnode=/ip4/0.0.0.0/tcp/60003/p2p/16Uiu2HAmFBA7LGtwY5WVVikdmXVo3cKLqkmvVtuDu63fe8safeQJ\n")),(0,r.kt)("h2",{id:"configure-dns-discovery"},"Configure DNS discovery"),(0,r.kt)("p",null,"To enable ",(0,r.kt)("a",{parentName:"p",href:"/learn/concepts/dns-discovery"},"DNS Discovery")," in a ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," node, use the following configuration options:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"dns-discovery"),": Enables ",(0,r.kt)("inlineCode",{parentName:"li"},"DNS Discovery")," on the node (disabled by default)."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"dns-discovery-url"),": URL for DNS node list in the format ",(0,r.kt)("inlineCode",{parentName:"li"},"enrtree://@")," where ",(0,r.kt)("inlineCode",{parentName:"li"},"")," is the fully qualified domain name and ",(0,r.kt)("inlineCode",{parentName:"li"},"")," is the base32 encoding of the compressed 32-byte public key that signed the list at that location."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"dns-discovery-name-server")," (optional): DNS name server IPs to query. You can repeat this option to provide multiple DNS name servers.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"./build/wakunode2 \\\n --dns-discovery=true \\\n --dns-discovery-url=enrtree://[PUBLIC KEY]@[DOMAIN NAME] \\\n --dns-discovery-name-server=[DNS NAME SERVER IP]\n")),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"If you omit the ",(0,r.kt)("inlineCode",{parentName:"p"},"dns-discovery-name-server")," option, ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," will attempt to use the CloudFlare servers ",(0,r.kt)("inlineCode",{parentName:"p"},"1.1.1.1")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"1.0.0.1"),".")),(0,r.kt)("p",null,"For example, consider a ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," node that enables ",(0,r.kt)("inlineCode",{parentName:"p"},"DNS Discovery"),", connects to a DNS node list, and queries the IPs ",(0,r.kt)("inlineCode",{parentName:"p"},"8.8.8.8")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"8.8.4.4"),":"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"./build/wakunode2 \\\n --dns-discovery=true \\\n --dns-discovery-url=enrtree://AIRVQ5DDA4FFWLRBCHJWUWOO6X6S4ZTZ5B667LQ6AJU6PEYDLRD5O@sandbox.waku.nodes.status.im \\\n --dns-discovery-name-server=8.8.8.8 \\\n --dns-discovery-name-server=8.8.4.4\n")),(0,r.kt)("h2",{id:"configure-discv5"},"Configure Discv5"),(0,r.kt)("p",null,"To enable ",(0,r.kt)("a",{parentName:"p",href:"/learn/concepts/discv5"},"Discv5")," in a ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," node, use the following configuration options:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"discv5-discovery"),": Enables ",(0,r.kt)("inlineCode",{parentName:"li"},"Discv5")," on the node (disabled by default)."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"discv5-bootstrap-node"),": ENR for ",(0,r.kt)("inlineCode",{parentName:"li"},"Discv5")," routing table bootstrap node. You can repeat this option to provide multiple bootstrap entries.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"./build/wakunode2 \\\n --discv5-discovery=true \\\n --discv5-bootstrap-node=[DISCV5 ENR BOOTSTRAP ENTRY 1] \\\n --discv5-bootstrap-node=[DISCV5 ENR BOOTSTRAP ENTRY 2]\n")),(0,r.kt)("p",null,"For example, consider a ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," node that enables ",(0,r.kt)("inlineCode",{parentName:"p"},"Discv5")," and bootstraps its routing table using a static ",(0,r.kt)("inlineCode",{parentName:"p"},"ENR"),":"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"./build/wakunode2 \\\n --discv5-discovery=true \\\n --discv5-bootstrap-node=enr:-IO4QDxToTg86pPCK2KvMeVCXC2ADVZWrxXSvNZeaoa0JhShbM5qed69RQz1s1mWEEqJ3aoklo_7EU9iIBcPMVeKlCQBgmlkgnY0iXNlY3AyNTZrMaEDdBHK1Gx6y_zv5DVw5Qb3DtSOMmVHTZO1WSORrF2loL2DdWRwgiMohXdha3UyAw\n")),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"When Discv5 is enabled and used with ",(0,r.kt)("a",{parentName:"p",href:"#configure-dns-discovery"},"DNS Discovery"),", the ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," node will attempt to bootstrap the Discv5 routing table by extracting ",(0,r.kt)("inlineCode",{parentName:"p"},"ENRs")," from peers discovered through DNS.")),(0,r.kt)("h2",{id:"configure-peer-exchange"},"Configure peer exchange"),(0,r.kt)("p",null,"To enable ",(0,r.kt)("a",{parentName:"p",href:"/learn/concepts/peer-exchange"},"Peer Exchange")," in a ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," node, use the following configuration options:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"peer-exchange"),": Enables ",(0,r.kt)("inlineCode",{parentName:"li"},"Peer Exchange")," on the node as a responder (disabled by default)."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"peer-exchange-node")," (optional): Multiaddr for bootstrap node with the peer exchange protocol enabled.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"./build/wakunode2 \\\n --peer-exchange=true \\\n --peer-exchange-node=[PEER MULTIADDR WITH EXCHANGE ENABLED]\n")),(0,r.kt)("p",null,"For example, consider two ",(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," nodes configured as a ",(0,r.kt)("inlineCode",{parentName:"p"},"server")," (peer exchange responder node) and ",(0,r.kt)("inlineCode",{parentName:"p"},"client")," (node using peer exchange) on the same local host (IP: ",(0,r.kt)("inlineCode",{parentName:"p"},"0.0.0.0"),"):"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell",metastring:'title="Server: Nwaku Node with Peer Exchange Enabled"',title:'"Server:',Nwaku:!0,Node:!0,with:!0,Peer:!0,Exchange:!0,'Enabled"':!0},"./build/wakunode2 --peer-exchange=true\n")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell",metastring:'title="Client: Nwaku Node Bootstrapping with Peer Exchange"',title:'"Client:',Nwaku:!0,Node:!0,Bootstrapping:!0,with:!0,Peer:!0,'Exchange"':!0},"./build/wakunode2 \\\n --tcp-port=30305 \\\n --ports-shift=1 \\\n --peer-exchange-node=/ip4/0.0.0.0/tcp/60000/p2p/16Uiu2HAmLCe6zVqCS6KMqqRbbhyoJjfYZGr1Q3thTSbyKzibQkFR\n")),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("inlineCode",{parentName:"p"},"nwaku")," provides a ",(0,r.kt)("a",{parentName:"p",href:"/guides/nwaku/config-options#relay-config"},(0,r.kt)("inlineCode",{parentName:"a"},"relay-peer-exchange"))," option via ",(0,r.kt)("inlineCode",{parentName:"p"},"libp2p")," for peer exchange, allowing network growth through neighbouring nodes. However, this feature can compromise security and network robustness, so we recommend only using it in high-trust environments.")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.6b05d487.js b/assets/js/935f2afb.6b05d487.js new file mode 100644 index 0000000..6a827c5 --- /dev/null +++ b/assets/js/935f2afb.6b05d487.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"guides":[{"type":"link","label":"Introduction to Waku","href":"/","docId":"guides/getting-started"},{"type":"category","label":"Run a Nwaku Node","collapsed":true,"items":[{"type":"link","label":"Run Nwaku with Docker Compose","href":"/guides/nwaku/run-docker-compose","docId":"guides/nwaku/run-docker-compose"},{"type":"link","label":"Run Nwaku in a Docker Container","href":"/guides/nwaku/run-docker","docId":"guides/nwaku/run-docker"},{"type":"link","label":"Build Nwaku from Source","href":"/guides/nwaku/build-source","docId":"guides/nwaku/build-source"},{"type":"link","label":"Configure Peer Discovery","href":"/guides/nwaku/configure-discovery","docId":"guides/nwaku/configure-discovery"},{"type":"link","label":"Find Your Node Address","href":"/guides/nwaku/find-node-address","docId":"guides/nwaku/find-node-address"},{"type":"link","label":"Node Configuration Methods","href":"/guides/nwaku/config-methods","docId":"guides/nwaku/config-methods"},{"type":"link","label":"Node Configuration Options","href":"/guides/nwaku/config-options","docId":"guides/nwaku/config-options"},{"type":"link","label":"Node Configuration Examples","href":"/guides/nwaku/configure-nwaku","docId":"guides/nwaku/configure-nwaku"},{"type":"link","label":"Frequently Asked Questions","href":"/guides/nwaku/faq","docId":"guides/nwaku/faq"},{"type":"html","value":"REST API Reference"}],"collapsible":true,"href":"/guides/nwaku/run-node"},{"type":"category","label":"JavaScript Waku SDK","collapsed":true,"items":[{"type":"link","label":"Send and Receive Messages Using Light Push and Filter","href":"/guides/js-waku/light-send-receive","docId":"guides/js-waku/light-send-receive"},{"type":"link","label":"Retrieve Messages Using Store Protocol","href":"/guides/js-waku/store-retrieve-messages","docId":"guides/js-waku/store-retrieve-messages"},{"type":"link","label":"Encrypt, Decrypt, and Sign Your Messages","href":"/guides/js-waku/message-encryption","docId":"guides/js-waku/message-encryption"},{"type":"link","label":"Build React DApps Using @waku/react","href":"/guides/js-waku/use-waku-react","docId":"guides/js-waku/use-waku-react"},{"type":"link","label":"Scaffold DApps Using @waku/create-app","href":"/guides/js-waku/use-waku-create-app","docId":"guides/js-waku/use-waku-create-app"},{"type":"link","label":"Bootstrap Nodes and Discover Peers","href":"/guides/js-waku/configure-discovery","docId":"guides/js-waku/configure-discovery"},{"type":"link","label":"Run @waku/sdk in a NodeJS Application","href":"/guides/js-waku/run-waku-nodejs","docId":"guides/js-waku/run-waku-nodejs"},{"type":"link","label":"Debug Your Waku DApp and WebSocket","href":"/guides/js-waku/debug-waku-dapp","docId":"guides/js-waku/debug-waku-dapp"},{"type":"link","label":"Manage Your Filter Subscriptions","href":"/guides/js-waku/manage-filter","docId":"guides/js-waku/manage-filter"},{"type":"link","label":"Frequently Asked Questions","href":"/guides/js-waku/faq","docId":"guides/js-waku/faq"},{"type":"html","value":"@waku/sdk Examples"},{"type":"html","value":"API Reference"}],"collapsible":true,"href":"/guides/js-waku/"},{"type":"link","label":"Learn About Waku","href":"/learn/waku-network"},{"type":"link","label":"Waku Research","href":"/research"},{"type":"html","value":"Discord"},{"type":"html","value":"Awesome Waku"},{"type":"html","value":"Waku Idea Board"},{"type":"html","value":"Post-Hackathon Bounties"}],"learn":[{"type":"link","label":"The Waku Network","href":"/learn/waku-network","docId":"learn/waku-network"},{"type":"category","label":"Concepts","collapsed":false,"items":[{"type":"link","label":"Protocols","href":"/learn/concepts/protocols","docId":"learn/concepts/protocols"},{"type":"link","label":"Content Topics","href":"/learn/concepts/content-topics","docId":"learn/concepts/content-topics"},{"type":"link","label":"Network Domains","href":"/learn/concepts/network-domains","docId":"learn/concepts/network-domains"},{"type":"link","label":"Transports","href":"/learn/concepts/transports","docId":"learn/concepts/transports"},{"type":"category","label":"Peer Discovery","items":[{"type":"link","label":"Static Peers","href":"/learn/concepts/static-peers","docId":"learn/concepts/static-peers"},{"type":"link","label":"DNS Discovery","href":"/learn/concepts/dns-discovery","docId":"learn/concepts/dns-discovery"},{"type":"link","label":"Discv5","href":"/learn/concepts/discv5","docId":"learn/concepts/discv5"},{"type":"link","label":"Peer Exchange","href":"/learn/concepts/peer-exchange","docId":"learn/concepts/peer-exchange"}],"collapsed":true,"collapsible":true,"href":"/learn/concepts/peer-discovery"}],"collapsible":true},{"type":"link","label":"Security Features","href":"/learn/security-features","docId":"learn/security-features"},{"type":"link","label":"Research","href":"/learn/research","docId":"learn/research"},{"type":"link","label":"Comparing Waku and libp2p","href":"/learn/waku-vs-libp2p","docId":"learn/waku-vs-libp2p"},{"type":"link","label":"Glossary","href":"/learn/glossary","docId":"learn/glossary"},{"type":"link","label":"Frequently Asked Questions","href":"/learn/faq","docId":"learn/faq"}],"research":[{"type":"link","label":"Research","href":"/research/","docId":"research/index"},{"type":"category","label":"Benchmarks","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"PostgreSQL","href":"/research/benchmarks/postgres-adoption","docId":"research/benchmarks/postgres-adoption"}]},{"type":"category","label":"Research and Studies","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Capped Bandwidth in Waku","href":"/research/research-and-studies/capped-bandwidth","docId":"research/research-and-studies/capped-bandwidth"},{"type":"link","label":"Incentivisation","href":"/research/research-and-studies/incentivisation","docId":"research/research-and-studies/incentivisation"},{"type":"link","label":"Maximum Bandwidth for Global Adoption","href":"/research/research-and-studies/maximum-bandwidth","docId":"research/research-and-studies/maximum-bandwidth"},{"type":"link","label":"Message Propagation Times With Waku-RLN","href":"/research/research-and-studies/message-propagation","docId":"research/research-and-studies/message-propagation"},{"type":"link","label":"RLN Key Benchmarks","href":"/research/research-and-studies/rln-key-benchmarks","docId":"research/research-and-studies/rln-key-benchmarks"}]}]},"docs":{"guides/getting-started":{"id":"guides/getting-started","title":"Introduction to Waku","description":"Waku is a family of robust, censorship-resistant, peer-to-peer communication protocols that enable privacy-focused messaging for Web3 applications, allowing you to integrate decentralised communication features into your dApp without compromising security or privacy.","sidebar":"guides"},"guides/js-waku/configure-discovery":{"id":"guides/js-waku/configure-discovery","title":"Bootstrap Nodes and Discover Peers","description":"This guide provides detailed steps to bootstrap your your node using Static Peers and discover peers in the Waku Network using DNS Discovery.","sidebar":"guides"},"guides/js-waku/debug-waku-dapp":{"id":"guides/js-waku/debug-waku-dapp","title":"Debug Your Waku DApp and WebSocket","description":"This guide provides detailed steps to enable and use debug logs to troubleshoot your Waku DApp, whether in a NodeJS or browser environment and check your WebSocket connections in nwaku.","sidebar":"guides"},"guides/js-waku/faq":{"id":"guides/js-waku/faq","title":"JavaScript SDK FAQ","description":"You can add the JavaScript SDK to your project using NPM, Yarn, or a CDN. Check out the installation guide to get started.","sidebar":"guides"},"guides/js-waku/index":{"id":"guides/js-waku/index","title":"JavaScript Waku SDK","description":"Currently, the JavaScript Waku SDK (@waku/sdk) is NOT compatible with React Native. We plan to add support for React Native in the future.","sidebar":"guides"},"guides/js-waku/light-send-receive":{"id":"guides/js-waku/light-send-receive","title":"Send and Receive Messages Using Light Push and Filter","description":"This guide provides detailed steps to start using the @waku/sdk package by setting up a Light Node to send messages using the Light Push protocol, and receive messages using the Filter protocol. Have a look at the installation guide for steps on adding @waku/sdk to your project.","sidebar":"guides"},"guides/js-waku/manage-filter":{"id":"guides/js-waku/manage-filter","title":"Manage Your Filter Subscriptions","description":"This guide provides detailed steps to manage Filter subscriptions and handle node disconnections in your application. Have a look at the Send and Receive Messages Using Light Push and Filter guide for using the Light Push and Filter protocols.","sidebar":"guides"},"guides/js-waku/message-encryption":{"id":"guides/js-waku/message-encryption","title":"Encrypt, Decrypt, and Sign Your Messages","description":"This guide provides detailed steps to use the @waku/message-encryption package to encrypt, decrypt, and sign your messages using Waku message payload encryption methods.","sidebar":"guides"},"guides/js-waku/run-waku-nodejs":{"id":"guides/js-waku/run-waku-nodejs","title":"Run @waku/sdk in a NodeJS Application","description":"While the @waku/sdk package is primarily designed for browser environments, you can use it in a NodeJS application. However, there are certain limitations and considerations to keep in mind. This guide provides a comprehensive overview of using @waku/sdk in NodeJS.","sidebar":"guides"},"guides/js-waku/store-retrieve-messages":{"id":"guides/js-waku/store-retrieve-messages","title":"Retrieve Messages Using Store Protocol","description":"This guide provides detailed steps to create a Light Node for retrieving and filtering historical messages using the Store protocol.","sidebar":"guides"},"guides/js-waku/use-waku-create-app":{"id":"guides/js-waku/use-waku-create-app","title":"Scaffold DApps Using @waku/create-app","description":"This guide provides detailed steps to bootstrap your next @waku/sdk project from various example templates using the @waku/create-app package.","sidebar":"guides"},"guides/js-waku/use-waku-react":{"id":"guides/js-waku/use-waku-react","title":"Build React DApps Using @waku/react","description":"Currently, the JavaScript Waku SDK (@waku/sdk) is NOT compatible with React Native. We plan to add support for React Native in the future.","sidebar":"guides"},"guides/nwaku/build-source":{"id":"guides/nwaku/build-source","title":"Build Nwaku from Source","description":"This guide provides detailed steps to build a nwaku node from the source code to access the latest development version or a specific commit or release of nwaku. For your convenience, you may want to download a pre-compiled binary instead.","sidebar":"guides"},"guides/nwaku/config-methods":{"id":"guides/nwaku/config-methods","title":"Node Configuration Methods","description":"Waku nodes can be configured using a combination of the following methods:","sidebar":"guides"},"guides/nwaku/config-options":{"id":"guides/nwaku/config-options","title":"Node Configuration Options","description":"Here are the available node configuration options, along with their default values and descriptions:","sidebar":"guides"},"guides/nwaku/configure-discovery":{"id":"guides/nwaku/configure-discovery","title":"Configure Peer Discovery","description":"This guide provides detailed steps to configure a nwaku node to discover and connect with peers in the Waku Network.","sidebar":"guides"},"guides/nwaku/configure-nwaku":{"id":"guides/nwaku/configure-nwaku","title":"Node Configuration Examples","description":"This guide provides detailed steps to configure a nwaku node for different use cases.","sidebar":"guides"},"guides/nwaku/faq":{"id":"guides/nwaku/faq","title":"Nwaku FAQ","description":"Check out the Run Nwaku with Docker Compose guide to learn the simplest and fastest way to run a node. You can also check the comprehensive Run a Nwaku Node guide to explore other options like downloading binaries and building from source.","sidebar":"guides"},"guides/nwaku/find-node-address":{"id":"guides/nwaku/find-node-address","title":"Find Your Node Address","description":"When starting the node, nwaku will display all the public listening and discovery addresses at the INFO log level.","sidebar":"guides"},"guides/nwaku/run-docker":{"id":"guides/nwaku/run-docker","title":"Run Nwaku in a Docker Container","description":"This guide provides detailed steps to build and run a nwaku node in a Docker container. If you prefer a pre-configured setup with a monitoring dashboard, see the Run Nwaku with Docker Compose guide.","sidebar":"guides"},"guides/nwaku/run-docker-compose":{"id":"guides/nwaku/run-docker-compose","title":"Run Nwaku with Docker Compose","description":"nwaku-compose is a ready-to-use Docker Compose setup that configures the following automatically:","sidebar":"guides"},"guides/nwaku/run-node":{"id":"guides/nwaku/run-node","title":"Run a Nwaku Node","description":"Nwaku is a lightweight and robust Nim client for running a Waku node, equipped with tools to monitor and maintain a running node. Nwaku is highly configurable, enabling operators to select the protocols they want to support based on their needs, motivations, and available resources.","sidebar":"guides"},"learn/concepts/content-topics":{"id":"learn/concepts/content-topics","title":"Content Topics","description":"Content Topics are metadata strings set by developers on outgoing messages to facilitate protocol-level features like selectively processing incoming messages (Relay or Filter) and retrieving historical messages (Store) that meet specific filtering criteria. Have a look at the WAKU2-TOPICS specification to learn more.","sidebar":"learn"},"learn/concepts/discv5":{"id":"learn/concepts/discv5","title":"Discv5","description":"Discv5 is a decentralised and efficient peer discovery mechanism for the Waku Network. It uses a Distributed Hash Table (DHT) for storing ENR records, providing resistance to censorship. Discv5 offers a global view of participating nodes, enabling random sampling for load distribution. It uses bootstrap nodes as an entry point to the network, providing randomised sets of nodes for mesh expansion. Have a look at the Discv5 specification to learn more.","sidebar":"learn"},"learn/concepts/dns-discovery":{"id":"learn/concepts/dns-discovery","title":"DNS Discovery","description":"Built upon the foundation of EIP-1459: Node Discovery via DNS, DNS Discovery allows the retrieval of an ENR tree from the TXT field of a domain name. This innovative approach enables the storage of essential node connection details, including IP, port, and multiaddr.","sidebar":"learn"},"learn/concepts/network-domains":{"id":"learn/concepts/network-domains","title":"Network Domains","description":"Waku is a unified and cohesive entity that offers a rich ecosystem with three distinct network interaction domains. These domains serve specialised purposes and contribute to the robust functionality of Waku, forming its foundation.","sidebar":"learn"},"learn/concepts/peer-discovery":{"id":"learn/concepts/peer-discovery","title":"Peer Discovery","description":"When initialising a Waku node, it must connect with other peers to enable message sending, receiving, and retrieval. To achieve this, a discovery mechanism is employed to locate other peers in the network. This process is known as bootstrapping.","sidebar":"learn"},"learn/concepts/peer-exchange":{"id":"learn/concepts/peer-exchange","title":"Peer Exchange","description":"The primary objective of this protocol is to facilitate peer connectivity for resource-limited devices without relying on Discv5. The peer exchange protocol enables light nodes to request peers from other nodes within the network.","sidebar":"learn"},"learn/concepts/protocols":{"id":"learn/concepts/protocols","title":"Protocols","description":"Waku takes a modular approach, providing a range of protocols that enable applications to control the trade-offs involved in the Anonymity Trilemma. This flexibility empowers applications to make informed choices regarding the desired balance between anonymity, scalability, and latency. Here are the main protocols provided by Waku:","sidebar":"learn"},"learn/concepts/static-peers":{"id":"learn/concepts/static-peers","title":"Static Peers","description":"Waku applications have the flexibility to embed bootstrap node addresses directly into their codebase. Developers can either use static peers operated by Status or run a node.","sidebar":"learn"},"learn/concepts/transports":{"id":"learn/concepts/transports","title":"Transports","description":"Transports help move data packets across a network by establishing connections between peers. They define the rules and protocols to ensure efficient network transmission, routing, and data delivery.","sidebar":"learn"},"learn/faq":{"id":"learn/faq","title":"Waku FAQ","description":"Check out the Getting Started guide to explore our numerous SDKs and learn how to run a Waku node.","sidebar":"learn"},"learn/glossary":{"id":"learn/glossary","title":"Glossary","description":"Definitions and usage of the terminology used in the Waku ecosystem.","sidebar":"learn"},"learn/research":{"id":"learn/research","title":"Research","description":"The following features are currently experimental and under research and initial implementation:","sidebar":"learn"},"learn/security-features":{"id":"learn/security-features","title":"Security Features","description":"Waku\'s protocol layers offer different services and security considerations, shaping the overall security of Waku. We document the security models in the RFCs of the protocols, aiming to provide transparent and open-source references. This empowers Waku users to understand each protocol\'s security guarantees and limitations.","sidebar":"learn"},"learn/waku-network":{"id":"learn/waku-network","title":"The Waku Network","description":"The Waku Network is a shared p2p messaging network that is open-access, useful for generalized messaging, privacy-preserving, scalable and accessible even to resource-restricted devices. Some of the most prominent features include:","sidebar":"learn"},"learn/waku-vs-libp2p":{"id":"learn/waku-vs-libp2p","title":"Comparing Waku and libp2p","description":"Since Waku is built on top of libp2p, they share a lot of concepts and terminologies between them. However, there are key differences between them that are worth noting.","sidebar":"learn"},"privacy-policy":{"id":"privacy-policy","title":"Privacy Policy","description":"Last updated: 9 February 2024"},"research/benchmarks/postgres-adoption":{"id":"research/benchmarks/postgres-adoption","title":"PostgreSQL","description":"Document that describes why Nim-Waku started to use Postgres and shows some benchmark and comparison results.","sidebar":"research"},"research/index":{"id":"research/index","title":"Research","description":"Research and Studies: Protocol simulations and theoretical analysis to support the design of Waku protocols. The protocol definitions are on the Waku RFCs website.","sidebar":"research"},"research/research-and-studies/capped-bandwidth":{"id":"research/research-and-studies/capped-bandwidth","title":"Capped Bandwidth in Waku","description":"This issue explains i) why The Waku Network requires a capped bandwidth per shard and ii) how to solve it by rate limiting with RLN by daily requests (instead of every x seconds), which would require RLN v2, or some modifications in the current circuits to work. It also explains why the current rate limiting RLN approach (limit 1 message every x seconds) is not practical to solve this problem.","sidebar":"research"},"research/research-and-studies/incentivisation":{"id":"research/research-and-studies/incentivisation","title":"Incentivisation","description":"Waku is a family of decentralised communication protocols. The Waku Network (TWN) consists of independent nodes running Waku protocols. TWN needs incentivisation (shortened to i13n) to ensure proper node behaviour.","sidebar":"research"},"research/research-and-studies/maximum-bandwidth":{"id":"research/research-and-studies/maximum-bandwidth","title":"Maximum Bandwidth for Global Adoption","description":"TLDR//github.com/waku-org/research/issues/22 to specify how this maximum will be enforced.","sidebar":"research"},"research/research-and-studies/message-propagation":{"id":"research/research-and-studies/message-propagation","title":"Message Propagation Times With Waku-RLN","description":"TLDR: We present the results of 1000 nwaku nodes running rln using different message sizes, in a real network with bandwidth limitations and network delays. The goal is to study the message propagation delay distribution, and how it\'s affected by i) rln and ii) message size in a real environment. We observe that for messages of 10kB the average end-to-end propagation delay is 508 ms. We can also observe that the message propagation delays are severely affected when increasing the message size, which indicates that it is not a good idea to use waku for messages of eg. 500kB. See simulation parameters.","sidebar":"research"},"research/research-and-studies/rln-key-benchmarks":{"id":"research/research-and-studies/rln-key-benchmarks","title":"RLN Key Benchmarks","description":"Introduction","sidebar":"research"},"rules-of-engagement":{"id":"rules-of-engagement","title":"Rules of Engagement","description":"Waku is a nascent technology and the Waku community is still growing. Hence, the Waku team is keen to work closely with projects to help leverage Waku technology to drive the success of their own applications."},"terms":{"id":"terms","title":"Terms of Use","description":"Last updated: 14 February 2024"}}}')}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.8b3c9a0d.js b/assets/js/935f2afb.8b3c9a0d.js deleted file mode 100644 index 26bc534..0000000 --- a/assets/js/935f2afb.8b3c9a0d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"guides":[{"type":"link","label":"Getting Started","href":"/","docId":"guides/getting-started"},{"type":"category","label":"Run a Nwaku Node","collapsed":false,"items":[{"type":"link","label":"Run Nwaku with Docker Compose","href":"/guides/nwaku/run-docker-compose","docId":"guides/nwaku/run-docker-compose"},{"type":"link","label":"Run Nwaku in a Docker Container","href":"/guides/nwaku/run-docker","docId":"guides/nwaku/run-docker"},{"type":"link","label":"Build Nwaku from Source","href":"/guides/nwaku/build-source","docId":"guides/nwaku/build-source"},{"type":"link","label":"Configure Peer Discovery","href":"/guides/nwaku/configure-discovery","docId":"guides/nwaku/configure-discovery"},{"type":"link","label":"Node Configuration Methods","href":"/guides/nwaku/config-methods","docId":"guides/nwaku/config-methods"},{"type":"link","label":"Node Configuration Options","href":"/guides/nwaku/config-options","docId":"guides/nwaku/config-options"},{"type":"link","label":"Node Configuration Examples","href":"/guides/nwaku/configure-nwaku","docId":"guides/nwaku/configure-nwaku"},{"type":"link","label":"Frequently Asked Questions","href":"/guides/nwaku/faq","docId":"guides/nwaku/faq"},{"type":"html","value":"REST API Reference"}],"collapsible":true,"href":"/guides/nwaku/run-node"},{"type":"category","label":"JavaScript Waku SDK","collapsed":false,"items":[{"type":"link","label":"Send and Receive Messages Using Light Push and Filter","href":"/guides/js-waku/light-send-receive","docId":"guides/js-waku/light-send-receive"},{"type":"link","label":"Retrieve Messages Using Store Protocol","href":"/guides/js-waku/store-retrieve-messages","docId":"guides/js-waku/store-retrieve-messages"},{"type":"link","label":"Encrypt, Decrypt, and Sign Your Messages","href":"/guides/js-waku/message-encryption","docId":"guides/js-waku/message-encryption"},{"type":"link","label":"Build React DApps Using @waku/react","href":"/guides/js-waku/use-waku-react","docId":"guides/js-waku/use-waku-react"},{"type":"link","label":"Scaffold DApps Using @waku/create-app","href":"/guides/js-waku/use-waku-create-app","docId":"guides/js-waku/use-waku-create-app"},{"type":"link","label":"Bootstrap Nodes and Discover Peers","href":"/guides/js-waku/configure-discovery","docId":"guides/js-waku/configure-discovery"},{"type":"link","label":"Run @waku/sdk in a NodeJS Application","href":"/guides/js-waku/run-waku-nodejs","docId":"guides/js-waku/run-waku-nodejs"},{"type":"link","label":"Debug Your Waku DApp and WebSocket","href":"/guides/js-waku/debug-waku-dapp","docId":"guides/js-waku/debug-waku-dapp"},{"type":"link","label":"Manage Your Filter Subscriptions","href":"/guides/js-waku/manage-filter","docId":"guides/js-waku/manage-filter"},{"type":"link","label":"Frequently Asked Questions","href":"/guides/js-waku/faq","docId":"guides/js-waku/faq"},{"type":"html","value":"@waku/sdk Examples"},{"type":"html","value":"API Reference"}],"collapsible":true,"href":"/guides/js-waku/"}],"learn":[{"type":"link","label":"The Waku Network","href":"/learn/waku-network","docId":"learn/waku-network"},{"type":"category","label":"Concepts","collapsed":false,"items":[{"type":"link","label":"Protocols","href":"/learn/concepts/protocols","docId":"learn/concepts/protocols"},{"type":"link","label":"Content Topics","href":"/learn/concepts/content-topics","docId":"learn/concepts/content-topics"},{"type":"link","label":"Network Domains","href":"/learn/concepts/network-domains","docId":"learn/concepts/network-domains"},{"type":"link","label":"Transports","href":"/learn/concepts/transports","docId":"learn/concepts/transports"},{"type":"category","label":"Peer Discovery","items":[{"type":"link","label":"Static Peers","href":"/learn/concepts/static-peers","docId":"learn/concepts/static-peers"},{"type":"link","label":"DNS Discovery","href":"/learn/concepts/dns-discovery","docId":"learn/concepts/dns-discovery"},{"type":"link","label":"Discv5","href":"/learn/concepts/discv5","docId":"learn/concepts/discv5"},{"type":"link","label":"Peer Exchange","href":"/learn/concepts/peer-exchange","docId":"learn/concepts/peer-exchange"}],"collapsed":true,"collapsible":true,"href":"/learn/concepts/peer-discovery"}],"collapsible":true},{"type":"link","label":"Security Features","href":"/learn/security-features","docId":"learn/security-features"},{"type":"link","label":"Research","href":"/learn/research","docId":"learn/research"},{"type":"link","label":"Comparing Waku and libp2p","href":"/learn/waku-vs-libp2p","docId":"learn/waku-vs-libp2p"},{"type":"link","label":"Glossary","href":"/learn/glossary","docId":"learn/glossary"},{"type":"link","label":"Frequently Asked Questions","href":"/learn/faq","docId":"learn/faq"},{"type":"html","value":"Waku Idea Board"}],"research":[{"type":"link","label":"Research","href":"/research/","docId":"research/index"},{"type":"category","label":"Benchmarks","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"PostgreSQL","href":"/research/benchmarks/postgres-adoption","docId":"research/benchmarks/postgres-adoption"}]},{"type":"category","label":"Research and Studies","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Capped Bandwidth in Waku","href":"/research/research-and-studies/capped-bandwidth","docId":"research/research-and-studies/capped-bandwidth"},{"type":"link","label":"Incentivisation","href":"/research/research-and-studies/incentivisation","docId":"research/research-and-studies/incentivisation"},{"type":"link","label":"Maximum Bandwidth for Global Adoption","href":"/research/research-and-studies/maximum-bandwidth","docId":"research/research-and-studies/maximum-bandwidth"},{"type":"link","label":"Message Propagation Times With Waku-RLN","href":"/research/research-and-studies/message-propagation","docId":"research/research-and-studies/message-propagation"},{"type":"link","label":"RLN Key Benchmarks","href":"/research/research-and-studies/rln-key-benchmarks","docId":"research/research-and-studies/rln-key-benchmarks"}]}]},"docs":{"guides/getting-started":{"id":"guides/getting-started","title":"Getting Started","description":"Waku has risks and limitations as it is still developing and preparing for extensive adoption. However, it is already demonstrating its capabilities by powering various applications. Join our community to stay updated on our progress.","sidebar":"guides"},"guides/js-waku/configure-discovery":{"id":"guides/js-waku/configure-discovery","title":"Bootstrap Nodes and Discover Peers","description":"This guide provides detailed steps to bootstrap your your node using Static Peers and discover peers in the Waku Network using DNS Discovery.","sidebar":"guides"},"guides/js-waku/debug-waku-dapp":{"id":"guides/js-waku/debug-waku-dapp","title":"Debug Your Waku DApp and WebSocket","description":"This guide provides detailed steps to enable and use debug logs to troubleshoot your Waku DApp, whether in a NodeJS or browser environment and check your WebSocket connections in nwaku.","sidebar":"guides"},"guides/js-waku/faq":{"id":"guides/js-waku/faq","title":"JavaScript SDK FAQ","description":"You can add the JavaScript SDK to your project using NPM, Yarn, or a CDN. Check out the installation guide to get started.","sidebar":"guides"},"guides/js-waku/index":{"id":"guides/js-waku/index","title":"JavaScript Waku SDK","description":"Currently, the JavaScript Waku SDK (@waku/sdk) is NOT compatible with React Native. We plan to add support for React Native in the future.","sidebar":"guides"},"guides/js-waku/light-send-receive":{"id":"guides/js-waku/light-send-receive","title":"Send and Receive Messages Using Light Push and Filter","description":"This guide provides detailed steps to start using the @waku/sdk package by setting up a Light Node to send messages using the Light Push protocol, and receive messages using the Filter protocol. Have a look at the installation guide for steps on adding @waku/sdk to your project.","sidebar":"guides"},"guides/js-waku/manage-filter":{"id":"guides/js-waku/manage-filter","title":"Manage Your Filter Subscriptions","description":"This guide provides detailed steps to manage Filter subscriptions and handle node disconnections in your application. Have a look at the Send and Receive Messages Using Light Push and Filter guide for using the Light Push and Filter protocols.","sidebar":"guides"},"guides/js-waku/message-encryption":{"id":"guides/js-waku/message-encryption","title":"Encrypt, Decrypt, and Sign Your Messages","description":"This guide provides detailed steps to use the @waku/message-encryption package to encrypt, decrypt, and sign your messages using Waku message payload encryption methods.","sidebar":"guides"},"guides/js-waku/run-waku-nodejs":{"id":"guides/js-waku/run-waku-nodejs","title":"Run @waku/sdk in a NodeJS Application","description":"While the @waku/sdk package is primarily designed for browser environments, you can use it in a NodeJS application. However, there are certain limitations and considerations to keep in mind. This guide provides a comprehensive overview of using @waku/sdk in NodeJS.","sidebar":"guides"},"guides/js-waku/store-retrieve-messages":{"id":"guides/js-waku/store-retrieve-messages","title":"Retrieve Messages Using Store Protocol","description":"This guide provides detailed steps to create a Light Node for retrieving and filtering historical messages using the Store protocol.","sidebar":"guides"},"guides/js-waku/use-waku-create-app":{"id":"guides/js-waku/use-waku-create-app","title":"Scaffold DApps Using @waku/create-app","description":"This guide provides detailed steps to bootstrap your next @waku/sdk project from various example templates using the @waku/create-app package.","sidebar":"guides"},"guides/js-waku/use-waku-react":{"id":"guides/js-waku/use-waku-react","title":"Build React DApps Using @waku/react","description":"Currently, the JavaScript Waku SDK (@waku/sdk) is NOT compatible with React Native. We plan to add support for React Native in the future.","sidebar":"guides"},"guides/nwaku/build-source":{"id":"guides/nwaku/build-source","title":"Build Nwaku from Source","description":"This guide provides detailed steps to build a nwaku node from the source code to access the latest development version or a specific commit or release of nwaku. For your convenience, you may want to download a pre-compiled binary instead.","sidebar":"guides"},"guides/nwaku/config-methods":{"id":"guides/nwaku/config-methods","title":"Node Configuration Methods","description":"Waku nodes can be configured using a combination of the following methods:","sidebar":"guides"},"guides/nwaku/config-options":{"id":"guides/nwaku/config-options","title":"Node Configuration Options","description":"Here are the available node configuration options, along with their default values and descriptions:","sidebar":"guides"},"guides/nwaku/configure-discovery":{"id":"guides/nwaku/configure-discovery","title":"Configure Peer Discovery","description":"This guide provides detailed steps to configure a nwaku node to discover and connect with peers in the Waku Network.","sidebar":"guides"},"guides/nwaku/configure-nwaku":{"id":"guides/nwaku/configure-nwaku","title":"Node Configuration Examples","description":"This guide provides detailed steps to configure a nwaku node for different use cases.","sidebar":"guides"},"guides/nwaku/faq":{"id":"guides/nwaku/faq","title":"Nwaku FAQ","description":"Check out the Run Nwaku with Docker Compose guide to learn the simplest and fastest way to run a node. You can also check the comprehensive Run a Nwaku Node guide to explore other options like downloading binaries and building from source.","sidebar":"guides"},"guides/nwaku/run-docker":{"id":"guides/nwaku/run-docker","title":"Run Nwaku in a Docker Container","description":"This guide provides detailed steps to build and run a nwaku node in a Docker container. If you prefer a pre-configured setup with a monitoring dashboard, see the Run Nwaku with Docker Compose guide.","sidebar":"guides"},"guides/nwaku/run-docker-compose":{"id":"guides/nwaku/run-docker-compose","title":"Run Nwaku with Docker Compose","description":"nwaku-compose is a ready-to-use Docker Compose setup that runs the following:","sidebar":"guides"},"guides/nwaku/run-node":{"id":"guides/nwaku/run-node","title":"Run a Nwaku Node","description":"Nwaku is a lightweight and robust Nim client for running a Waku node, equipped with tools to monitor and maintain a running node. Nwaku is highly configurable, enabling operators to select the protocols they want to support based on their needs, motivations, and available resources.","sidebar":"guides"},"learn/concepts/content-topics":{"id":"learn/concepts/content-topics","title":"Content Topics","description":"Content Topics are metadata strings set by developers on outgoing messages to facilitate protocol-level features like selectively processing incoming messages (Relay or Filter) and retrieving historical messages (Store) that meet specific filtering criteria. Have a look at the WAKU2-TOPICS specification to learn more.","sidebar":"learn"},"learn/concepts/discv5":{"id":"learn/concepts/discv5","title":"Discv5","description":"Discv5 is a decentralised and efficient peer discovery mechanism for the Waku Network. It uses a Distributed Hash Table (DHT) for storing ENR records, providing resistance to censorship. Discv5 offers a global view of participating nodes, enabling random sampling for load distribution. It uses bootstrap nodes as an entry point to the network, providing randomised sets of nodes for mesh expansion. Have a look at the Discv5 specification to learn more.","sidebar":"learn"},"learn/concepts/dns-discovery":{"id":"learn/concepts/dns-discovery","title":"DNS Discovery","description":"Built upon the foundation of EIP-1459: Node Discovery via DNS, DNS Discovery allows the retrieval of an ENR tree from the TXT field of a domain name. This innovative approach enables the storage of essential node connection details, including IP, port, and multiaddr, using the standardised ENR format.","sidebar":"learn"},"learn/concepts/network-domains":{"id":"learn/concepts/network-domains","title":"Network Domains","description":"Waku is a unified and cohesive entity that offers a rich ecosystem with three distinct network interaction domains. These domains serve specialised purposes and contribute to the robust functionality of Waku, forming its foundation.","sidebar":"learn"},"learn/concepts/peer-discovery":{"id":"learn/concepts/peer-discovery","title":"Peer Discovery","description":"When initialising a Waku node, it must connect with other peers to enable message sending, receiving, and retrieval. To achieve this, a discovery mechanism is employed to locate other peers in the network. This process is known as bootstrapping.","sidebar":"learn"},"learn/concepts/peer-exchange":{"id":"learn/concepts/peer-exchange","title":"Peer Exchange","description":"The primary objective of this protocol is to facilitate peer connectivity for resource-limited devices without relying on Discv5. The peer exchange protocol enables light nodes to request peers from other nodes within the network. Have a look at the Peer Exchange specification to learn more.","sidebar":"learn"},"learn/concepts/protocols":{"id":"learn/concepts/protocols","title":"Protocols","description":"Waku takes a modular approach, providing a range of protocols that enable applications to control the trade-offs involved in the Anonymity Trilemma. This flexibility empowers applications to make informed choices regarding the desired balance between anonymity, scalability, and latency. Here are the main protocols provided by Waku:","sidebar":"learn"},"learn/concepts/static-peers":{"id":"learn/concepts/static-peers","title":"Static Peers","description":"Waku applications have the flexibility to embed bootstrap node addresses directly into their codebase. Developers can either use static peers operated by Status or run a node.","sidebar":"learn"},"learn/concepts/transports":{"id":"learn/concepts/transports","title":"Transports","description":"Transports help move data packets across a network by establishing connections between peers. They define the rules and protocols to ensure efficient network transmission, routing, and data delivery.","sidebar":"learn"},"learn/faq":{"id":"learn/faq","title":"Waku FAQ","description":"Check out the Getting Started guide to explore our numerous SDKs and learn how to run a Waku node.","sidebar":"learn"},"learn/glossary":{"id":"learn/glossary","title":"Glossary","description":"Definitions and usage of the terminology used in the Waku ecosystem.","sidebar":"learn"},"learn/research":{"id":"learn/research","title":"Research","description":"The following features are currently experimental and under research and initial implementation:","sidebar":"learn"},"learn/security-features":{"id":"learn/security-features","title":"Security Features","description":"Waku\'s protocol layers offer different services and security considerations, shaping the overall security of Waku. We document the security models in the RFCs of the protocols, aiming to provide transparent and open-source references. This empowers Waku users to understand each protocol\'s security guarantees and limitations.","sidebar":"learn"},"learn/waku-network":{"id":"learn/waku-network","title":"The Waku Network","description":"The Waku Network is a shared p2p messaging network that is open-access, useful for generalized messaging, privacy-preserving, scalable and accessible even to resource-restricted devices. Some of the most prominent features include:","sidebar":"learn"},"learn/waku-vs-libp2p":{"id":"learn/waku-vs-libp2p","title":"Comparing Waku and libp2p","description":"Since Waku is built on top of libp2p, they share a lot of concepts and terminologies between them. However, there are key differences between them that are worth noting.","sidebar":"learn"},"privacy-policy":{"id":"privacy-policy","title":"Privacy Policy","description":"Last updated: 9 February 2024"},"research/benchmarks/postgres-adoption":{"id":"research/benchmarks/postgres-adoption","title":"PostgreSQL","description":"Document that describes why Nim-Waku started to use Postgres and shows some benchmark and comparison results.","sidebar":"research"},"research/index":{"id":"research/index","title":"Research","description":"Research and Studies: Protocol simulations and theoretical analysis to support the design of Waku protocols. The protocol definitions are on the Vac RFC website.","sidebar":"research"},"research/research-and-studies/capped-bandwidth":{"id":"research/research-and-studies/capped-bandwidth","title":"Capped Bandwidth in Waku","description":"This issue explains i) why The Waku Network requires a capped bandwidth per shard and ii) how to solve it by rate limiting with RLN by daily requests (instead of every x seconds), which would require RLN v2, or some modifications in the current circuits to work. It also explains why the current rate limiting RLN approach (limit 1 message every x seconds) is not practical to solve this problem.","sidebar":"research"},"research/research-and-studies/incentivisation":{"id":"research/research-and-studies/incentivisation","title":"Incentivisation","description":"Waku is a family of decentralised communication protocols. The Waku Network (TWN) consists of independent nodes running Waku protocols. TWN needs incentivisation (shortened to i13n) to ensure proper node behaviour.","sidebar":"research"},"research/research-and-studies/maximum-bandwidth":{"id":"research/research-and-studies/maximum-bandwidth","title":"Maximum Bandwidth for Global Adoption","description":"TLDR//github.com/waku-org/research/issues/22 to specify how this maximum will be enforced.","sidebar":"research"},"research/research-and-studies/message-propagation":{"id":"research/research-and-studies/message-propagation","title":"Message Propagation Times With Waku-RLN","description":"TLDR: We present the results of 1000 nwaku nodes running rln using different message sizes, in a real network with bandwidth limitations and network delays. The goal is to study the message propagation delay distribution, and how it\'s affected by i) rln and ii) message size in a real environment. We observe that for messages of 10kB the average end-to-end propagation delay is 508 ms. We can also observe that the message propagation delays are severely affected when increasing the message size, which indicates that it is not a good idea to use waku for messages of eg. 500kB. See simulation parameters.","sidebar":"research"},"research/research-and-studies/rln-key-benchmarks":{"id":"research/research-and-studies/rln-key-benchmarks","title":"RLN Key Benchmarks","description":"Introduction","sidebar":"research"},"rules-of-engagement":{"id":"rules-of-engagement","title":"Rules of Engagement","description":"Waku is a nascent technology and the Waku community is still growing. Hence, the Waku team is keen to work closely with projects to help leverage Waku technology to drive the success of their own applications."},"terms":{"id":"terms","title":"Terms of Use","description":"Last updated: 14 February 2024"}}}')}}]); \ No newline at end of file diff --git a/assets/js/a44b8792.24d52410.js b/assets/js/a44b8792.283e071b.js similarity index 64% rename from assets/js/a44b8792.24d52410.js rename to assets/js/a44b8792.283e071b.js index 55d0bf9..b769d7d 100644 --- a/assets/js/a44b8792.24d52410.js +++ b/assets/js/a44b8792.283e071b.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[5787],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>v});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=r.createContext({}),c=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},d=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),p=c(n),m=o,v=p["".concat(s,".").concat(m)]||p[m]||u[m]||a;return n?r.createElement(v,i(i({ref:t},d),{},{components:n})):r.createElement(v,i({ref:t},d))}));function v(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:o,i[1]=l;for(var c=2;c{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>c,default:()=>f,frontMatter:()=>s,metadata:()=>d,toc:()=>u});var r=n(87462),o=(n(67294),n(3905));const a={toc:[]},i="wrapper";function l(e){let{components:t,...n}=e;return(0,o.kt)(i,(0,r.Z)({},a,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("mermaid",{value:"sequenceDiagram\n Waku Node->>DNS Server: (1) Lookup TXT example.com\n DNS Server--\x3e>Waku Node: (2) enrtree-root:v1 e=U3...3Y ...\n Waku Node->>DNS Server: (3) Lookup TXT U3...3Y.example.com\n DNS Server--\x3e>Waku Node: (4) enrtree-branch:DU...VQ,J3..HU,IC...WE\n Waku Node->> DNS Server: (5) Lookup TXT DU...VQ.example.com\n DNS Server--\x3e>Waku Node: (6) enr:-M-4QLdAB-Kyz...Wt1Mg8\n Waku Node ->> Waku Node: (7) Decode ENR: Peer's connection details"}),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"DNS lookup query to retrieve TXT data stored on ",(0,o.kt)("inlineCode",{parentName:"li"},"example.com")," domain."),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("inlineCode",{parentName:"li"},"enrtree-root")," is returned, and the value of ",(0,o.kt)("inlineCode",{parentName:"li"},"e")," is the ",(0,o.kt)("inlineCode",{parentName:"li"},"enr-root"),", the root hash of the node subtree."),(0,o.kt)("li",{parentName:"ol"},"DNS lookup query to retrieve TXT data stored on ",(0,o.kt)("inlineCode",{parentName:"li"},".example.com")," domain."),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("inlineCode",{parentName:"li"},"enrtree-branch")," is returned; this tree contains hashes of node subtrees."),(0,o.kt)("li",{parentName:"ol"},"DNS lookup query to retrieve TXT data stored on ",(0,o.kt)("inlineCode",{parentName:"li"},"DU...VQ.example.com")," domain, the first leaf of ",(0,o.kt)("inlineCode",{parentName:"li"},"enrtree-branch"),"."),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("inlineCode",{parentName:"li"},"enr")," record is returned."),(0,o.kt)("li",{parentName:"ol"},"Returned value is decoded, and peer connection details such as IP address and port are learned.")))}l.isMDXComponent=!0;const s={title:"DNS Discovery",hide_table_of_contents:!0},c=void 0,d={unversionedId:"learn/concepts/dns-discovery",id:"learn/concepts/dns-discovery",title:"DNS Discovery",description:"Built upon the foundation of EIP-1459: Node Discovery via DNS, DNS Discovery allows the retrieval of an ENR tree from the TXT field of a domain name. This innovative approach enables the storage of essential node connection details, including IP, port, and multiaddr, using the standardised ENR format.",source:"@site/docs/learn/concepts/dns-discovery.md",sourceDirName:"learn/concepts",slug:"/learn/concepts/dns-discovery",permalink:"/learn/concepts/dns-discovery",draft:!1,editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/docs/learn/concepts/dns-discovery.md",tags:[],version:"current",lastUpdatedAt:1700737292,formattedLastUpdatedAt:"23 Nov 2023",frontMatter:{title:"DNS Discovery",hide_table_of_contents:!0},sidebar:"learn",previous:{title:"Static Peers",permalink:"/learn/concepts/static-peers"},next:{title:"Discv5",permalink:"/learn/concepts/discv5"}},p={},u=[{value:"Pros",id:"pros",level:4},{value:"Cons",id:"cons",level:4},{value:"Overview",id:"overview",level:2}],m={toc:u},v="wrapper";function f(e){let{components:t,...n}=e;return(0,o.kt)(v,(0,r.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Built upon the foundation of ",(0,o.kt)("a",{parentName:"p",href:"https://eips.ethereum.org/EIPS/eip-1459"},"EIP-1459: Node Discovery via DNS"),", DNS Discovery allows the retrieval of an ",(0,o.kt)("inlineCode",{parentName:"p"},"ENR")," tree from the ",(0,o.kt)("inlineCode",{parentName:"p"},"TXT")," field of a domain name. This innovative approach enables the storage of essential node connection details, including IP, port, and multiaddr, using the standardised ",(0,o.kt)("a",{parentName:"p",href:"https://rfc.vac.dev/spec/31/"},"ENR format"),"."),(0,o.kt)("p",null,"This bootstrapping method allows anyone to register and publish a domain name for the network, promoting increased decentralisation."),(0,o.kt)("h4",{id:"pros"},"Pros"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Low latency, low resource requirements."),(0,o.kt)("li",{parentName:"ul"},"Easy bootstrap list updates by modifying the domain name, eliminating the need for code changes."),(0,o.kt)("li",{parentName:"ul"},"Ability to reference a larger list of nodes by including other domain names in the code or ENR tree.")),(0,o.kt)("h4",{id:"cons"},"Cons"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Vulnerable to censorship: Domain names can be blocked or restricted."),(0,o.kt)("li",{parentName:"ul"},"Limited scalability: The listed nodes are at risk of being overwhelmed by receiving all queries. Also, operators must provide their ",(0,o.kt)("inlineCode",{parentName:"li"},"ENR")," to the domain owner for listing.")),(0,o.kt)("h2",{id:"overview"},"Overview"),(0,o.kt)(l,{mdxType:"DNSDiscovery"}))}f.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[5787],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>v});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=r.createContext({}),c=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},d=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),p=c(n),m=o,v=p["".concat(s,".").concat(m)]||p[m]||u[m]||a;return n?r.createElement(v,i(i({ref:t},d),{},{components:n})):r.createElement(v,i({ref:t},d))}));function v(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:o,i[1]=l;for(var c=2;c{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>c,default:()=>f,frontMatter:()=>s,metadata:()=>d,toc:()=>u});var r=n(87462),o=(n(67294),n(3905));const a={toc:[]},i="wrapper";function l(e){let{components:t,...n}=e;return(0,o.kt)(i,(0,r.Z)({},a,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("mermaid",{value:"sequenceDiagram\n Waku Node->>DNS Server: (1) Lookup TXT example.com\n DNS Server--\x3e>Waku Node: (2) enrtree-root:v1 e=U3...3Y ...\n Waku Node->>DNS Server: (3) Lookup TXT U3...3Y.example.com\n DNS Server--\x3e>Waku Node: (4) enrtree-branch:DU...VQ,J3..HU,IC...WE\n Waku Node->> DNS Server: (5) Lookup TXT DU...VQ.example.com\n DNS Server--\x3e>Waku Node: (6) enr:-M-4QLdAB-Kyz...Wt1Mg8\n Waku Node ->> Waku Node: (7) Decode ENR: Peer's connection details"}),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"DNS lookup query to retrieve TXT data stored on ",(0,o.kt)("inlineCode",{parentName:"li"},"example.com")," domain."),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("inlineCode",{parentName:"li"},"enrtree-root")," is returned, and the value of ",(0,o.kt)("inlineCode",{parentName:"li"},"e")," is the ",(0,o.kt)("inlineCode",{parentName:"li"},"enr-root"),", the root hash of the node subtree."),(0,o.kt)("li",{parentName:"ol"},"DNS lookup query to retrieve TXT data stored on ",(0,o.kt)("inlineCode",{parentName:"li"},".example.com")," domain."),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("inlineCode",{parentName:"li"},"enrtree-branch")," is returned; this tree contains hashes of node subtrees."),(0,o.kt)("li",{parentName:"ol"},"DNS lookup query to retrieve TXT data stored on ",(0,o.kt)("inlineCode",{parentName:"li"},"DU...VQ.example.com")," domain, the first leaf of ",(0,o.kt)("inlineCode",{parentName:"li"},"enrtree-branch"),"."),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("inlineCode",{parentName:"li"},"enr")," record is returned."),(0,o.kt)("li",{parentName:"ol"},"Returned value is decoded, and peer connection details such as IP address and port are learned.")))}l.isMDXComponent=!0;const s={title:"DNS Discovery",hide_table_of_contents:!0},c=void 0,d={unversionedId:"learn/concepts/dns-discovery",id:"learn/concepts/dns-discovery",title:"DNS Discovery",description:"Built upon the foundation of EIP-1459: Node Discovery via DNS, DNS Discovery allows the retrieval of an ENR tree from the TXT field of a domain name. This innovative approach enables the storage of essential node connection details, including IP, port, and multiaddr.",source:"@site/docs/learn/concepts/dns-discovery.md",sourceDirName:"learn/concepts",slug:"/learn/concepts/dns-discovery",permalink:"/learn/concepts/dns-discovery",draft:!1,editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/docs/learn/concepts/dns-discovery.md",tags:[],version:"current",lastUpdatedAt:1715880135,formattedLastUpdatedAt:"16 May 2024",frontMatter:{title:"DNS Discovery",hide_table_of_contents:!0},sidebar:"learn",previous:{title:"Static Peers",permalink:"/learn/concepts/static-peers"},next:{title:"Discv5",permalink:"/learn/concepts/discv5"}},p={},u=[{value:"Pros",id:"pros",level:4},{value:"Cons",id:"cons",level:4},{value:"Overview",id:"overview",level:2}],m={toc:u},v="wrapper";function f(e){let{components:t,...n}=e;return(0,o.kt)(v,(0,r.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Built upon the foundation of ",(0,o.kt)("a",{parentName:"p",href:"https://eips.ethereum.org/EIPS/eip-1459"},"EIP-1459: Node Discovery via DNS"),", DNS Discovery allows the retrieval of an ",(0,o.kt)("inlineCode",{parentName:"p"},"ENR")," tree from the ",(0,o.kt)("inlineCode",{parentName:"p"},"TXT")," field of a domain name. This innovative approach enables the storage of essential node connection details, including IP, port, and multiaddr."),(0,o.kt)("p",null,"This bootstrapping method allows anyone to register and publish a domain name for the network, promoting increased decentralisation."),(0,o.kt)("h4",{id:"pros"},"Pros"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Low latency, low resource requirements."),(0,o.kt)("li",{parentName:"ul"},"Easy bootstrap list updates by modifying the domain name, eliminating the need for code changes."),(0,o.kt)("li",{parentName:"ul"},"Ability to reference a larger list of nodes by including other domain names in the code or ENR tree.")),(0,o.kt)("h4",{id:"cons"},"Cons"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Vulnerable to censorship: Domain names can be blocked or restricted."),(0,o.kt)("li",{parentName:"ul"},"Limited scalability: The listed nodes are at risk of being overwhelmed by receiving all queries. Also, operators must provide their ",(0,o.kt)("inlineCode",{parentName:"li"},"ENR")," to the domain owner for listing.")),(0,o.kt)("h2",{id:"overview"},"Overview"),(0,o.kt)(l,{mdxType:"DNSDiscovery"}))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/b551b2b5.0fbd8316.js b/assets/js/b551b2b5.0fbd8316.js new file mode 100644 index 0000000..42f9b33 --- /dev/null +++ b/assets/js/b551b2b5.0fbd8316.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[101],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),l=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=l(e.components);return r.createElement(s.Provider,{value:t},e.children)},p="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},g=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,u=d(e,["components","mdxType","originalType","parentName"]),p=l(n),g=a,m=p["".concat(s,".").concat(g)]||p[g]||c[g]||o;return n?r.createElement(m,i(i({ref:t},u),{},{components:n})):r.createElement(m,i({ref:t},u))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=g;var d={};for(var s in t)hasOwnProperty.call(t,s)&&(d[s]=t[s]);d.originalType=e,d[p]="string"==typeof e?e:a,i[1]=d;for(var l=2;l{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>c,frontMatter:()=>o,metadata:()=>d,toc:()=>l});var r=n(87462),a=(n(67294),n(3905));const o={title:"Find Your Node Address",hide_table_of_contents:!0},i=void 0,d={unversionedId:"guides/nwaku/find-node-address",id:"guides/nwaku/find-node-address",title:"Find Your Node Address",description:"When starting the node, nwaku will display all the public listening and discovery addresses at the INFO log level.",source:"@site/docs/guides/nwaku/find-node-address.md",sourceDirName:"guides/nwaku",slug:"/guides/nwaku/find-node-address",permalink:"/guides/nwaku/find-node-address",draft:!1,editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/docs/guides/nwaku/find-node-address.md",tags:[],version:"current",lastUpdatedAt:1715880135,formattedLastUpdatedAt:"16 May 2024",frontMatter:{title:"Find Your Node Address",hide_table_of_contents:!0},sidebar:"guides",previous:{title:"Configure Peer Discovery",permalink:"/guides/nwaku/configure-discovery"},next:{title:"Node Configuration Methods",permalink:"/guides/nwaku/config-methods"}},s={},l=[{value:"Listening addresses",id:"listening-addresses",level:2},{value:"Discoverable ENR addresses",id:"discoverable-enr-addresses",level:2},{value:"ENR for DNS discovery",id:"enr-for-dns-discovery",level:3},{value:"ENR for Discv5",id:"enr-for-discv5",level:3}],u={toc:l},p="wrapper";function c(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"When starting the node, ",(0,a.kt)("inlineCode",{parentName:"p"},"nwaku")," will display all the public listening and discovery addresses at the ",(0,a.kt)("inlineCode",{parentName:"p"},"INFO")," log level.")),(0,a.kt)("p",null,"You can find the addresses of a running node through its logs or by calling the ",(0,a.kt)("a",{parentName:"p",href:"https://waku-org.github.io/waku-rest-api/#get-/debug/v1/info"},"Get node info")," endpoint of the ",(0,a.kt)("a",{parentName:"p",href:"https://waku-org.github.io/waku-rest-api/"},"REST API"),"."),(0,a.kt)("h2",{id:"listening-addresses"},"Listening addresses"),(0,a.kt)("p",null,"Look for the log entry that begins with ",(0,a.kt)("inlineCode",{parentName:"p"},"Listening on"),", for example:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-txt",metastring:'title="Nwaku Log Output"',title:'"Nwaku',Log:!0,'Output"':!0},'INF 2023-06-15 16:09:54.448+01:00 Listening on topics="waku node" tid=1623445 file=waku_node.nim:922 full=[/ip4/0.0.0.0/tcp/60000/p2p/16Uiu2HAmQCsH9V81xoqTwGuT3qwkZWbwY1TtTQwpr3DjHU2TSwMn][/ip4/0.0.0.0/tcp/8000/ws/p2p/16Uiu2HAmQCsH9V81xoqTwGuT3qwkZWbwY1TtTQwpr3DjHU2TSwMn]\n')),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-shell"},"# Listening TCP transport address\n/ip4/0.0.0.0/tcp/60000/p2p/16Uiu2HAmQCsH9V81xoqTwGuT3qwkZWbwY1TtTQwpr3DjHU2TSwMn\n\n# Listening WebSocket address\n/ip4/0.0.0.0/tcp/8000/ws/p2p/16Uiu2HAmQCsH9V81xoqTwGuT3qwkZWbwY1TtTQwpr3DjHU2TSwMn\n")),(0,a.kt)("h2",{id:"discoverable-enr-addresses"},"Discoverable ENR addresses"),(0,a.kt)("p",null,"A ",(0,a.kt)("inlineCode",{parentName:"p"},"nwaku")," node can encode its addressing information in an ",(0,a.kt)("a",{parentName:"p",href:"https://eips.ethereum.org/EIPS/eip-778"},"Ethereum Node Record (ENR)"),"."),(0,a.kt)("h3",{id:"enr-for-dns-discovery"},"ENR for DNS discovery"),(0,a.kt)("p",null,"Look for the log entry that begins with ",(0,a.kt)("inlineCode",{parentName:"p"},"DNS: discoverable ENR"),", for example:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-txt",metastring:'title="Nwaku Log Output"',title:'"Nwaku',Log:!0,'Output"':!0},'INF 2023-06-15 16:09:54.448+01:00 DNS: discoverable ENR topics="waku node" tid=1623445 file=waku_node.nim:923 enr=enr:-Iu4QBKYj8Ovxwz4fIalxZ_1a8dOCU2WC-1LQrcBCCb4Np93f9-UuSZXn3vagJL1S3k3hwRYfOp3JSbW7_VqwtqMIeMBgmlkgnY0gmlwhAAAAACJc2VjcDI1NmsxoQOrmyV59dAzY4ZKrvrj32VOoZbLby8dCKFnXnqhIdQ0NYN0Y3CC6mCFd2FrdTIB\n')),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-shell"},"# ENR the node addresses are encoded in\nenr:-Iu4QBKYj8Ovxwz4fIalxZ_1a8dOCU2WC-1LQrcBCCb4Np93f9-UuSZXn3vagJL1S3k3hwRYfOp3JSbW7_VqwtqMIeMBgmlkgnY0gmlwhAAAAACJc2VjcDI1NmsxoQOrmyV59dAzY4ZKrvrj32VOoZbLby8dCKFnXnqhIdQ0NYN0Y3CC6mCFd2FrdTIB\n")),(0,a.kt)("h3",{id:"enr-for-discv5"},"ENR for Discv5"),(0,a.kt)("p",null,"Look for the log entry that begins with ",(0,a.kt)("inlineCode",{parentName:"p"},"Discv5: discoverable ENR"),", for example:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-txt",metastring:'title="Nwaku Log Output"',title:'"Nwaku',Log:!0,'Output"':!0},'INF 2023-06-15 16:09:54.448+01:00 Discv5: discoverable ENR topics="waku node" tid=1623445 file=waku_node.nim:924 enr=enr:-IO4QDxToTg86pPCK2KvMeVCXC2ADVZWrxXSvNZeaoa0JhShbM5qed69RQz1s1mWEEqJ3aoklo_7EU9iIBcPMVeKlCQBgmlkgnY0iXNlY3AyNTZrMaEDdBHK1Gx6y_zv5DVw5Qb3DtSOMmVHTZO1WSORrF2loL2DdWRwgiMohXdha3UyAw\n')),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-shell"},"# ENR the node addresses are encoded in\nenr:-IO4QDxToTg86pPCK2KvMeVCXC2ADVZWrxXSvNZeaoa0JhShbM5qed69RQz1s1mWEEqJ3aoklo_7EU9iIBcPMVeKlCQBgmlkgnY0iXNlY3AyNTZrMaEDdBHK1Gx6y_zv5DVw5Qb3DtSOMmVHTZO1WSORrF2loL2DdWRwgiMohXdha3UyAw\n")),(0,a.kt)("admonition",{title:"Congratulations!",type:"tip"},(0,a.kt)("p",{parentName:"admonition"},"You have successfully found the listening and discoverable addresses for your ",(0,a.kt)("inlineCode",{parentName:"p"},"nwaku")," node. Have a look at the Configure Peer Discovery](/guides/nwaku/configure-discovery) guide to learn how to discover and connect with peers in the network.")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/b99d0044.2d548166.js b/assets/js/b99d0044.2d548166.js deleted file mode 100644 index 02f410b..0000000 --- a/assets/js/b99d0044.2d548166.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[1201],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>k});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var l=a.createContext({}),u=function(e){var t=a.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},c=function(e){var t=u(e.components);return a.createElement(l.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),p=u(r),h=n,k=p["".concat(l,".").concat(h)]||p[h]||d[h]||o;return r?a.createElement(k,i(i({ref:t},c),{},{components:r})):a.createElement(k,i({ref:t},c))}));function k(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,i=new Array(o);i[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:n,i[1]=s;for(var u=2;u{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>s,toc:()=>u});var a=r(87462),n=(r(67294),r(3905));const o={title:"The Waku Network",hide_table_of_contents:!0},i=void 0,s={unversionedId:"learn/waku-network",id:"learn/waku-network",title:"The Waku Network",description:"The Waku Network is a shared p2p messaging network that is open-access, useful for generalized messaging, privacy-preserving, scalable and accessible even to resource-restricted devices. Some of the most prominent features include:",source:"@site/docs/learn/waku-network.md",sourceDirName:"learn",slug:"/learn/waku-network",permalink:"/learn/waku-network",draft:!1,editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/docs/learn/waku-network.md",tags:[],version:"current",lastUpdatedAt:1704966176,formattedLastUpdatedAt:"11 Jan 2024",frontMatter:{title:"The Waku Network",hide_table_of_contents:!0},sidebar:"learn",next:{title:"Protocols",permalink:"/learn/concepts/protocols"}},l={},u=[{value:"Why join the Waku network?",id:"why-join-the-waku-network",level:2},{value:"Prerequisites",id:"prerequisites",level:2},{value:"Running a Waku network node",id:"running-a-waku-network-node",level:2}],c={toc:u},p="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(p,(0,a.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"The Waku Network is a shared p2p messaging network that is open-access, useful for generalized messaging, privacy-preserving, scalable and accessible even to resource-restricted devices. Some of the most prominent features include:"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"DoS/spam protection with privacy-preserving ",(0,n.kt)("a",{parentName:"li",href:"https://rfc.vac.dev/spec/64/#rln-rate-limiting"},"Rate-Limiting Nullifiers"),"."),(0,n.kt)("li",{parentName:"ol"},"Scalability by ",(0,n.kt)("a",{parentName:"li",href:"https://rfc.vac.dev/spec/64/#network-shards"},"sharding traffic")," into 8 pubsub topics."),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("a",{parentName:"li",href:"https://rfc.vac.dev/spec/64/#autosharding"},"Automatic shard selection")," based on content topic."),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("a",{parentName:"li",href:"https://rfc.vac.dev/spec/64/#default-services"},"Services")," for resource-restricted nodes, including historical message storage and retrieval, filtering, etc.")),(0,n.kt)("p",null,"If you want to learn more about the Waku Network, the ",(0,n.kt)("a",{parentName:"p",href:"https://rfc.vac.dev/spec/64/"},"WAKU2-NETWORK RFC")," provides an in-depth look under the hood."),(0,n.kt)("admonition",{type:"info"},(0,n.kt)("p",{parentName:"admonition"},"The public Waku Network replaces the previous experimental shared routing layer based on a default pubsub topic (",(0,n.kt)("inlineCode",{parentName:"p"},"/waku/2/default-waku/proto"),"). If your project currently uses this or any other shared pubsub topics, we encourage you to migrate to the public Waku Network with built-in DoS protection, scalability, and reasonable bandwidth usage.")),(0,n.kt)("h2",{id:"why-join-the-waku-network"},"Why join the Waku network?"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Applications or projects can build decentralized communication components on this network, gaining from the fault-tolerance of shared infrastructure, the out-of-the-box censorship resistance of a p2p network and the privacy-preservation of Waku protocols."),(0,n.kt)("li",{parentName:"ol"},"Supporters of public goods and decentralized infrastructure can run their nodes to support the network."),(0,n.kt)("li",{parentName:"ol"},"We are also working on incentivisation vectors to encourage more node operators to provide services to the network.")),(0,n.kt)("h2",{id:"prerequisites"},"Prerequisites"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("strong",{parentName:"li"},"Ethereum Sepolia WebSocket endpoint"),", which can be yours or from a third party. Have a look at the ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/waku-org/nwaku/blob/master/docs/tutorial/pre-requisites-of-running-on-chain-spam-protected-chat2.md#3-access-a-node-on-the-sepolia-testnet-using-infura"},"Access a Sepolia Node Using Infura")," guide for a free Infura option. This node is used to interact with the ",(0,n.kt)("a",{parentName:"li",href:"https://rfc.vac.dev/spec/17/"},"on-chain RLN membership contract"),"."),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("strong",{parentName:"li"},"Wallet with Sepolia Ethereum")," (less than 0.1 Sepolia ETH). Have a look at the ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/waku-org/nwaku/blob/master/docs/tutorial/pre-requisites-of-running-on-chain-spam-protected-chat2.md#1-create-a-sepolia-ethereum-account-and-obtain-its-private-key"},"Create a Sepolia Ethereum Wallet")," and ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/waku-org/nwaku/blob/master/docs/tutorial/pre-requisites-of-running-on-chain-spam-protected-chat2.md#2-obtain-sepolia-eth-from-faucet"},"Obtain Sepolia Ethereum from Faucet")," guides to get a Sepolia wallet and fund it with some Sepolia Ethereum. This wallet is required to register ",(0,n.kt)("a",{parentName:"li",href:"https://rfc.vac.dev/spec/17/#setup-and-registration"},"RLN membership"),", which is essential for publishing on the network.")),(0,n.kt)("h2",{id:"running-a-waku-network-node"},"Running a Waku network node"),(0,n.kt)("p",null,"Have a look at the ",(0,n.kt)("a",{parentName:"p",href:"/guides/nwaku/run-docker-compose"},"Run Nwaku with Docker Compose")," guide for instructions on running a ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/waku-org/nwaku"},"nwaku")," node in the Waku Network. Use the Sepolia node and wallet you obtained above."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/b99d0044.8e944340.js b/assets/js/b99d0044.8e944340.js new file mode 100644 index 0000000..648e49e --- /dev/null +++ b/assets/js/b99d0044.8e944340.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[1201],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>h});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),l=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},c=function(e){var t=l(e.components);return a.createElement(u.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},k=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,u=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),p=l(r),k=n,h=p["".concat(u,".").concat(k)]||p[k]||d[k]||o;return r?a.createElement(h,i(i({ref:t},c),{},{components:r})):a.createElement(h,i({ref:t},c))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,i=new Array(o);i[0]=k;var s={};for(var u in t)hasOwnProperty.call(t,u)&&(s[u]=t[u]);s.originalType=e,s[p]="string"==typeof e?e:n,i[1]=s;for(var l=2;l{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>s,toc:()=>l});var a=r(87462),n=(r(67294),r(3905));const o={title:"The Waku Network",hide_table_of_contents:!0},i=void 0,s={unversionedId:"learn/waku-network",id:"learn/waku-network",title:"The Waku Network",description:"The Waku Network is a shared p2p messaging network that is open-access, useful for generalized messaging, privacy-preserving, scalable and accessible even to resource-restricted devices. Some of the most prominent features include:",source:"@site/docs/learn/waku-network.md",sourceDirName:"learn",slug:"/learn/waku-network",permalink:"/learn/waku-network",draft:!1,editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/docs/learn/waku-network.md",tags:[],version:"current",lastUpdatedAt:1715880135,formattedLastUpdatedAt:"16 May 2024",frontMatter:{title:"The Waku Network",hide_table_of_contents:!0},sidebar:"learn",next:{title:"Protocols",permalink:"/learn/concepts/protocols"}},u={},l=[{value:"Why join the Waku network?",id:"why-join-the-waku-network",level:2},{value:"Prerequisites",id:"prerequisites",level:2},{value:"Running a Waku network node",id:"running-a-waku-network-node",level:2}],c={toc:l},p="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(p,(0,a.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"The Waku Network is a shared p2p messaging network that is open-access, useful for generalized messaging, privacy-preserving, scalable and accessible even to resource-restricted devices. Some of the most prominent features include:"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"DoS/spam protection with privacy-preserving Rate-Limiting Nullifiers."),(0,n.kt)("li",{parentName:"ol"},"Scalability by sharding traffic into 8 pubsub topics."),(0,n.kt)("li",{parentName:"ol"},"Automatic shard selection based on content topic."),(0,n.kt)("li",{parentName:"ol"},"Services for resource-restricted nodes, including historical message storage and retrieval, filtering, etc.")),(0,n.kt)("admonition",{type:"tip"},(0,n.kt)("p",{parentName:"admonition"},"If you want to learn more about the Waku Network, the ",(0,n.kt)("a",{parentName:"p",href:"https://blog.waku.org/2024-waku-network-tech-overview"},"The Waku Network: Technical Overview")," article provides an in-depth look under the hood.")),(0,n.kt)("h2",{id:"why-join-the-waku-network"},"Why join the Waku network?"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Applications or projects can build decentralized communication components on this network, gaining from the fault-tolerance of shared infrastructure, the out-of-the-box censorship resistance of a p2p network and the privacy-preservation of Waku protocols."),(0,n.kt)("li",{parentName:"ol"},"Supporters of public goods and decentralized infrastructure can run their nodes to support the network."),(0,n.kt)("li",{parentName:"ol"},"We are also working on incentivisation vectors to encourage more node operators to provide services to the network.")),(0,n.kt)("h2",{id:"prerequisites"},"Prerequisites"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("strong",{parentName:"li"},"Ethereum Sepolia WebSocket endpoint"),", which can be yours or from a third party. Have a look at the ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/waku-org/nwaku/blob/master/docs/tutorial/pre-requisites-of-running-on-chain-spam-protected-chat2.md#3-access-a-node-on-the-sepolia-testnet-using-infura"},"Access a Sepolia Node Using Infura")," guide for a free Infura option. This node is used to interact with the ",(0,n.kt)("a",{parentName:"li",href:"https://rfc.vac.dev/waku/standards/core/17/rln-relay/"},"on-chain RLN membership contract"),"."),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("strong",{parentName:"li"},"Wallet with Sepolia Ethereum")," (less than 0.1 Sepolia ETH). Have a look at the ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/waku-org/nwaku/blob/master/docs/tutorial/pre-requisites-of-running-on-chain-spam-protected-chat2.md#1-create-a-sepolia-ethereum-account-and-obtain-its-private-key"},"Create a Sepolia Ethereum Wallet")," and ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/waku-org/nwaku/blob/master/docs/tutorial/pre-requisites-of-running-on-chain-spam-protected-chat2.md#2-obtain-sepolia-eth-from-faucet"},"Obtain Sepolia Ethereum from Faucet")," guides to get a Sepolia wallet and fund it with some Sepolia Ethereum. This wallet is required to register ",(0,n.kt)("a",{parentName:"li",href:"https://rfc.vac.dev/waku/standards/core/17/rln-relay/#setup-and-registration"},"RLN membership"),", which is essential for publishing on the network.")),(0,n.kt)("h2",{id:"running-a-waku-network-node"},"Running a Waku network node"),(0,n.kt)("p",null,"Have a look at the ",(0,n.kt)("a",{parentName:"p",href:"/guides/nwaku/run-docker-compose"},"Run Nwaku with Docker Compose")," guide for instructions on running a ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/waku-org/nwaku"},"nwaku")," node in the Waku Network. Use the Sepolia node and wallet you obtained above."),(0,n.kt)("admonition",{type:"info"},(0,n.kt)("p",{parentName:"admonition"},"The public Waku Network replaces the previous experimental shared routing layer based on a default pubsub topic (",(0,n.kt)("inlineCode",{parentName:"p"},"/waku/2/default-waku/proto"),"). If your project currently uses this or any other shared pubsub topics, we encourage you to migrate to the public Waku Network with built-in DoS protection, scalability, and reasonable bandwidth usage.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c764ec94.5884ee09.js b/assets/js/c764ec94.5884ee09.js deleted file mode 100644 index 5ce9dfa..0000000 --- a/assets/js/c764ec94.5884ee09.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[3076],{3905:(e,t,n)=>{n.d(t,{Zo:()=>l,kt:()=>f});var o=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function a(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var p=o.createContext({}),c=function(e){var t=o.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},l=function(e){var t=c(e.components);return o.createElement(p.Provider,{value:t},e.children)},m="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},d=o.forwardRef((function(e,t){var n=e.components,i=e.mdxType,r=e.originalType,p=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),m=c(n),d=i,f=m["".concat(p,".").concat(d)]||m[d]||u[d]||r;return n?o.createElement(f,a(a({ref:t},l),{},{components:n})):o.createElement(f,a({ref:t},l))}));function f(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=n.length,a=new Array(r);a[0]=d;var s={};for(var p in t)hasOwnProperty.call(t,p)&&(s[p]=t[p]);s.originalType=e,s[m]="string"==typeof e?e:i,a[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>s,toc:()=>c});var o=n(87462),i=(n(67294),n(3905));const r={title:"Content Topics",hide_table_of_contents:!0},a=void 0,s={unversionedId:"learn/concepts/content-topics",id:"learn/concepts/content-topics",title:"Content Topics",description:"Content Topics are metadata strings set by developers on outgoing messages to facilitate protocol-level features like selectively processing incoming messages (Relay or Filter) and retrieving historical messages (Store) that meet specific filtering criteria. Have a look at the WAKU2-TOPICS specification to learn more.",source:"@site/docs/learn/concepts/content-topics.md",sourceDirName:"learn/concepts",slug:"/learn/concepts/content-topics",permalink:"/learn/concepts/content-topics",draft:!1,editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/docs/learn/concepts/content-topics.md",tags:[],version:"current",lastUpdatedAt:1705879410,formattedLastUpdatedAt:"21 Jan 2024",frontMatter:{title:"Content Topics",hide_table_of_contents:!0},sidebar:"learn",previous:{title:"Protocols",permalink:"/learn/concepts/protocols"},next:{title:"Network Domains",permalink:"/learn/concepts/network-domains"}},p={},c=[{value:"Naming format",id:"naming-format",level:2},{value:"Naming considerations",id:"naming-considerations",level:2},{value:"Protocols disclose content topics to peers",id:"protocols-disclose-content-topics-to-peers",level:3},{value:"Increasing k-anonymity preserves user anonymity",id:"increasing-k-anonymity-preserves-user-anonymity",level:3},{value:"Creating buckets help in distributing traffic",id:"creating-buckets-help-in-distributing-traffic",level:3}],l={toc:c},m="wrapper";function u(e){let{components:t,...n}=e;return(0,i.kt)(m,(0,o.Z)({},l,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Content Topics")," are metadata strings set by developers on outgoing messages to facilitate protocol-level features like selectively processing incoming messages (",(0,i.kt)("a",{parentName:"p",href:"/learn/concepts/protocols#relay"},"Relay")," or ",(0,i.kt)("a",{parentName:"p",href:"/learn/concepts/protocols#filter"},"Filter"),") and retrieving historical messages (",(0,i.kt)("a",{parentName:"p",href:"/learn/concepts/protocols#store"},"Store"),") that meet specific filtering criteria. Have a look at the ",(0,i.kt)("a",{parentName:"p",href:"https://rfc.vac.dev/spec/23/#content-topics"},"WAKU2-TOPICS")," specification to learn more."),(0,i.kt)("h2",{id:"naming-format"},"Naming format"),(0,i.kt)("p",null,"Here is the recommended format for content topics:"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"/{application-name}/{version}/{content-topic-name}/{encoding}")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"application-name"),": This is the unique name of your decentralised application (DApp) to prevent conflicts with other DApps."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"version"),": Typically starting at ",(0,i.kt)("inlineCode",{parentName:"li"},"1"),", this field helps track breaking changes in your messages."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"content-topic-name"),": The specific name of the content topic used for filtering."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"encoding"),": The message encoding or serialisation format, with ",(0,i.kt)("a",{parentName:"li",href:"https://protobuf.dev/"},"Protocol Buffers")," (",(0,i.kt)("inlineCode",{parentName:"li"},"proto"),") being the recommended choice.")),(0,i.kt)("p",null,"For example, if your DApp is called ",(0,i.kt)("inlineCode",{parentName:"p"},"SuperCrypto")," and it allows users to receive notifications and send private messages, you can consider using the following content topics:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"/supercrypto/1/notification/proto")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"/supercrypto/1/private-message/proto"))),(0,i.kt)("admonition",{type:"tip"},(0,i.kt)("p",{parentName:"admonition"},"While you can choose any encoding format for your ",(0,i.kt)("inlineCode",{parentName:"p"},"Content Topic"),", we highly recommend using Protocol Buffers (",(0,i.kt)("inlineCode",{parentName:"p"},"proto"),") because of its efficiency. Choosing a lightweight format ensures optimal performance of your DApp.")),(0,i.kt)("h2",{id:"naming-considerations"},"Naming considerations"),(0,i.kt)("p",null,"When choosing a content topic, it is essential to consider the privacy implications. Here are several factors to keep in mind:"),(0,i.kt)("h3",{id:"protocols-disclose-content-topics-to-peers"},"Protocols disclose content topics to peers"),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"Filter"),", ",(0,i.kt)("inlineCode",{parentName:"p"},"Store"),", and ",(0,i.kt)("inlineCode",{parentName:"p"},"Light Push")," protocols share content topics with peers, allowing them to link IP and content topic interests. The ",(0,i.kt)("inlineCode",{parentName:"p"},"Relay")," protocol, using ",(0,i.kt)("inlineCode",{parentName:"p"},"GossipSub"),", provides recipient anonymity, which can be compromised if the content topic exposes user information."),(0,i.kt)("p",null,"For example, instead of using Personally Identifiable Information (PII) in the content topic (e.g., a public key), you can create buckets (e.g., based on the first 4 bytes of the public key hash)."),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Waku is developing privacy-preserving features like ",(0,i.kt)("a",{parentName:"p",href:"https://rfc.vac.dev/spec/12/#future-work"},"Anonymous Filter Subscription")," for the ",(0,i.kt)("inlineCode",{parentName:"p"},"Filter")," protocol and ",(0,i.kt)("a",{parentName:"p",href:"https://rfc.vac.dev/spec/13/#future-work"},"Anonymous Query")," for the ",(0,i.kt)("inlineCode",{parentName:"p"},"Store")," protocol to hide content topics from potential adversaries.")),(0,i.kt)("h3",{id:"increasing-k-anonymity-preserves-user-anonymity"},"Increasing k-anonymity preserves user anonymity"),(0,i.kt)("p",null,"You can increase ",(0,i.kt)("a",{parentName:"p",href:"https://www.privitar.com/blog/k-anonymity-an-introduction/"},"k-anonymity")," within the network by using a unified content topic across the entire application or targeting specific features like notifications or private messages, allowing multiple users to share it."),(0,i.kt)("p",null,"We recommend switching functionality using the Protocol Buffer (",(0,i.kt)("inlineCode",{parentName:"p"},"proto"),") message format. By doing so, applications can retain a high granularity and functionality while using a single content topic, preserving user privacy. For example:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-js"},"message NotificationPayload {\n...\n}\n\nmessage FeatureAbcPayload {\n...\n}\n\n// By default, all fields in protobuf are optional so only field may be encoded at a time\nmessage Payload {\n NotificationPayload notification = 1;\n FeatureAbcPayload feature_abc = 2;\n}\n")),(0,i.kt)("h3",{id:"creating-buckets-help-in-distributing-traffic"},"Creating buckets help in distributing traffic"),(0,i.kt)("p",null,"When an application uses a single content topic, all users using ",(0,i.kt)("a",{parentName:"p",href:"/learn/concepts/network-domains#requestresponse-domain"},"request/response protocols")," (",(0,i.kt)("inlineCode",{parentName:"p"},"Filter"),", ",(0,i.kt)("inlineCode",{parentName:"p"},"Store"),") receive all its messages. For heavy traffic, developers can create buckets by hashing a unique identifier (e.g., recipient's ID, public key, or app domain topic) and adding its first byte to the content topic, like ",(0,i.kt)("inlineCode",{parentName:"p"},"/my-app/0/a/proto"),"."),(0,i.kt)("p",null,"This approach divides traffic into multiple topics, reducing the messages users have to download. Developers can add more first bytes to the content topic over time to improve efficiency and privacy based on messages and user needs."),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"The ",(0,i.kt)("strong",{parentName:"p"},"k")," value of ",(0,i.kt)("strong",{parentName:"p"},"k-anonymity")," equals the number of IDs for which the first character of the hash is ",(0,i.kt)("inlineCode",{parentName:"p"},'"a"'),". For example, using a single content topic in an application with 10,000 users results in ",(0,i.kt)("strong",{parentName:"p"},"k = 10,000"),". However, using the hash ID's first character, ",(0,i.kt)("strong",{parentName:"p"},"k")," reduces to ",(0,i.kt)("strong",{parentName:"p"},"10,000 / 16 = 625"),".")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c764ec94.db763f0f.js b/assets/js/c764ec94.db763f0f.js new file mode 100644 index 0000000..0272cba --- /dev/null +++ b/assets/js/c764ec94.db763f0f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[3076],{3905:(e,t,n)=>{n.d(t,{Zo:()=>l,kt:()=>f});var o=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function r(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var p=o.createContext({}),c=function(e){var t=o.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},l=function(e){var t=c(e.components);return o.createElement(p.Provider,{value:t},e.children)},m="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},d=o.forwardRef((function(e,t){var n=e.components,i=e.mdxType,a=e.originalType,p=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),m=c(n),d=i,f=m["".concat(p,".").concat(d)]||m[d]||u[d]||a;return n?o.createElement(f,r(r({ref:t},l),{},{components:n})):o.createElement(f,r({ref:t},l))}));function f(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=n.length,r=new Array(a);r[0]=d;var s={};for(var p in t)hasOwnProperty.call(t,p)&&(s[p]=t[p]);s.originalType=e,s[m]="string"==typeof e?e:i,r[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>r,default:()=>u,frontMatter:()=>a,metadata:()=>s,toc:()=>c});var o=n(87462),i=(n(67294),n(3905));const a={title:"Content Topics",hide_table_of_contents:!0},r=void 0,s={unversionedId:"learn/concepts/content-topics",id:"learn/concepts/content-topics",title:"Content Topics",description:"Content Topics are metadata strings set by developers on outgoing messages to facilitate protocol-level features like selectively processing incoming messages (Relay or Filter) and retrieving historical messages (Store) that meet specific filtering criteria. Have a look at the WAKU2-TOPICS specification to learn more.",source:"@site/docs/learn/concepts/content-topics.md",sourceDirName:"learn/concepts",slug:"/learn/concepts/content-topics",permalink:"/learn/concepts/content-topics",draft:!1,editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/docs/learn/concepts/content-topics.md",tags:[],version:"current",lastUpdatedAt:1715880135,formattedLastUpdatedAt:"16 May 2024",frontMatter:{title:"Content Topics",hide_table_of_contents:!0},sidebar:"learn",previous:{title:"Protocols",permalink:"/learn/concepts/protocols"},next:{title:"Network Domains",permalink:"/learn/concepts/network-domains"}},p={},c=[{value:"Naming format",id:"naming-format",level:2},{value:"Naming considerations",id:"naming-considerations",level:2},{value:"Protocols disclose content topics to peers",id:"protocols-disclose-content-topics-to-peers",level:3},{value:"Increasing k-anonymity preserves user anonymity",id:"increasing-k-anonymity-preserves-user-anonymity",level:3},{value:"Creating buckets help in distributing traffic",id:"creating-buckets-help-in-distributing-traffic",level:3}],l={toc:c},m="wrapper";function u(e){let{components:t,...n}=e;return(0,i.kt)(m,(0,o.Z)({},l,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Content Topics")," are metadata strings set by developers on outgoing messages to facilitate protocol-level features like selectively processing incoming messages (",(0,i.kt)("a",{parentName:"p",href:"/learn/concepts/protocols#relay"},"Relay")," or ",(0,i.kt)("a",{parentName:"p",href:"/learn/concepts/protocols#filter"},"Filter"),") and retrieving historical messages (",(0,i.kt)("a",{parentName:"p",href:"/learn/concepts/protocols#store"},"Store"),") that meet specific filtering criteria. Have a look at the ",(0,i.kt)("a",{parentName:"p",href:"https://rfc.vac.dev/waku/informational/23/topics#content-topics"},"WAKU2-TOPICS")," specification to learn more."),(0,i.kt)("h2",{id:"naming-format"},"Naming format"),(0,i.kt)("p",null,"Here is the recommended format for content topics:"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"/{application-name}/{version}/{content-topic-name}/{encoding}")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"application-name"),": This is the unique name of your decentralised application (DApp) to prevent conflicts with other DApps."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"version"),": Typically starting at ",(0,i.kt)("inlineCode",{parentName:"li"},"1"),", this field helps track breaking changes in your messages."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"content-topic-name"),": The specific name of the content topic used for filtering."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"encoding"),": The message encoding or serialisation format, with ",(0,i.kt)("a",{parentName:"li",href:"https://protobuf.dev/"},"Protocol Buffers")," (",(0,i.kt)("inlineCode",{parentName:"li"},"proto"),") being the recommended choice.")),(0,i.kt)("p",null,"For example, if your DApp is called ",(0,i.kt)("inlineCode",{parentName:"p"},"SuperCrypto")," and it allows users to receive notifications and send private messages, you can consider using the following content topics:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"/supercrypto/1/notification/proto")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"/supercrypto/1/private-message/proto"))),(0,i.kt)("admonition",{type:"tip"},(0,i.kt)("p",{parentName:"admonition"},"While you can choose any encoding format for your ",(0,i.kt)("inlineCode",{parentName:"p"},"Content Topic"),", we highly recommend using Protocol Buffers (",(0,i.kt)("inlineCode",{parentName:"p"},"proto"),") because of its efficiency. Choosing a lightweight format ensures optimal performance of your DApp.")),(0,i.kt)("h2",{id:"naming-considerations"},"Naming considerations"),(0,i.kt)("p",null,"When choosing a content topic, it is essential to consider the privacy implications. Here are several factors to keep in mind:"),(0,i.kt)("h3",{id:"protocols-disclose-content-topics-to-peers"},"Protocols disclose content topics to peers"),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"Filter"),", ",(0,i.kt)("inlineCode",{parentName:"p"},"Store"),", and ",(0,i.kt)("inlineCode",{parentName:"p"},"Light Push")," protocols share content topics with peers, allowing them to link IP and content topic interests. The ",(0,i.kt)("inlineCode",{parentName:"p"},"Relay")," protocol, using ",(0,i.kt)("inlineCode",{parentName:"p"},"GossipSub"),", provides recipient anonymity, which can be compromised if the content topic exposes user information."),(0,i.kt)("p",null,"For example, instead of using Personally Identifiable Information (PII) in the content topic (e.g., a public key), you can create buckets (e.g., based on the first 4 bytes of the public key hash)."),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Waku is developing privacy-preserving features like ",(0,i.kt)("a",{parentName:"p",href:"https://rfc.vac.dev/waku/standards/core/12/filter/#future-work"},"Anonymous Filter Subscription")," for the ",(0,i.kt)("inlineCode",{parentName:"p"},"Filter")," protocol and ",(0,i.kt)("a",{parentName:"p",href:"https://rfc.vac.dev/waku/standards/core/13/store#future-work"},"Anonymous Query")," for the ",(0,i.kt)("inlineCode",{parentName:"p"},"Store")," protocol to hide content topics from potential adversaries.")),(0,i.kt)("h3",{id:"increasing-k-anonymity-preserves-user-anonymity"},"Increasing k-anonymity preserves user anonymity"),(0,i.kt)("p",null,"You can increase ",(0,i.kt)("a",{parentName:"p",href:"https://www.privitar.com/blog/k-anonymity-an-introduction/"},"k-anonymity")," within the network by using a unified content topic across the entire application or targeting specific features like notifications or private messages, allowing multiple users to share it."),(0,i.kt)("p",null,"We recommend switching functionality using the Protocol Buffer (",(0,i.kt)("inlineCode",{parentName:"p"},"proto"),") message format. By doing so, applications can retain a high granularity and functionality while using a single content topic, preserving user privacy. For example:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-js"},"message NotificationPayload {\n...\n}\n\nmessage FeatureAbcPayload {\n...\n}\n\n// By default, all fields in protobuf are optional so only field may be encoded at a time\nmessage Payload {\n NotificationPayload notification = 1;\n FeatureAbcPayload feature_abc = 2;\n}\n")),(0,i.kt)("h3",{id:"creating-buckets-help-in-distributing-traffic"},"Creating buckets help in distributing traffic"),(0,i.kt)("p",null,"When an application uses a single content topic, all users using ",(0,i.kt)("a",{parentName:"p",href:"/learn/concepts/network-domains#requestresponse-domain"},"request/response protocols")," (",(0,i.kt)("inlineCode",{parentName:"p"},"Filter"),", ",(0,i.kt)("inlineCode",{parentName:"p"},"Store"),") receive all its messages. For heavy traffic, developers can create buckets by hashing a unique identifier (e.g., recipient's ID, public key, or app domain topic) and adding its first byte to the content topic, like ",(0,i.kt)("inlineCode",{parentName:"p"},"/my-app/0/a/proto"),"."),(0,i.kt)("p",null,"This approach divides traffic into multiple topics, reducing the messages users have to download. Developers can add more first bytes to the content topic over time to improve efficiency and privacy based on messages and user needs."),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"The ",(0,i.kt)("strong",{parentName:"p"},"k")," value of ",(0,i.kt)("strong",{parentName:"p"},"k-anonymity")," equals the number of IDs for which the first character of the hash is ",(0,i.kt)("inlineCode",{parentName:"p"},'"a"'),". For example, using a single content topic in an application with 10,000 users results in ",(0,i.kt)("strong",{parentName:"p"},"k = 10,000"),". However, using the hash ID's first character, ",(0,i.kt)("strong",{parentName:"p"},"k")," reduces to ",(0,i.kt)("strong",{parentName:"p"},"10,000 / 16 = 625"),".")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c9ea0dcf.0032e3c1.js b/assets/js/c9ea0dcf.0032e3c1.js new file mode 100644 index 0000000..45b2f8a --- /dev/null +++ b/assets/js/c9ea0dcf.0032e3c1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[2941],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var l=r.createContext({}),u=function(e){var t=r.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},p=function(e){var t=u(e.components);return r.createElement(l.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},k=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),c=u(a),k=n,m=c["".concat(l,".").concat(k)]||c[k]||d[k]||o;return a?r.createElement(m,i(i({ref:t},p),{},{components:a})):r.createElement(m,i({ref:t},p))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=k;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[c]="string"==typeof e?e:n,i[1]=s;for(var u=2;u{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>s,toc:()=>u});var r=a(87462),n=(a(67294),a(3905));const o={title:"Introduction to Waku",hide_table_of_contents:!0,slug:"/"},i=void 0,s={unversionedId:"guides/getting-started",id:"guides/getting-started",title:"Introduction to Waku",description:"Waku is a family of robust, censorship-resistant, peer-to-peer communication protocols that enable privacy-focused messaging for Web3 applications, allowing you to integrate decentralised communication features into your dApp without compromising security or privacy.",source:"@site/docs/guides/getting-started.md",sourceDirName:"guides",slug:"/",permalink:"/",draft:!1,editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/docs/guides/getting-started.md",tags:[],version:"current",lastUpdatedAt:1715880135,formattedLastUpdatedAt:"16 May 2024",frontMatter:{title:"Introduction to Waku",hide_table_of_contents:!0,slug:"/"},sidebar:"guides",next:{title:"Run a Nwaku Node",permalink:"/guides/nwaku/run-node"}},l={},u=[{value:"What isn\u2019t Waku?",id:"what-isnt-waku",level:2},{value:"What can Waku be used for?",id:"what-can-waku-be-used-for",level:2},{value:"Case studies",id:"case-studies",level:2},{value:"Getting started",id:"getting-started",level:2},{value:"Run a Waku node",id:"run-a-waku-node",level:3},{value:"Integrate using SDKs",id:"integrate-using-sdks",level:3},{value:"Other integrations",id:"other-integrations",level:3}],p={toc:u},c="wrapper";function d(e){let{components:t,...o}=e;return(0,n.kt)(c,(0,r.Z)({},p,o,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"Waku is a family of robust, censorship-resistant, peer-to-peer communication protocols that enable privacy-focused messaging for Web3 applications, allowing you to integrate decentralised communication features into your dApp without compromising security or privacy."),(0,n.kt)("mermaid",{value:"graph LR\n S1(Message Sender 1) --\x3e|Message 1| W(The Waku Network)\n S2(Message Sender 2) --\x3e|Message 2| W\n S3(Message Sender 3) --\x3e|Message 3| W\n W --\x3e|Message 1| R1(Message Receiver 1)\n W --\x3e|Message 2| R1\n W --\x3e|Message 3| R2(Message Receiver 2)"}),(0,n.kt)("div",{class:"video-container"},(0,n.kt)("iframe",{class:"yt-video",src:"https://www.youtube.com/embed/nIWx5Vp_Qxk",title:"Waku Tutorial 001: Introduction to Waku",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0})),(0,n.kt)("admonition",{type:"tip"},(0,n.kt)("p",{parentName:"admonition"},"Check out our ",(0,n.kt)("a",{parentName:"p",href:"/learn/waku-network"},"Learn section"),", ",(0,n.kt)("a",{parentName:"p",href:"https://www.youtube.com/@wakuorg"},"YouTube channel"),", and ",(0,n.kt)("a",{parentName:"p",href:"https://blog.waku.org/"},"Blog")," to dive into how Waku works behind the scenes!")),(0,n.kt)("h2",{id:"what-isnt-waku"},"What isn\u2019t Waku?"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Waku is not a blockchain but a network composed of protocols designed for Web3 communication, operating without the need for gas fees."),(0,n.kt)("li",{parentName:"ul"},"Waku is not just for messaging applications; it supports the development of complex applications that require secure and private data transmission."),(0,n.kt)("li",{parentName:"ul"},"Waku is not a long-term data storage network; it focuses on short, ephemeral, real-time messaging.")),(0,n.kt)("h2",{id:"what-can-waku-be-used-for"},"What can Waku be used for?"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("strong",{parentName:"li"},"Chat Messengers"),": Waku can be used to build private, decentralised chat apps resistant to censorship."),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("strong",{parentName:"li"},"Voting and Proposals"),": Exchange votes on proposals off-chain via Waku to save gas fees, then submit aggregated results to the blockchain."),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("strong",{parentName:"li"},"NFT Marketplaces"),": Use Waku to handle off-chain NFT bids and offers for gas savings, and to integrate social interactions like likes and comments."),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("strong",{parentName:"li"},"State Channels"),": Establish and maintain state channels with Waku, facilitating seamless message exchanges and updates without blockchain interaction."),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("strong",{parentName:"li"},"Signature Exchange for Multi-Signature Wallets"),": Allow multi-signature wallet owners to exchange signatures privately and securely through Waku."),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("strong",{parentName:"li"},"Game Mechanics Communication"),": Implement Waku as a communication layer for decentralised, peer-to-peer gaming, avoiding centralised infrastructure."),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("strong",{parentName:"li"},"Layer 2 Coordination (Open Market, Spam Protected Mempool)"),": Broadcast and aggregate Layer 2 transactions via Waku to enhance privacy and scalability, reducing network load."),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("strong",{parentName:"li"},"Social Media Platforms"),": Beyond chat messengers, use Waku for decentralised, censorship-resistant social media platforms like news feeds and multimedia sharing.")),(0,n.kt)("admonition",{type:"tip"},(0,n.kt)("p",{parentName:"admonition"},"Looking for what to build with Waku? Discover a collection of sample ideas and use cases for inspiration, curated by our community at: ",(0,n.kt)("a",{parentName:"p",href:"https://ideas.waku.org/"},"https://ideas.waku.org/")," and ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/waku-org/awesome-waku/"},"Awesome Waku"),".")),(0,n.kt)("h2",{id:"case-studies"},"Case studies"),(0,n.kt)("div",{class:"case-study-container"},(0,n.kt)("a",{href:"https://blog.waku.org/thegraph-waku-case-study/",target:"_blank",rel:"noopener noreferrer"},(0,n.kt)("img",{src:"/img/graph-use-case.jpeg"})),(0,n.kt)("a",{href:"https://blog.waku.org/railgun-waku-case-study/",target:"_blank",rel:"noopener noreferrer"},(0,n.kt)("img",{src:"/img/railgun-use-case.jpeg"}))),(0,n.kt)("h2",{id:"getting-started"},"Getting started"),(0,n.kt)("div",{class:"video-container"},(0,n.kt)("iframe",{class:"yt-video two-items",src:"https://www.youtube.com/embed/PYQaXCxUCwA",title:"Waku Tutorial 001: Introduction to Waku",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,n.kt)("iframe",{class:"yt-video two-items",src:"https://www.youtube.com/embed/sfmMcrbiX0c",title:"Build a game using Waku Protocol",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0})),(0,n.kt)("h3",{id:"run-a-waku-node"},"Run a Waku node"),(0,n.kt)("p",null,"Waku is a decentralised, permissionless system where anyone can run a node, use the network, and contribute to its support. We recommend following the ",(0,n.kt)("a",{parentName:"p",href:"/guides/nwaku/run-docker-compose"},"Run Nwaku with Docker Compose")," guide and ",(0,n.kt)("a",{target:"_blank",href:a(18058).Z},"Waku Node Operator Cheatsheet")," to easily run a node."),(0,n.kt)("div",{class:"video-container"},(0,n.kt)("iframe",{class:"yt-video",src:"https://www.youtube.com/embed/fs0ynLk4z0I",title:"How to run a Waku node using Nwaku Compose",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0})),(0,n.kt)("admonition",{type:"tip"},(0,n.kt)("p",{parentName:"admonition"},"If you encounter issues running your node or require assistance with anything, please visit the ",(0,n.kt)("a",{parentName:"p",href:"https://discord.com/channels/1110799176264056863/1216748184592711691"},"#node-help channel")," on our Discord.")),(0,n.kt)("h3",{id:"integrate-using-sdks"},"Integrate using SDKs"),(0,n.kt)("p",null,"Waku is implemented in multiple SDKs, allowing it to integrate with different languages and address various use cases efficiently."),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:null}),(0,n.kt)("th",{parentName:"tr",align:null},"Description"),(0,n.kt)("th",{parentName:"tr",align:null},"Documentation"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://github.com/waku-org/js-waku"},"@waku/sdk")),(0,n.kt)("td",{parentName:"tr",align:null},"JavaScript/TypeScript SDK designed for browser environments"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"/guides/js-waku/"},"JavaScript Waku SDK"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://www.npmjs.com/package/@waku/react"},"@waku/react")),(0,n.kt)("td",{parentName:"tr",align:null},"React components and UI adapters designed for seamless integration with ",(0,n.kt)("inlineCode",{parentName:"td"},"@waku/sdk")),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"/guides/js-waku/use-waku-react"},"Build React DApps Using @waku/react"))))),(0,n.kt)("h3",{id:"other-integrations"},"Other integrations"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:null}),(0,n.kt)("th",{parentName:"tr",align:null},"Description"),(0,n.kt)("th",{parentName:"tr",align:null},"Documentation"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://waku-org.github.io/waku-rest-api/"},"REST API")),(0,n.kt)("td",{parentName:"tr",align:null},"REST API interface provided by ",(0,n.kt)("inlineCode",{parentName:"td"},"nwaku")," and ",(0,n.kt)("inlineCode",{parentName:"td"},"go-waku")," to interact with the Waku Network"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://waku-org.github.io/waku-rest-api/"},"Waku Node REST API Reference"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"https://www.npmjs.com/package/@waku/create-app"},"@waku/create-app")),(0,n.kt)("td",{parentName:"tr",align:null},"Starter kit to bootstrap your next ",(0,n.kt)("inlineCode",{parentName:"td"},"@waku/sdk")," project from various example templates"),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("a",{parentName:"td",href:"/guides/js-waku/use-waku-create-app"},"Scaffold DApps Using @waku/create-app"))))),(0,n.kt)("admonition",{type:"tip"},(0,n.kt)("p",{parentName:"admonition"},"Explore some example apps built using Waku at ",(0,n.kt)("a",{parentName:"p",href:"https://examples.waku.org/"},"https://examples.waku.org/")," and view a list of projects and workshops from previous hackathons at ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/waku-org/awesome-waku/"},"Awesome Waku"),".")))}d.isMDXComponent=!0},18058:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/files/Waku-NodeOperator-7fabb782473f2619b0b05dc209f12f53.pdf"}}]); \ No newline at end of file diff --git a/assets/js/c9ea0dcf.f1cadf12.js b/assets/js/c9ea0dcf.f1cadf12.js deleted file mode 100644 index 9d81ff0..0000000 --- a/assets/js/c9ea0dcf.f1cadf12.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[2941],{3905:(t,e,a)=>{a.d(e,{Zo:()=>d,kt:()=>g});var n=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function i(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function o(t){for(var e=1;e=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var u=n.createContext({}),p=function(t){var e=n.useContext(u),a=e;return t&&(a="function"==typeof t?t(e):o(o({},e),t)),a},d=function(t){var e=p(t.components);return n.createElement(u.Provider,{value:e},t.children)},s="mdxType",k={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},m=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,i=t.originalType,u=t.parentName,d=l(t,["components","mdxType","originalType","parentName"]),s=p(a),m=r,g=s["".concat(u,".").concat(m)]||s[m]||k[m]||i;return a?n.createElement(g,o(o({ref:e},d),{},{components:a})):n.createElement(g,o({ref:e},d))}));function g(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var i=a.length,o=new Array(i);o[0]=m;var l={};for(var u in e)hasOwnProperty.call(e,u)&&(l[u]=e[u]);l.originalType=t,l[s]="string"==typeof t?t:r,o[1]=l;for(var p=2;p{a.r(e),a.d(e,{assets:()=>u,contentTitle:()=>o,default:()=>k,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var n=a(87462),r=(a(67294),a(3905));const i={title:"Getting Started",hide_table_of_contents:!0,slug:"/"},o=void 0,l={unversionedId:"guides/getting-started",id:"guides/getting-started",title:"Getting Started",description:"Waku has risks and limitations as it is still developing and preparing for extensive adoption. However, it is already demonstrating its capabilities by powering various applications. Join our community to stay updated on our progress.",source:"@site/docs/guides/getting-started.md",sourceDirName:"guides",slug:"/",permalink:"/",draft:!1,editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/docs/guides/getting-started.md",tags:[],version:"current",lastUpdatedAt:1709627438,formattedLastUpdatedAt:"5 Mar 2024",frontMatter:{title:"Getting Started",hide_table_of_contents:!0,slug:"/"},sidebar:"guides",next:{title:"Run a Nwaku Node",permalink:"/guides/nwaku/run-node"}},u={},p=[{value:"Run a Waku node",id:"run-a-waku-node",level:2},{value:"Integrate using SDKs",id:"integrate-using-sdks",level:2},{value:"Run on mobile devices",id:"run-on-mobile-devices",level:2},{value:"More integrations",id:"more-integrations",level:2}],d={toc:p},s="wrapper";function k(t){let{components:e,...a}=t;return(0,r.kt)(s,(0,n.Z)({},d,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"Waku has risks and limitations as it is still developing and preparing for extensive adoption. However, it is already demonstrating its capabilities by powering various applications. ",(0,r.kt)("a",{parentName:"p",href:"https://waku.org/community/"},"Join our community")," to stay updated on our progress.")),(0,r.kt)("p",null,"Ready to integrate Waku into your application for private, secure, censorship-free communication? Explore the available SDKs and contribute by running a node."),(0,r.kt)("h2",{id:"run-a-waku-node"},"Run a Waku node"),(0,r.kt)("p",null,"The Waku Network is a decentralised, permissionless system where anyone can run nodes, use the network, and contribute to its support."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null}),(0,r.kt)("th",{parentName:"tr",align:null},"Description"),(0,r.kt)("th",{parentName:"tr",align:null},"Documentation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"https://github.com/waku-org/nwaku"},"nwaku")),(0,r.kt)("td",{parentName:"tr",align:null},"Nim-based Waku implementation to run a standalone node and access the network"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/guides/nwaku/run-node"},"Run a Nwaku Node"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"https://github.com/waku-org/nwaku-compose"},"nwaku-compose")),(0,r.kt)("td",{parentName:"tr",align:null},"Pre-configured Docker Compose setup for running a RLN-enabled ",(0,r.kt)("inlineCode",{parentName:"td"},"nwaku")," node with Grafana metrics dashboard (recommended)"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/guides/nwaku/run-docker-compose"},"Run Nwaku with Docker Compose"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"https://github.com/waku-org/go-waku"},"go-waku")),(0,r.kt)("td",{parentName:"tr",align:null},"Golang-based Waku implementation to run a standalone node and access the network"),(0,r.kt)("td",{parentName:"tr",align:null},"COMING SOON")))),(0,r.kt)("h2",{id:"integrate-using-sdks"},"Integrate using SDKs"),(0,r.kt)("p",null,"Waku is implemented in multiple SDKs, allowing it to integrate with different languages and address various use cases efficiently."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null}),(0,r.kt)("th",{parentName:"tr",align:null},"Description"),(0,r.kt)("th",{parentName:"tr",align:null},"Documentation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"https://github.com/waku-org/js-waku"},"@waku/sdk")),(0,r.kt)("td",{parentName:"tr",align:null},"JavaScript/TypeScript SDK designed for browser environments"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/guides/js-waku/"},"JavaScript Waku SDK"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"https://www.npmjs.com/package/@waku/react"},"@waku/react")),(0,r.kt)("td",{parentName:"tr",align:null},"React components and UI adapters designed for seamless integration with ",(0,r.kt)("inlineCode",{parentName:"td"},"@waku/sdk")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/guides/js-waku/use-waku-react"},"Build React DApps Using @waku/react"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"https://github.com/waku-org/nwaku"},"nwaku")),(0,r.kt)("td",{parentName:"tr",align:null},"Nim SDK designed for integration with native Nim applications"),(0,r.kt)("td",{parentName:"tr",align:null},"COMING SOON")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"https://github.com/waku-org/go-waku"},"go-waku")),(0,r.kt)("td",{parentName:"tr",align:null},"Golang SDK designed for integration with Golang applications, includes C bindings for usage in C/C++, C#/Unity, Swift, and Kotlin"),(0,r.kt)("td",{parentName:"tr",align:null},"COMING SOON")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"https://github.com/waku-org/waku-rust-bindings"},"waku-rust-bindings")),(0,r.kt)("td",{parentName:"tr",align:null},"Rust wrapper using ",(0,r.kt)("inlineCode",{parentName:"td"},"go-waku")," bindings designed for integration in Rust applications"),(0,r.kt)("td",{parentName:"tr",align:null},"COMING SOON")))),(0,r.kt)("h2",{id:"run-on-mobile-devices"},"Run on mobile devices"),(0,r.kt)("p",null,"Waku provides integrations tailored for mobile applications, enabling Waku to run efficiently on mobile devices."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null}),(0,r.kt)("th",{parentName:"tr",align:null},"Description"),(0,r.kt)("th",{parentName:"tr",align:null},"Documentation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Swift (iOS)"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"go-waku")," bindings for Swift applications to seamlessly integrate Waku"),(0,r.kt)("td",{parentName:"tr",align:null},"COMING SOON")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Kotlin (Android)"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"go-waku")," bindings for Kotlin applications to seamlessly integrate Waku"),(0,r.kt)("td",{parentName:"tr",align:null},"COMING SOON")))),(0,r.kt)("h2",{id:"more-integrations"},"More integrations"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null}),(0,r.kt)("th",{parentName:"tr",align:null},"Description"),(0,r.kt)("th",{parentName:"tr",align:null},"Documentation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"https://waku-org.github.io/waku-rest-api/"},"REST API")),(0,r.kt)("td",{parentName:"tr",align:null},"REST API interface provided by ",(0,r.kt)("inlineCode",{parentName:"td"},"nwaku")," and ",(0,r.kt)("inlineCode",{parentName:"td"},"go-waku")," to interact with the Waku Network"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"https://waku-org.github.io/waku-rest-api/"},"Waku Node REST API Reference"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"https://www.npmjs.com/package/@waku/create-app"},"@waku/create-app")),(0,r.kt)("td",{parentName:"tr",align:null},"Starter kit to bootstrap your next ",(0,r.kt)("inlineCode",{parentName:"td"},"@waku/sdk")," project from various example templates"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/guides/js-waku/use-waku-create-app"},"Scaffold DApps Using @waku/create-app"))))),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"Check out the ",(0,r.kt)("a",{parentName:"p",href:"https://ideas.waku.org/"},"Waku Idea Board")," for creative project ideas and explore the limitless possibilities of the Waku protocol.")))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f7974e9c.d07c54f9.js b/assets/js/f7974e9c.92d2b8a1.js similarity index 50% rename from assets/js/f7974e9c.d07c54f9.js rename to assets/js/f7974e9c.92d2b8a1.js index b7aef8f..8fa2bf4 100644 --- a/assets/js/f7974e9c.d07c54f9.js +++ b/assets/js/f7974e9c.92d2b8a1.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[5838],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>m});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var s=n.createContext({}),l=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=l(e.components);return n.createElement(s.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,s=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),u=l(r),f=o,m=u["".concat(s,".").concat(f)]||u[f]||d[f]||a;return r?n.createElement(m,i(i({ref:t},p),{},{components:r})):n.createElement(m,i({ref:t},p))}));function m(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=f;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c[u]="string"==typeof e?e:o,i[1]=c;for(var l=2;l{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>c,toc:()=>l});var n=r(87462),o=(r(67294),r(3905));const a={title:"Research",hide_table_of_contents:!0,sidebar_position:1},i=void 0,c={unversionedId:"research/index",id:"research/index",title:"Research",description:"Research and Studies: Protocol simulations and theoretical analysis to support the design of Waku protocols. The protocol definitions are on the Vac RFC website.",source:"@site/docs/research/index.md",sourceDirName:"research",slug:"/research/",permalink:"/research/",draft:!1,editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/docs/research/index.md",tags:[],version:"current",lastUpdatedAt:1708340432,formattedLastUpdatedAt:"19 Feb 2024",sidebarPosition:1,frontMatter:{title:"Research",hide_table_of_contents:!0,sidebar_position:1},sidebar:"research",next:{title:"PostgreSQL",permalink:"/research/benchmarks/postgres-adoption"}},s={},l=[],p={toc:l},u="wrapper";function d(e){let{components:t,...r}=e;return(0,o.kt)(u,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Research and Studies"),": Protocol simulations and theoretical analysis to support the design of Waku protocols. The protocol definitions are on the ",(0,o.kt)("a",{parentName:"p",href:"https://rfc.vac.dev/"},"Vac RFC")," website."),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Benchmarks"),": Results of implementations and engineering-related benchmarks for Waku clients."))}d.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[5838],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>m});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var c=n.createContext({}),l=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=l(r),f=o,m=u["".concat(c,".").concat(f)]||u[f]||d[f]||a;return r?n.createElement(m,i(i({ref:t},p),{},{components:r})):n.createElement(m,i({ref:t},p))}));function m(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=f;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[u]="string"==typeof e?e:o,i[1]=s;for(var l=2;l{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>s,toc:()=>l});var n=r(87462),o=(r(67294),r(3905));const a={title:"Research",hide_table_of_contents:!0,sidebar_position:1},i=void 0,s={unversionedId:"research/index",id:"research/index",title:"Research",description:"Research and Studies: Protocol simulations and theoretical analysis to support the design of Waku protocols. The protocol definitions are on the Waku RFCs website.",source:"@site/docs/research/index.md",sourceDirName:"research",slug:"/research/",permalink:"/research/",draft:!1,editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/docs/research/index.md",tags:[],version:"current",lastUpdatedAt:1715880135,formattedLastUpdatedAt:"16 May 2024",sidebarPosition:1,frontMatter:{title:"Research",hide_table_of_contents:!0,sidebar_position:1},sidebar:"research",next:{title:"PostgreSQL",permalink:"/research/benchmarks/postgres-adoption"}},c={},l=[],p={toc:l},u="wrapper";function d(e){let{components:t,...r}=e;return(0,o.kt)(u,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Research and Studies"),": Protocol simulations and theoretical analysis to support the design of Waku protocols. The protocol definitions are on the ",(0,o.kt)("a",{parentName:"p",href:"https://rfc.vac.dev/waku"},"Waku RFCs")," website."),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Benchmarks"),": Results of implementations and engineering-related benchmarks for Waku clients."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/fb5ea66b.59c6536a.js b/assets/js/fb5ea66b.59c6536a.js new file mode 100644 index 0000000..228f1fd --- /dev/null +++ b/assets/js/fb5ea66b.59c6536a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[5740],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),p=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},c=function(e){var t=p(e.components);return a.createElement(l.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),d=p(n),u=r,h=d["".concat(l,".").concat(u)]||d[u]||m[u]||o;return n?a.createElement(h,i(i({ref:t},c),{},{components:n})):a.createElement(h,i({ref:t},c))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=u;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[d]="string"==typeof e?e:r,i[1]=s;for(var p=2;p{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>s,toc:()=>p});var a=n(87462),r=(n(67294),n(3905));const o={title:"Protocols",hide_table_of_contents:!0},i=void 0,s={unversionedId:"learn/concepts/protocols",id:"learn/concepts/protocols",title:"Protocols",description:"Waku takes a modular approach, providing a range of protocols that enable applications to control the trade-offs involved in the Anonymity Trilemma. This flexibility empowers applications to make informed choices regarding the desired balance between anonymity, scalability, and latency. Here are the main protocols provided by Waku:",source:"@site/docs/learn/concepts/protocols.md",sourceDirName:"learn/concepts",slug:"/learn/concepts/protocols",permalink:"/learn/concepts/protocols",draft:!1,editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/docs/learn/concepts/protocols.md",tags:[],version:"current",lastUpdatedAt:1715880135,formattedLastUpdatedAt:"16 May 2024",frontMatter:{title:"Protocols",hide_table_of_contents:!0},sidebar:"learn",previous:{title:"The Waku Network",permalink:"/learn/waku-network"},next:{title:"Content Topics",permalink:"/learn/concepts/content-topics"}},l={},p=[{value:"Relay",id:"relay",level:2},{value:"RLN relay",id:"rln-relay",level:2},{value:"Filter",id:"filter",level:2},{value:"Store",id:"store",level:2},{value:"Light push",id:"light-push",level:2},{value:"Waku message",id:"waku-message",level:2}],c={toc:p},d="wrapper";function m(e){let{components:t,...n}=e;return(0,r.kt)(d,(0,a.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Waku takes a modular approach, providing a range of protocols that enable applications to control the trade-offs involved in the ",(0,r.kt)("a",{parentName:"p",href:"https://eprint.iacr.org/2017/954.pdf"},"Anonymity Trilemma"),". This flexibility empowers applications to make informed choices regarding the desired balance between anonymity, scalability, and latency. Here are the main protocols provided by Waku:"),(0,r.kt)("h2",{id:"relay"},(0,r.kt)("a",{parentName:"h2",href:"https://rfc.vac.dev/waku/standards/core/11/relay/"},"Relay")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Relay")," protocol employs a Pub/Sub architecture to facilitate the sending and receiving of messages among peers. It extends the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/README.md"},"libp2p GossipSub protocol")," to create a privacy-focused peer-to-peer messaging protocol that enables secure communication channels, encryption, and protection against censorship. It also scales the Waku Network to accommodate many nodes efficiently."),(0,r.kt)("h2",{id:"rln-relay"},(0,r.kt)("a",{parentName:"h2",href:"https://rfc.vac.dev/waku/standards/core/17/rln-relay/"},"RLN relay")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"RLN Relay")," protocol extends the ",(0,r.kt)("inlineCode",{parentName:"p"},"Relay")," protocol by using ",(0,r.kt)("a",{parentName:"p",href:"https://rfc.vac.dev/vac/32/rln-v1/"},"Rate Limit Nullifiers (RLN)")," to provide efficient and economic spam-prevention. It enforces a rate limit on messages over time for all peers in the network, economically preventing spam, and imposes financial penalties and network removal for spammers. You can find more details in the ",(0,r.kt)("a",{parentName:"p",href:"https://vac.dev/rln-relay"},"RLN Relay blog post"),"."),(0,r.kt)("h2",{id:"filter"},(0,r.kt)("a",{parentName:"h2",href:"https://rfc.vac.dev/waku/standards/core/12/filter/"},"Filter")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Filter")," protocol allows light nodes to selectively subscribe to specific messages relayed by other peers using ",(0,r.kt)("a",{parentName:"p",href:"/learn/concepts/content-topics"},"content topics"),". It is designed to be a lightweight alternative for accessing the ",(0,r.kt)("inlineCode",{parentName:"p"},"Relay")," network, particularly tailored for devices with limited bandwidth."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("inlineCode",{parentName:"p"},"Filter")," protocol helps optimise bandwidth usage, but it has fewer privacy guarantees as it must disclose the content topic to its peers to retrieve messages.")),(0,r.kt)("h2",{id:"store"},(0,r.kt)("a",{parentName:"h2",href:"https://rfc.vac.dev/waku/standards/core/13/store"},"Store")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Store")," protocol is responsible for storing messages relayed in the network, making it possible to query and retrieve them later. This functionality benefits offline peers by enabling them to retrieve missed messages upon reconnection."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Using ",(0,r.kt)("inlineCode",{parentName:"p"},"Relay")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"Filter")," protocols is recommended when a node is online, as ",(0,r.kt)("inlineCode",{parentName:"p"},"Store")," does not guarantee data availability. The ",(0,r.kt)("inlineCode",{parentName:"p"},"Store")," protocol is suitable for retrieving messages when connecting to the network, like when a DApp starts.")),(0,r.kt)("h2",{id:"light-push"},(0,r.kt)("a",{parentName:"h2",href:"https://rfc.vac.dev/waku/standards/core/19/lightpush"},"Light push")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Light Push")," is a ",(0,r.kt)("a",{parentName:"p",href:"/learn/concepts/network-domains#requestresponse-domain"},"Request/Response")," protocol for nodes with limited bandwidth and short connection windows. It allows a client to receive an acknowledgement when sending messages, indicating that at least one peer has received them. Subsequently, the remote peer forwards these messages to the ",(0,r.kt)("inlineCode",{parentName:"p"},"Relay")," network."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"While the ",(0,r.kt)("inlineCode",{parentName:"p"},"Light Push")," protocol acknowledges the receipt by the remote peer, it does not guarantee network-wide propagation.")),(0,r.kt)("h2",{id:"waku-message"},(0,r.kt)("a",{parentName:"h2",href:"https://rfc.vac.dev/waku/standards/core/14/message"},"Waku message")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Waku Message")," specifies the structure and format of messages in the Waku Network. It includes the following attributes:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"content_topic")," attribute for ",(0,r.kt)("a",{parentName:"li",href:"/learn/concepts/content-topics"},"content-based filtering"),"."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"payload")," attribute containing the message data payload to be sent."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"meta")," attribute for conveying additional details to various protocols for application-specific processing."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"timestamp")," attribute signifying the time at which the message was generated by its sender."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ephemeral")," attribute specifying whether the network should not store the message.")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/fb5ea66b.c3732c53.js b/assets/js/fb5ea66b.c3732c53.js deleted file mode 100644 index 0cf318d..0000000 --- a/assets/js/fb5ea66b.c3732c53.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[5740],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=a.createContext({}),p=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},c=function(e){var t=p(e.components);return a.createElement(s.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),d=p(n),u=r,h=d["".concat(s,".").concat(u)]||d[u]||m[u]||o;return n?a.createElement(h,i(i({ref:t},c),{},{components:n})):a.createElement(h,i({ref:t},c))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=u;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:r,i[1]=l;for(var p=2;p{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var a=n(87462),r=(n(67294),n(3905));const o={title:"Protocols",hide_table_of_contents:!0},i=void 0,l={unversionedId:"learn/concepts/protocols",id:"learn/concepts/protocols",title:"Protocols",description:"Waku takes a modular approach, providing a range of protocols that enable applications to control the trade-offs involved in the Anonymity Trilemma. This flexibility empowers applications to make informed choices regarding the desired balance between anonymity, scalability, and latency. Here are the main protocols provided by Waku:",source:"@site/docs/learn/concepts/protocols.md",sourceDirName:"learn/concepts",slug:"/learn/concepts/protocols",permalink:"/learn/concepts/protocols",draft:!1,editUrl:"https://github.com/waku-org/docs.waku.org/tree/develop/docs/learn/concepts/protocols.md",tags:[],version:"current",lastUpdatedAt:1713802766,formattedLastUpdatedAt:"22 Apr 2024",frontMatter:{title:"Protocols",hide_table_of_contents:!0},sidebar:"learn",previous:{title:"The Waku Network",permalink:"/learn/waku-network"},next:{title:"Content Topics",permalink:"/learn/concepts/content-topics"}},s={},p=[{value:"Relay",id:"relay",level:2},{value:"RLN relay",id:"rln-relay",level:2},{value:"Filter",id:"filter",level:2},{value:"Store",id:"store",level:2},{value:"Light push",id:"light-push",level:2},{value:"Waku message",id:"waku-message",level:2}],c={toc:p},d="wrapper";function m(e){let{components:t,...n}=e;return(0,r.kt)(d,(0,a.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Waku takes a modular approach, providing a range of protocols that enable applications to control the trade-offs involved in the ",(0,r.kt)("a",{parentName:"p",href:"https://eprint.iacr.org/2017/954.pdf"},"Anonymity Trilemma"),". This flexibility empowers applications to make informed choices regarding the desired balance between anonymity, scalability, and latency. Here are the main protocols provided by Waku:"),(0,r.kt)("h2",{id:"relay"},(0,r.kt)("a",{parentName:"h2",href:"https://rfc.vac.dev/spec/11/"},"Relay")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Relay")," protocol employs a Pub/Sub architecture to facilitate the sending and receiving of messages among peers. It extends the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/README.md"},"libp2p GossipSub protocol")," to create a privacy-focused peer-to-peer messaging protocol that enables secure communication channels, encryption, and protection against censorship. It also scales the Waku Network to accommodate many nodes efficiently."),(0,r.kt)("h2",{id:"rln-relay"},(0,r.kt)("a",{parentName:"h2",href:"https://rfc.vac.dev/spec/17/"},"RLN relay")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"RLN Relay")," protocol extends the ",(0,r.kt)("inlineCode",{parentName:"p"},"Relay")," protocol by using ",(0,r.kt)("a",{parentName:"p",href:"https://rfc.vac.dev/spec/32/"},"Rate Limit Nullifiers (RLN)")," to provide efficient and economic spam-prevention. It enforces a rate limit on messages over time for all peers in the network, economically preventing spam, and imposes financial penalties and network removal for spammers. You can find more details in the ",(0,r.kt)("a",{parentName:"p",href:"https://vac.dev/rln-relay"},"RLN Relay blog post"),"."),(0,r.kt)("h2",{id:"filter"},(0,r.kt)("a",{parentName:"h2",href:"https://rfc.vac.dev/spec/12/"},"Filter")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Filter")," protocol allows light nodes to selectively subscribe to specific messages relayed by other peers using ",(0,r.kt)("a",{parentName:"p",href:"/learn/concepts/content-topics"},"content topics"),". It is designed to be a lightweight alternative for accessing the ",(0,r.kt)("inlineCode",{parentName:"p"},"Relay")," network, particularly tailored for devices with limited bandwidth."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("inlineCode",{parentName:"p"},"Filter")," protocol helps optimise bandwidth usage, but it has fewer privacy guarantees as it must disclose the content topic to its peers to retrieve messages.")),(0,r.kt)("h2",{id:"store"},(0,r.kt)("a",{parentName:"h2",href:"https://rfc.vac.dev/spec/13/"},"Store")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Store")," protocol is responsible for storing messages relayed in the network, making it possible to query and retrieve them later. This functionality benefits offline peers by enabling them to retrieve missed messages upon reconnection."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Using ",(0,r.kt)("inlineCode",{parentName:"p"},"Relay")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"Filter")," protocols is recommended when a node is online, as ",(0,r.kt)("inlineCode",{parentName:"p"},"Store")," does not guarantee data availability. The ",(0,r.kt)("inlineCode",{parentName:"p"},"Store")," protocol is suitable for retrieving messages when connecting to the network, like when a DApp starts.")),(0,r.kt)("h2",{id:"light-push"},(0,r.kt)("a",{parentName:"h2",href:"https://rfc.vac.dev/spec/19/"},"Light push")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Light Push")," is a ",(0,r.kt)("a",{parentName:"p",href:"/learn/concepts/network-domains#requestresponse-domain"},"Request/Response")," protocol for nodes with limited bandwidth and short connection windows. It allows a client to receive an acknowledgement when sending messages, indicating that at least one peer has received them. Subsequently, the remote peer forwards these messages to the ",(0,r.kt)("inlineCode",{parentName:"p"},"Relay")," network."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"While the ",(0,r.kt)("inlineCode",{parentName:"p"},"Light Push")," protocol acknowledges the receipt by the remote peer, it does not guarantee network-wide propagation.")),(0,r.kt)("h2",{id:"waku-message"},(0,r.kt)("a",{parentName:"h2",href:"https://rfc.vac.dev/spec/14"},"Waku message")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Waku Message")," specifies the structure and format of messages in the Waku Network. It includes the following attributes:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"content_topic")," attribute for ",(0,r.kt)("a",{parentName:"li",href:"/learn/concepts/content-topics"},"content-based filtering"),"."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"payload")," attribute containing the message data payload to be sent."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"meta")," attribute for conveying additional details to various protocols for application-specific processing."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"timestamp")," attribute signifying the time at which the message was generated by its sender."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ephemeral")," attribute specifying whether the network should not store the message.")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/main.0266b0a1.js b/assets/js/main.0266b0a1.js new file mode 100644 index 0000000..233d1de --- /dev/null +++ b/assets/js/main.0266b0a1.js @@ -0,0 +1,14 @@ +/*! For license information please see main.0266b0a1.js.LICENSE.txt */ +(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[179],{31665:(e,t,n)=>{"use strict";Object.defineProperty(t,Symbol.toStringTag,{value:"Module"});const r=n(67294),a=n(73935),o=n(70917);function i(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e)for(const n in e)if("default"!==n){const r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:()=>e[n]})}return t.default=e,Object.freeze(t)}const l=i(r);var s=function(){function e(e){var t=this;this._insertTag=function(e){var n;n=0===t.tags.length?t.insertionPoint?t.insertionPoint.nextSibling:t.prepend?t.container.firstChild:t.before:t.tags[t.tags.length-1].nextSibling,t.container.insertBefore(e,n),t.tags.push(e)},this.isSpeedy=void 0===e.speedy||e.speedy,this.tags=[],this.ctr=0,this.nonce=e.nonce,this.key=e.key,this.container=e.container,this.prepend=e.prepend,this.insertionPoint=e.insertionPoint,this.before=null}var t=e.prototype;return t.hydrate=function(e){e.forEach(this._insertTag)},t.insert=function(e){this.ctr%(this.isSpeedy?65e3:1)==0&&this._insertTag(function(e){var t=document.createElement("style");return t.setAttribute("data-emotion",e.key),void 0!==e.nonce&&t.setAttribute("nonce",e.nonce),t.appendChild(document.createTextNode("")),t.setAttribute("data-s",""),t}(this));var t=this.tags[this.tags.length-1];if(this.isSpeedy){var n=function(e){if(e.sheet)return e.sheet;for(var t=0;t2||B(N)>3?"":" "}function V(e,t){for(;--t&&R()&&!(N<48||N>102||N>57&&N<65||N>70&&N<97););return F(e,M()+(t<6&&32==j()&&32==R()))}function q(e){for(;R();)switch(N){case e:return P;case 34:case 39:34!==e&&39!==e&&q(N);break;case 40:41===e&&q(e);break;case 92:R()}return P}function W(e,t){for(;R()&&e+N!==57&&(e+N!==84||47!==j()););return"/*"+F(t,P-1)+"*"+v(47===e?e:R())}function G(e){for(;!B(j());)R();return F(e,P)}function Z(e){return $(Q("",null,null,null,[""],e=z(e),0,[0],e))}function Q(e,t,n,r,a,o,i,l,s){for(var u=0,c=0,d=i,f=0,p=0,h=0,m=1,g=1,b=1,y=0,_="",S=a,D=o,A=r,L=_;g;)switch(h=y,y=R()){case 40:if(108!=h&&58==k(L,d-1)){-1!=x(L+=w(U(y),"&","&\f"),"&\f")&&(b=-1);break}case 34:case 39:case 91:L+=U(y);break;case 9:case 10:case 13:case 32:L+=H(h);break;case 92:L+=V(M()-1,7);continue;case 47:switch(j()){case 42:case 47:C(X(W(R(),M()),t,n),s);break;default:L+="/"}break;case 123*m:l[u++]=E(L)*b;case 125*m:case 59:case 0:switch(y){case 0:case 125:g=0;case 59+c:p>0&&E(L)-d&&C(p>32?K(L+";",r,n,d-1):K(w(L," ","")+";",r,n,d-2),s);break;case 59:L+=";";default:if(C(A=Y(L,t,n,u,c,a,l,_,S=[],D=[],d),o),123===y)if(0===c)Q(L,t,A,A,S,o,d,l,D);else switch(99===f&&110===k(L,3)?100:f){case 100:case 109:case 115:Q(e,A,A,r&&C(Y(e,A,A,0,0,a,l,_,a,S=[],d),D),a,D,d,l,r?S:D);break;default:Q(L,A,A,A,[""],D,0,l,D)}}u=c=p=0,m=b=1,_=L="",d=i;break;case 58:d=1+E(L),p=h;default:if(m<1)if(123==y)--m;else if(125==y&&0==m++&&125==(N=P>0?k(I,--P):0,O--,10===N&&(O=1,T--),N))continue;switch(L+=v(y),y*m){case 38:b=c>0?1:(L+="\f",-1);break;case 44:l[u++]=(E(L)-1)*b,b=1;break;case 64:45===j()&&(L+=U(R())),f=j(),c=d=E(_=L+=G(M())),y++;break;case 45:45===h&&2==E(L)&&(m=0)}}return o}function Y(e,t,n,r,a,o,i,l,s,u,c){for(var d=a-1,f=0===a?o:[""],h=S(f),m=0,v=0,b=0;m0?f[x]+" "+k:w(k,/&\f/g,f[x])))&&(s[b++]=E);return A(e,t,n,0===a?p:l,s,u,c)}function X(e,t,n){return A(e,t,n,f,v(N),_(e,2,-2),0)}function K(e,t,n,r){return A(e,t,n,h,_(e,0,r),_(e,r+1,-1),r)}function J(e,t){for(var n="",r=S(e),a=0;a6)switch(k(e,t+1)){case 109:if(45!==k(e,t+4))break;case 102:return w(e,/(.+:)(.+)-([^]+)/,"$1"+d+"$2-$3$1"+c+(108==k(e,t+3)?"$3":"$2-$3"))+e;case 115:return~x(e,"stretch")?le(w(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(115!==k(e,t+1))break;case 6444:switch(k(e,E(e)-3-(~x(e,"!important")&&10))){case 107:return w(e,":",":"+d)+e;case 101:return w(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+d+(45===k(e,14)?"inline-":"")+"box$3$1"+d+"$2$3$1"+u+"$2box$3")+e}break;case 5936:switch(k(e,t+11)){case 114:return d+e+u+w(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return d+e+u+w(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return d+e+u+w(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return d+e+u+e+e}return e}var se,ue=[function(e,t,n,r){if(e.length>-1&&!e.return)switch(e.type){case h:e.return=le(e.value,e.length);break;case m:return J([L(e,{value:w(e.value,"@","@"+d)})],r);case p:if(e.length)return function(e,t){return e.map(t).join("")}(e.props,(function(t){switch(function(e,t){return(e=t.exec(e))?e[0]:e}(t,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return J([L(e,{props:[w(t,/:(read-\w+)/,":"+c+"$1")]})],r);case"::placeholder":return J([L(e,{props:[w(t,/:(plac\w+)/,":"+d+"input-$1")]}),L(e,{props:[w(t,/:(plac\w+)/,":"+c+"$1")]}),L(e,{props:[w(t,/:(plac\w+)/,u+"input-$1")]})],r)}return""}))}}],ce=function(e){var t=e.key;if("css"===t){var n=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(n,(function(e){-1!==e.getAttribute("data-emotion").indexOf(" ")&&(document.head.appendChild(e),e.setAttribute("data-s",""))}))}var r=e.stylisPlugins||ue;var a,o,i={},l=[];a=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+t+' "]'),(function(e){for(var t=e.getAttribute("data-emotion").split(" "),n=1;n=4;++r,a-=4)t=1540483477*(65535&(t=255&e.charCodeAt(r)|(255&e.charCodeAt(++r))<<8|(255&e.charCodeAt(++r))<<16|(255&e.charCodeAt(++r))<<24))+(59797*(t>>>16)<<16),n=1540483477*(65535&(t^=t>>>24))+(59797*(t>>>16)<<16)^1540483477*(65535&n)+(59797*(n>>>16)<<16);switch(a){case 3:n^=(255&e.charCodeAt(r+2))<<16;case 2:n^=(255&e.charCodeAt(r+1))<<8;case 1:n=1540483477*(65535&(n^=255&e.charCodeAt(r)))+(59797*(n>>>16)<<16)}return(((n=1540483477*(65535&(n^=n>>>13))+(59797*(n>>>16)<<16))^n>>>15)>>>0).toString(36)}(a)+s,styles:a,next:Se}}(i,void 0,r.useContext(Ne));l+=t.key+"-"+s.name;var u={};for(var c in e)Oe.call(e,c)&&"css"!==c&&c!==Ie&&(u[c]=e[c]);return u.ref=n,u.className=l,r.createElement(r.Fragment,null,r.createElement(Le,{cache:t,serialized:s,isStringTag:"string"==typeof o}),r.createElement(o,u))}));var je,Me,Fe,Be={},ze={};function $e(){if(Me)return je;Me=1;var e=Object.getOwnPropertySymbols,t=Object.prototype.hasOwnProperty,n=Object.prototype.propertyIsEnumerable;return je=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(a){return!1}}()?Object.assign:function(r,a){for(var o,i,l=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(r),s=1;s{const[t,n]=r.useState(e.value??e.defaultValue),a=void 0===e.value,o=void 0!==t&&("string"==typeof t?t.length>0:t.toString().length>0);return r.useEffect((()=>{!a&&n(e.value)}),[a,e.value]),{value:t,filled:o,onChange:t=>{if(a){const e=t.target.type,r=t.target["checkbox"===e||"radio"===e?"checked":"value"];n(r)}e.onChange&&e.onChange(t)},setValue:t=>{var n,r,a,o;const i=(null==(n=null==e?void 0:e.ref)?void 0:n.current)??("function"==typeof e.getInput&&e.getInput());if(!i)return;const l=new Event("input",{bubbles:!0});null==(o=null==(a=null==(r=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"value"))?void 0:r.set)?void 0:a.call)||o.call(a,i,t),i.dispatchEvent(l)}}};var Xe=function(e,t){for(var n=-1,r=null==e?0:e.length,a=Array(r);++n-1},dt=function(e,t){var n=this.__data__,r=it(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this};function ft(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t-1&&e%1==0&&e-1&&e%1==0&&e<=9007199254740991},_r=Lt,Er=kr,Sr=sr,Cr={};Cr["[object Float32Array]"]=Cr["[object Float64Array]"]=Cr["[object Int8Array]"]=Cr["[object Int16Array]"]=Cr["[object Int32Array]"]=Cr["[object Uint8Array]"]=Cr["[object Uint8ClampedArray]"]=Cr["[object Uint16Array]"]=Cr["[object Uint32Array]"]=!0,Cr["[object Arguments]"]=Cr["[object Array]"]=Cr["[object ArrayBuffer]"]=Cr["[object Boolean]"]=Cr["[object DataView]"]=Cr["[object Date]"]=Cr["[object Error]"]=Cr["[object Function]"]=Cr["[object Map]"]=Cr["[object Number]"]=Cr["[object Object]"]=Cr["[object RegExp]"]=Cr["[object Set]"]=Cr["[object String]"]=Cr["[object WeakMap]"]=!1;var Tr=function(e){return Sr(e)&&Er(e.length)&&!!Cr[_r(e)]};var Or=function(e){return function(t){return e(t)}},Dr={};!function(e,t){var n=yt,r=t&&!t.nodeType&&t,a=r&&e&&!e.nodeType&&e,o=a&&a.exports===r&&n.process,i=function(){try{var e=a&&a.require&&a.require("util").types;return e||o&&o.binding&&o.binding("util")}catch(t){}}();e.exports=i}({get exports(){return Dr},set exports(e){Dr=e}},Dr);var Pr=Tr,Nr=Or,Ir=Dr&&Dr.isTypedArray,Ar=Ir?Nr(Ir):Pr,Lr=lr,Rr=gr,jr=vr,Mr=br,Fr=xr,Br=Ar,zr=Object.prototype.hasOwnProperty;var $r=function(e,t){var n=jr(e),r=!n&&Rr(e),a=!n&&!r&&Mr(e),o=!n&&!r&&!a&&Br(e),i=n||r||a||o,l=i?Lr(e.length,String):[],s=l.length;for(var u in e)!t&&!zr.call(e,u)||i&&("length"==u||a&&("offset"==u||"parent"==u)||o&&("buffer"==u||"byteLength"==u||"byteOffset"==u)||Fr(u,s))||l.push(u);return l},Ur=Object.prototype;var Hr=function(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||Ur)};var Vr=function(e,t){return function(n){return e(t(n))}},qr=Vr(Object.keys,Object),Wr=Hr,Gr=qr,Zr=Object.prototype.hasOwnProperty;var Qr=Bt,Yr=kr;var Xr=function(e){return null!=e&&Yr(e.length)&&!Qr(e)},Kr=$r,Jr=function(e){if(!Wr(e))return Gr(e);var t=[];for(var n in Object(e))Zr.call(e,n)&&"constructor"!=n&&t.push(n);return t},ea=Xr;var ta=function(e){return ea(e)?Kr(e):Jr(e)},na=ir,ra=ta;var aa=function(e,t){return e&&na(t,ra(t),e)};var oa=Rt,ia=Hr,la=function(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t},sa=Object.prototype.hasOwnProperty;var ua=$r,ca=function(e){if(!oa(e))return la(e);var t=ia(e),n=[];for(var r in e)("constructor"!=r||!t&&sa.call(e,r))&&n.push(r);return n},da=Xr;var fa=function(e){return da(e)?ua(e,!0):ca(e)},pa=ir,ha=fa;var ma=function(e,t){return e&&pa(t,ha(t),e)},ga={};!function(e,t){var n=kt,r=t&&!t.nodeType&&t,a=r&&e&&!e.nodeType&&e,o=a&&a.exports===r?n.Buffer:void 0,i=o?o.allocUnsafe:void 0;e.exports=function(e,t){if(t)return e.slice();var n=e.length,r=i?i(n):new e.constructor(n);return e.copy(r),r}}({get exports(){return ga},set exports(e){ga=e}},ga);var va=function(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++na?0:a+t),(n=n>a?a:n)<0&&(n+=a),a=t>n?0:n-t>>>0,t>>>=0;for(var o=Array(a);++r0&&r(s)?n>1?e(s,n-1,r,a,o):wl(o,s):a||(o[o.length]=s)}return o},_l=kl;var El=function(e){return(null==e?0:e.length)?_l(e,1):[]};var Sl=function(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)},Cl=Math.max;var Tl=function(e,t,n){return t=Cl(void 0===t?e.length-1:t,0),function(){for(var r=arguments,a=-1,o=Cl(r.length-t,0),i=Array(o);++a0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}(Pl),Al=El,Ll=Tl,Rl=Il;var jl=function(e){return Rl(Ll(e,void 0,Al),e+"")},Ml=Xe,Fl=xi,Bl=il,zl=Zi,$l=ir,Ul=gl,Hl=Ga,Vl=jl((function(e,t){var n={};if(null==e)return n;var r=!1;t=Ml(t,(function(t){return t=zl(t,e),r||(r=t.length>1),t})),$l(e,Hl(e),n),r&&(n=Fl(n,7,Ul));for(var a=t.length;a--;)Bl(n,t[a]);return n})),ql=rr,Wl=Zi,Gl=xr,Zl=Rt,Ql=Yi;var Yl=Ji,Xl=function(e,t,n,r){if(!Zl(e))return e;for(var a=-1,o=(t=Wl(t,e)).length,i=o-1,l=e;null!=l&&++aObject.fromEntries((Array.isArray(e)?e:Object.keys(e)).map(((e,n)=>[e,t(e,n)]))),fs=["xs","sm","md","lg","xl"],ps=["display1","display2","display3","display4","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","subtitle3","subtitle4","body1","body2","body3","label1","label2"],hs={h1:["h1"],h2:["h2"],h3:["h3"],h4:["h4"],h5:["h5"],h6:["h6"],body1:["body"],label1:["label"]},ms=["fontSize","fontWeight","lineHeight"],gs={...ds(ps,(e=>`lsd-typography--${e}`)),root:"lsd-typography",primary:"lsd-typography--primary",secondary:"lsd-typography--secondary",serif:"lsd-typography--serif",sansSerif:"lsd-typography--sans-serif",monospace:"lsd-typography--monospace"},vs=["genericFontFamily"],bs=({genericFontFamily:e})=>({className:Qe("serif"===e&&gs.serif,"monospace"===e&&gs.monospace,"sans-serif"===e&&gs.sansSerif)}),ys=e=>cs(e,vs),ws=e=>Vl(e,vs),xs={root:"lsd-icon",small:"lsd-icon--small",filled:"lsd-icon--filled",stroked:"lsd-icon--stroked",primary:"lsd-icon--primary",secondary:"lsd-icon--secondary"},ks=(e,t)=>{const n=({color:n,size:r="small",className:a,...o})=>{const i=bs(o);return We(e,{className:Qe(i.className,a,xs.root,xs[r],n&&xs[n],(null==t?void 0:t.filled)&&xs.filled,(null==t?void 0:t.stroked)&&xs.stroked),...ws(o)})};return n.displayName=e.displayName,n.classes=xs,n},_s=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{d:"M11.6666 7.58334H7.58325V11.6667H6.41659V7.58334H2.33325V6.41668H6.41659V2.33334H7.58325V6.41668H11.6666V7.58334Z",fill:"black"})})),{filled:!0}),Es=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{d:"M10.5 5.66125L9.6775 4.83875L7 7.51041L4.3225 4.83874L3.5 5.66125L7 9.16125L10.5 5.66125Z",fill:"black"})})),{filled:!0}),Ss=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{d:"M6.99992 2.33334L6.17742 3.15584L9.43242 6.41668H2.33325V7.58334H9.43242L6.17742 10.8442L6.99992 11.6667L11.6666 7.00001L6.99992 2.33334Z",fill:"black"})})),{filled:!0}),Cs=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{d:"M3.5 8.33875L4.3225 9.16125L7 6.48959L9.6775 9.16125L10.5 8.33875L7 4.83875L3.5 8.33875Z",fill:"black"})})),{filled:!0}),Ts=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M2.91667 1.75H11.0833C11.725 1.75 12.25 2.275 12.25 2.91667V11.0833C12.25 11.725 11.725 12.25 11.0833 12.25H2.91667C2.275 12.25 1.75 11.725 1.75 11.0833V2.91667C1.75 2.275 2.275 1.75 2.91667 1.75ZM9.68333 4.43333L10.5 5.25L5.83333 9.91667L3.5 7.58333L4.31667 6.76667L5.83333 8.28333L9.68333 4.43333Z",fill:"black"})})),{filled:!0}),Os=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{d:"M11.0833 2.91667V11.0833H2.91667V2.91667H11.0833ZM11.0833 1.75H2.91667C2.275 1.75 1.75 2.275 1.75 2.91667V11.0833C1.75 11.725 2.275 12.25 2.91667 12.25H11.0833C11.725 12.25 12.25 11.725 12.25 11.0833V2.91667C12.25 2.275 11.725 1.75 11.0833 1.75Z",fill:"black"})})),{filled:!0}),Ds=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{d:"M5.25009 9.43247L2.81759 6.99997L1.98926 7.82247L5.25009 11.0833L12.2501 4.0833L11.4276 3.2608L5.25009 9.43247Z",fill:"black"})})),{filled:!0}),Ps=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{d:"M11.0834 3.73916L10.2609 2.91666L7.00008 6.17749L3.73925 2.91666L2.91675 3.73916L6.17758 6.99999L2.91675 10.2608L3.73925 11.0833L7.00008 7.82249L10.2609 11.0833L11.0834 10.2608L7.82258 6.99999L11.0834 3.73916Z",fill:"black"})})),{filled:!0}),Ns=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M7.00008 1.16666C3.78008 1.16666 1.16675 3.77999 1.16675 6.99999C1.16675 10.22 3.78008 12.8333 7.00008 12.8333C10.2201 12.8333 12.8334 10.22 12.8334 6.99999C12.8334 3.77999 10.2201 1.16666 7.00008 1.16666ZM6.41675 9.91666V8.74999H7.58342V9.91666H6.41675ZM6.41675 4.08332V7.58332H7.58342V4.08332H6.41675Z",fill:"black"})})),{filled:!0}),Is=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{d:"M5.34925 3.50001L6.51591 4.66668H11.6667V10.5H2.33341V3.50001H5.34925ZM5.83341 2.33334H2.33341C1.69175 2.33334 1.17258 2.85834 1.17258 3.50001L1.16675 10.5C1.16675 11.1417 1.69175 11.6667 2.33341 11.6667H11.6667C12.3084 11.6667 12.8334 11.1417 12.8334 10.5V4.66668C12.8334 4.02501 12.3084 3.50001 11.6667 3.50001H7.00008L5.83341 2.33334Z",fill:"black"})})),{filled:!0}),As=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{d:"M11.0833 4.08333V6.41667H3.98417L6.0725 4.3225L5.25 3.5L1.75 7L5.25 10.5L6.0725 9.6775L3.98417 7.58333H12.25V4.08333H11.0833Z",fill:"black"})})),{filled:!0}),Ls=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M1.75 4.66667V3.5H12.25V4.66667H1.75ZM1.75 7.58333H12.25V6.41667H1.75V7.58333ZM1.75 10.5H12.25V9.33333H1.75V10.5Z",fill:"black"})})),{filled:!0}),Rs=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M3.49992 5.83334C2.85825 5.83334 2.33325 6.35834 2.33325 7.00001C2.33325 7.64168 2.85825 8.16668 3.49992 8.16668C4.14159 8.16668 4.66659 7.64168 4.66659 7.00001C4.66659 6.35834 4.14159 5.83334 3.49992 5.83334ZM10.4999 5.83334C9.85825 5.83334 9.33325 6.35834 9.33325 7.00001C9.33325 7.64168 9.85825 8.16668 10.4999 8.16668C11.1416 8.16668 11.6666 7.64168 11.6666 7.00001C11.6666 6.35834 11.1416 5.83334 10.4999 5.83334ZM5.83325 7.00001C5.83325 6.35834 6.35825 5.83334 6.99992 5.83334C7.64159 5.83334 8.16659 6.35834 8.16659 7.00001C8.16659 7.64168 7.64159 8.16668 6.99992 8.16668C6.35825 8.16668 5.83325 7.64168 5.83325 7.00001Z",fill:"black"})})),{filled:!0}),js=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{d:"M9.16137 4.3225L8.33887 3.5L4.83887 7L8.33887 10.5L9.16137 9.6775L6.4897 7L9.16137 4.3225Z",fill:"black"})})),{filled:!0}),Ms=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{d:"M5.66137 3.5L4.83887 4.3225L7.51053 7L4.83887 9.6775L5.66137 10.5L9.16137 7L5.66137 3.5Z",fill:"black"})})),{filled:!0}),Fs=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M8.61 7.74083L11.9525 11.0833L11.0833 11.9525L7.74083 8.61C7.11667 9.05917 6.36417 9.33333 5.54167 9.33333C3.4475 9.33333 1.75 7.63583 1.75 5.54167C1.75 3.4475 3.4475 1.75 5.54167 1.75C7.63583 1.75 9.33333 3.4475 9.33333 5.54167C9.33333 6.36417 9.05917 7.11667 8.61 7.74083ZM5.54167 2.91667C4.08917 2.91667 2.91667 4.08917 2.91667 5.54167C2.91667 6.99417 4.08917 8.16667 5.54167 8.16667C6.99417 8.16667 8.16667 6.99417 8.16667 5.54167C8.16667 4.08917 6.99417 2.91667 5.54167 2.91667Z",fill:"black"})})),{filled:!0}),Bs=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M9.79287 3.5H2.99998V2.5H11.5V11H10.5V4.20711L3.35353 11.3536L2.64642 10.6464L9.79287 3.5Z",fill:"black"})})),{filled:!0}),zs=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{d:"M7.0013 1.16669C3.7813 1.16669 1.16797 3.78002 1.16797 7.00002C1.16797 10.22 3.7813 12.8334 7.0013 12.8334C10.2213 12.8334 12.8346 10.22 12.8346 7.00002C12.8346 3.78002 10.2213 1.16669 7.0013 1.16669ZM7.0013 11.6667C4.42297 11.6667 2.33464 9.57835 2.33464 7.00002C2.33464 4.42169 4.42297 2.33335 7.0013 2.33335C9.57964 2.33335 11.668 4.42169 11.668 7.00002C11.668 9.57835 9.57964 11.6667 7.0013 11.6667Z",fill:"black"})})),{filled:!0}),$s=ks((e=>Ge("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:[We("path",{d:"M7.0013 1.16669C3.7813 1.16669 1.16797 3.78002 1.16797 7.00002C1.16797 10.22 3.7813 12.8334 7.0013 12.8334C10.2213 12.8334 12.8346 10.22 12.8346 7.00002C12.8346 3.78002 10.2213 1.16669 7.0013 1.16669ZM7.0013 11.6667C4.42297 11.6667 2.33464 9.57835 2.33464 7.00002C2.33464 4.42169 4.42297 2.33335 7.0013 2.33335C9.57964 2.33335 11.668 4.42169 11.668 7.00002C11.668 9.57835 9.57964 11.6667 7.0013 11.6667Z",fill:"black"}),We("path",{d:"M7.0013 9.91669C8.61213 9.91669 9.91797 8.61085 9.91797 7.00002C9.91797 5.38919 8.61213 4.08335 7.0013 4.08335C5.39047 4.08335 4.08464 5.38919 4.08464 7.00002C4.08464 8.61085 5.39047 9.91669 7.0013 9.91669Z",fill:"black"})]})),{filled:!0}),Us=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M11.0833 2.33332H10.5V1.16666H9.33333V2.33332H4.66667V1.16666H3.5V2.33332H2.91667C2.26917 2.33332 1.75 2.85832 1.75 3.49999V11.6667C1.75 12.3083 2.26917 12.8333 2.91667 12.8333H11.0833C11.725 12.8333 12.25 12.3083 12.25 11.6667V3.49999C12.25 2.85832 11.725 2.33332 11.0833 2.33332ZM11.0833 11.6667H2.91667V5.24999H11.0833V11.6667ZM3.79167 7.58332C3.79167 6.77832 4.445 6.12499 5.25 6.12499C6.055 6.12499 6.70833 6.77832 6.70833 7.58332C6.70833 8.38832 6.055 9.04166 5.25 9.04166C4.445 9.04166 3.79167 8.38832 3.79167 7.58332Z",fill:"black"})})),{filled:!0}),Hs=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{d:"M2.32812 7.58329V6.41663H11.6581V7.58329H2.32812Z",fill:"black"})})),{filled:!0}),Vs=({color:e,variant:t="body1",component:n,className:r,children:a,...o})=>{const i=bs(o);return We(n??{h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",label1:"label",label2:"label"}[t]??"span",{className:Qe(i.className,gs.root,gs[t],e&&gs[e],r),...ws(o),children:a})};Vs.classes=gs;const qs={root:"lsd-dropdown-item",icon:"lsd-dropdown-item__icon",label:"lsd-dropdown-item__label",error:"lsd-dropdown-item--error",disabled:"lsd-dropdown-item--disabled",selected:"lsd-dropdown-item--selected",withIcon:"lsd-dropdown-item--with-icon",small:"lsd-dropdown-item--small",medium:"lsd-dropdown-item--medium",large:"lsd-dropdown-item--large"},Ws=({label:e,size:t="large",withIcon:n,selected:r,disabled:a,className:o,...i})=>{const l=bs(i),s={color:"primary",className:qs.icon};return Ge("div",{role:"option","aria-selected":r?"true":"false",...ws(i),className:Qe(l.className,o,qs.root,qs[t],n&&qs.withIcon,a&&qs.disabled),children:[n&&We(r?Ts:Os,{...s}),We(Vs,{variant:"large"===t?"label1":"label2",component:"span",className:qs.label,children:e})]})};function Gs(e){for(var t=[],n=1;n{const[n,a]=r.useState({});return r.useEffect((()=>{const{width:t,height:n,top:r,left:o}=e.current.getBoundingClientRect();a({left:o+window.scrollX,width:t,top:r+n+window.scrollY})}),[t]),n},ru=({size:e="large",open:t,label:n,handleRef:a,onClose:o,children:i,...l})=>{const s=bs(l),u=r.useRef(null);Ys(u,(e=>{t&&!e.composedPath().includes(a.current)&&o&&o()}));const c=nu(a,t);return We("ul",{...ws(l),ref:u,role:"listbox","aria-label":n,style:{...c,...l.style??{}},className:Qe(s.className,l.className,tu.root,tu[e],t&&tu.open),children:i})};ru.classes=tu;const au=r.createContext({initialized:!1}),ou=()=>{var e;return(null==(e=r.useContext(au))?void 0:e.initialized)??!1},iu=({parentId:e})=>{const t=r.useRef();return"undefined"==typeof window||t.current||(t.current=document.createElement("div")),r.useEffect((()=>{var n;if("undefined"==typeof window||!t.current)return;const r=document.querySelectorAll(`#${e}`);return null==(n=r[r.length-1])||n.appendChild(t.current),()=>{var n;try{null==(n=document.getElementById(e))||n.removeChild(t.current)}catch(r){}}}),[e,t.current]),t.current},lu=({id:e,children:t})=>ou()?We(su,{id:e,children:t}):We(qe,{}),su=({id:e,children:t})=>{const n=iu({parentId:"lsd-presentation"});return n?a.createPortal(t,n,e):We(qe,{})},uu={root:"lsd-autocomplete",label:"lsd-autocomplete__label",inputContainer:"lsd-autocomplete__input-container",input:"lsd-autocomplete__input",icon:"lsd-autocomplete__icon",dropdownItemPlaceholder:"lsd-autocomplete__dropdown-item-placeholder",disabled:"lsd-autocomplete--disabled",error:"lsd-autocomplete--error",large:"lsd-autocomplete--large",medium:"lsd-autocomplete--medium",small:"lsd-autocomplete--small",withIcon:"lsd-autocomplete--with-icon",outlined:"lsd-autocomplete--outlined",underlined:"lsd-autocomplete--underlined"},cu=({label:e,size:t="large",withIcon:n=!1,error:a=!1,disabled:o=!1,children:i,value:l,defaultValue:s,placeholder:u,onChange:c,options:d=[],inputProps:f={},variant:p="outlined",...h})=>{const m=bs(h),g=r.useRef(null),v=r.useRef(null),b=Ye({defaultValue:s,value:l,onChange:c,ref:g}),y=b.value,[w,x]=r.useState(!1),[k,_]=r.useState(),E=e=>{x(!1),_(e),b.setValue(e)},S=r.useMemo((()=>b.filled?d.filter((e=>new RegExp(`^${b.value}.+`,"i").test(e))).map((e=>[e,e.slice(0,y.length),e.slice(y.length)])):d),[b.value,d]);r.useEffect((()=>{!k&&b.filled&&!w&&x(!0)}),[b.value,k,w]);const C=!o&&w&&S.length>0&&b.filled,T=(null==f?void 0:f.id)??(h.id||"autocomplete")+"-input";return Ge("div",{ref:v,...ws(h),className:Qe(h.className,m.className,uu.root,uu[t],o&&uu.disabled,n&&uu.withIcon,"outlined"===p?uu.outlined:uu.underlined),children:[e&&We(Vs,{htmlFor:T,className:uu.label,variant:"label2",component:"label",children:e}),Ge("div",{className:uu.inputContainer,children:[We("input",{id:T,ref:g,value:b.value,placeholder:u,onChange:b.onChange,disabled:o,onFocus:()=>x(!0),...f,className:Qe(f.className,uu.input,a&&uu.error)}),n&&b.value?We("span",{className:uu.icon,onClick:()=>b.setValue(""),children:We(Ps,{color:"primary"})}):n&&!b.value?We("span",{className:uu.icon,children:We(Fs,{color:"primary"})}):null]}),We(lu,{id:"autocomplete",children:We(ru,{handleRef:v,open:C,onClose:()=>x(!1),size:t,...ys(h),children:S.map(((e,n)=>We(Ws,{size:t,tabIndex:0,label:Ge(qe,{children:[e[1],We("span",{className:uu.dropdownItemPlaceholder,children:e[2]})]}),onClick:()=>E(e[0]),onKeyDown:t=>"Enter"===t.key&&E(e[0])},n)))})})]})};cu.classes=uu;const du={root:"lsd-badge",label:"lsd-badge__label",outlined:"lsd-badge--outlined",filled:"lsd-badge--filled",disabled:"lsd-badge--disabled",small:"lsd-badge--small",large:"lsd-badge--large"},fu=({variant:e="outlined",disabled:t,size:n="large",icon:r,iconDirection:a="left",children:o,...i})=>{const l=bs(i);return Ge("div",{"aria-label":o,...ws(i),className:Qe(i.className,l.className,du.root,du[e],t&&du.disabled,du[n]),children:["left"===a&&r,We(Vs,{component:"span",variant:"small"===n?"label2":"label1",className:du.label,children:o}),"right"===a&&r]})};fu.classes=du;const pu={root:"lsd-breadcrumb-item",outlined:"lsd-breadcrumb-item--outlined",itemLink:"lsd-breadcrumb-item__link",large:"lsd-breadcrumb-item--large",small:"lsd-breadcrumb-item--small"},hu=({size:e="large",label:t,link:n,linkComponent:r=(e=>We("a",{...e,children:e.children})),outlined:a,selected:o,ellipsisRef:i,onClick:l,className:s,...u})=>{const c=bs(u);return We("li",{...ws(u),className:Qe(c.className,pu.root,pu[e],s),"aria-selected":o?"true":"false",onClick:l,ref:i,children:We(r,{href:n,className:Qe(pu.itemLink,a&&pu.outlined),children:We(Vs,{color:"primary",component:"span",variant:"large"===e?"label1":"label2",children:t})})})};hu.classes=pu;const mu={root:"lsd-breadcrumb",list:"lsd-breadcrumb__list",listBox:"lsd-breadcrumb__dropdown-menu",open:"lsd-breadcrumb--open",disabled:"lsd-breadcrumb--disabled"},gu=({size:e="large",disabled:t=!1,ellipsis:n=!1,maxItems:a,value:o=[],onChange:i,options:l=[],...s})=>{const u=bs(s),c=r.useRef(null),[d,f]=r.useState(!1);a=Math.max(2,Math.min(a||2,l.length));const[p,...h]=l,[m,g]=n?[h.slice(0,h.length-a+1),h.slice(h.length-a+1)]:[[],h],v=t=>t.map(((t,n)=>We(hu,{outlined:n===g.length-1&&t!==p,label:t.value,link:t.link,linkComponent:null==t?void 0:t.linkComponent,size:e},n)));return r.useEffect((()=>{t&&d&&f(!1)}),[d,t]),Ge("div",{...ws(s),className:Qe(s.className,u.className,mu.root,t&&mu.disabled,d&&mu.open),children:[Ge("ul",{className:mu.list,children:[p&&v([p]),m.length>0&&We(hu,{ellipsisRef:c,label:"...",onClick:()=>{!t&&f((e=>!e))},size:e,...ys(s)}),v(g)]}),null!=(null==c?void 0:c.current)&&n&&a&&We(lu,{id:"breadcrumb",children:We(ru,{handleRef:c,open:d,onClose:()=>f(!1),className:Qe(mu.listBox),size:e,genericFontFamily:s.genericFontFamily,...ys(s),children:m.map(((e,t)=>We(hu,{label:e.value,link:e.link,className:pu.itemLink,linkComponent:null==e?void 0:e.linkComponent},t)))})})]})};gu.classes=mu;const vu=r.createContext(null),bu={root:"lsd-button",disabled:"lsd-button--disabled",large:"lsd-button--large",medium:"lsd-button--medium",small:"lsd-button--small",withIcon:"lsd-button--with-icon",outlined:"lsd-button--outlined",filled:"lsd-button--filled",text:"lsd-button__text",icon:"lsd-button__icon"},yu=({size:e,variant:t,disabled:n,icon:a,children:o,...i})=>{const l=r.useContext(vu),s=bs(i),u=bs(l||{}),c=s.className||u.className,d=e??(null==l?void 0:l.size)??"medium",f=t??(null==l?void 0:l.variant)??"outlined",p=n??(null==l?void 0:l.disabled)??!1;return We(qe,{children:Ge("button",{...ws(i),className:Qe(c,i.className,bu.root,bu[d],bu[f],p&&bu.disabled,a&&bu.withIcon),children:[We(Vs,{component:"span",className:bu.text,variant:"small"===d?"label2":"label1",children:o}),a&&We("span",{className:bu.icon,children:a})]})})};yu.classes=bu;const wu={root:"lsd-button-group",outlined:"lsd-button-group--outlined",filled:"lsd-button-group--filled",disabled:"lsd-button-group--disabled",small:"lsd-button-group--small",medium:"lsd-button-group--medium",large:"lsd-button-group--large"},xu=({size:e="large",disabled:t,variant:n="outlined",children:r,...a})=>{const o=bs(a);return We("div",{...ws(a),className:Qe(o.className,a.className,wu.root,wu[e],wu[n],t&&wu.disabled),children:We(vu.Provider,{value:{size:e,variant:n,disabled:t},children:r})})};xu.classes=wu;var ku={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}};function _u(e){return function(t){var n=t||{},r=n.width?String(n.width):e.defaultWidth;return e.formats[r]||e.formats[e.defaultWidth]}}var Eu={date:_u({formats:{full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},defaultWidth:"full"}),time:_u({formats:{full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},defaultWidth:"full"}),dateTime:_u({formats:{full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},Su={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"};function Cu(e){return function(t,n){var r,a=n||{};if("formatting"===(a.context?String(a.context):"standalone")&&e.formattingValues){var o=e.defaultFormattingWidth||e.defaultWidth,i=a.width?String(a.width):o;r=e.formattingValues[i]||e.formattingValues[o]}else{var l=e.defaultWidth,s=a.width?String(a.width):e.defaultWidth;r=e.values[s]||e.values[l]}return r[e.argumentCallback?e.argumentCallback(t):t]}}function Tu(e){return function(t,n){var r=String(t),a=n||{},o=a.width,i=o&&e.matchPatterns[o]||e.matchPatterns[e.defaultMatchWidth],l=r.match(i);if(!l)return null;var s,u=l[0],c=o&&e.parsePatterns[o]||e.parsePatterns[e.defaultParseWidth];return s="[object Array]"===Object.prototype.toString.call(c)?function(e,t){for(var n=0;n0?"in "+r:r+" ago":r},formatLong:Eu,formatRelative:function(e,t,n,r){return Su[e]},localize:{ordinalNumber:function(e,t){var n=Number(e),r=n%100;if(r>20||r<10)switch(r%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},era:Cu({values:{narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},defaultWidth:"wide"}),quarter:Cu({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:Cu({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},defaultWidth:"wide"}),day:Cu({values:{narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},defaultWidth:"wide"}),dayPeriod:Cu({values:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:(Ou={matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:function(e){return parseInt(e,10)}},function(e,t){var n=String(e),r=t||{},a=n.match(Ou.matchPattern);if(!a)return null;var o=a[0],i=n.match(Ou.parsePattern);if(!i)return null;var l=Ou.valueCallback?Ou.valueCallback(i[0]):i[0];return{value:l=r.valueCallback?r.valueCallback(l):l,rest:n.slice(o.length)}}),era:Tu({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:"any"}),quarter:Tu({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:Tu({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:Tu({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:Tu({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:"any"})},options:{weekStartsOn:0,firstWeekContainsDate:1}};function Pu(e){if(null===e||!0===e||!1===e)return NaN;var t=Number(e);return isNaN(t)?t:t<0?Math.ceil(t):Math.floor(t)}function Nu(e,t){if(t.length1?"s":"")+" required, but only "+t.length+" present")}function Iu(e){Nu(1,arguments);var t=Object.prototype.toString.call(e);return e instanceof Date||"object"==typeof e&&"[object Date]"===t?new Date(e.getTime()):"number"==typeof e||"[object Number]"===t?new Date(e):("string"!=typeof e&&"[object String]"!==t||"undefined"==typeof console||(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule"),console.warn((new Error).stack)),new Date(NaN))}function Au(e,t){return Nu(2,arguments),function(e,t){Nu(2,arguments);var n=Iu(e).getTime(),r=Pu(t);return new Date(n+r)}(e,-Pu(t))}function Lu(e,t){switch(e){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});default:return t.date({width:"full"})}}function Ru(e,t){switch(e){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});default:return t.time({width:"full"})}}var ju={p:Ru,P:function(e,t){var n,r=e.match(/(P+)(p+)?/),a=r[1],o=r[2];if(!o)return Lu(e,t);switch(a){case"P":n=t.dateTime({width:"short"});break;case"PP":n=t.dateTime({width:"medium"});break;case"PPP":n=t.dateTime({width:"long"});break;default:n=t.dateTime({width:"full"})}return n.replace("{{date}}",Lu(a,t)).replace("{{time}}",Ru(o,t))}};function Mu(e){return e.getTime()%6e4}var Fu=["D","DD"],Bu=["YY","YYYY"];function zu(e){if("YYYY"===e)throw new RangeError("Use `yyyy` instead of `YYYY` for formatting years; see: https://git.io/fxCyr");if("YY"===e)throw new RangeError("Use `yy` instead of `YY` for formatting years; see: https://git.io/fxCyr");if("D"===e)throw new RangeError("Use `d` instead of `D` for formatting days of the month; see: https://git.io/fxCyr");if("DD"===e)throw new RangeError("Use `dd` instead of `DD` for formatting days of the month; see: https://git.io/fxCyr")}function $u(e,t){Nu(1,arguments);var n=t||{},r=n.locale,a=r&&r.options&&r.options.weekStartsOn,o=null==a?0:Pu(a),i=null==n.weekStartsOn?o:Pu(n.weekStartsOn);if(!(i>=0&&i<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var l=Iu(e),s=l.getUTCDay(),u=(s=1&&s<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var u=new Date(0);u.setUTCFullYear(r+1,0,s),u.setUTCHours(0,0,0,0);var c=$u(u,t),d=new Date(0);d.setUTCFullYear(r,0,s),d.setUTCHours(0,0,0,0);var f=$u(d,t);return n.getTime()>=c.getTime()?r+1:n.getTime()>=f.getTime()?r:r-1}function Hu(e){Nu(1,arguments);var t=Iu(e),n=t.getUTCDay(),r=(n<1?7:0)+n-1;return t.setUTCDate(t.getUTCDate()-r),t.setUTCHours(0,0,0,0),t}function Vu(e){Nu(1,arguments);var t=Iu(e),n=t.getUTCFullYear(),r=new Date(0);r.setUTCFullYear(n+1,0,4),r.setUTCHours(0,0,0,0);var a=Hu(r),o=new Date(0);o.setUTCFullYear(n,0,4),o.setUTCHours(0,0,0,0);var i=Hu(o);return t.getTime()>=a.getTime()?n+1:t.getTime()>=i.getTime()?n:n-1}function qu(e){Nu(1,arguments);var t=Iu(e),n=Hu(t).getTime()-function(e){Nu(1,arguments);var t=Vu(e),n=new Date(0);return n.setUTCFullYear(t,0,4),n.setUTCHours(0,0,0,0),Hu(n)}(t).getTime();return Math.round(n/6048e5)+1}function Wu(e,t){Nu(1,arguments);var n=Iu(e),r=$u(n,t).getTime()-function(e,t){Nu(1,arguments);var n=t||{},r=n.locale,a=r&&r.options&&r.options.firstWeekContainsDate,o=null==a?1:Pu(a),i=null==n.firstWeekContainsDate?o:Pu(n.firstWeekContainsDate),l=Uu(e,t),s=new Date(0);return s.setUTCFullYear(l,0,i),s.setUTCHours(0,0,0,0),$u(s,t)}(n,t).getTime();return Math.round(r/6048e5)+1}function Gu(e,t){for(var n=e<0?"-":"",r=Math.abs(e).toString();r.length0?1:0;switch(t){case"G":case"GG":case"GGG":return n.era(r,{width:"abbreviated"});case"GGGGG":return n.era(r,{width:"narrow"});default:return n.era(r,{width:"wide"})}},y:function(e,t,n){if("yo"===t){var r=e.getUTCFullYear(),a=r>0?r:1-r;return n.ordinalNumber(a,{unit:"year"})}return function(e,t){var n=e.getUTCFullYear(),r=n>0?n:1-n;return Gu("yy"===t?r%100:r,t.length)}(e,t)},Y:function(e,t,n,r){var a=Uu(e,r),o=a>0?a:1-a;return"YY"===t?Gu(o%100,2):"Yo"===t?n.ordinalNumber(o,{unit:"year"}):Gu(o,t.length)},R:function(e,t){return Gu(Vu(e),t.length)},u:function(e,t){return Gu(e.getUTCFullYear(),t.length)},Q:function(e,t,n){var r=Math.ceil((e.getUTCMonth()+1)/3);switch(t){case"Q":return String(r);case"QQ":return Gu(r,2);case"Qo":return n.ordinalNumber(r,{unit:"quarter"});case"QQQ":return n.quarter(r,{width:"abbreviated",context:"formatting"});case"QQQQQ":return n.quarter(r,{width:"narrow",context:"formatting"});default:return n.quarter(r,{width:"wide",context:"formatting"})}},q:function(e,t,n){var r=Math.ceil((e.getUTCMonth()+1)/3);switch(t){case"q":return String(r);case"qq":return Gu(r,2);case"qo":return n.ordinalNumber(r,{unit:"quarter"});case"qqq":return n.quarter(r,{width:"abbreviated",context:"standalone"});case"qqqqq":return n.quarter(r,{width:"narrow",context:"standalone"});default:return n.quarter(r,{width:"wide",context:"standalone"})}},M:function(e,t,n){var r=e.getUTCMonth();switch(t){case"M":case"MM":return function(e,t){var n=e.getUTCMonth();return"M"===t?String(n+1):Gu(n+1,2)}(e,t);case"Mo":return n.ordinalNumber(r+1,{unit:"month"});case"MMM":return n.month(r,{width:"abbreviated",context:"formatting"});case"MMMMM":return n.month(r,{width:"narrow",context:"formatting"});default:return n.month(r,{width:"wide",context:"formatting"})}},L:function(e,t,n){var r=e.getUTCMonth();switch(t){case"L":return String(r+1);case"LL":return Gu(r+1,2);case"Lo":return n.ordinalNumber(r+1,{unit:"month"});case"LLL":return n.month(r,{width:"abbreviated",context:"standalone"});case"LLLLL":return n.month(r,{width:"narrow",context:"standalone"});default:return n.month(r,{width:"wide",context:"standalone"})}},w:function(e,t,n,r){var a=Wu(e,r);return"wo"===t?n.ordinalNumber(a,{unit:"week"}):Gu(a,t.length)},I:function(e,t,n){var r=qu(e);return"Io"===t?n.ordinalNumber(r,{unit:"week"}):Gu(r,t.length)},d:function(e,t,n){return"do"===t?n.ordinalNumber(e.getUTCDate(),{unit:"date"}):function(e,t){return Gu(e.getUTCDate(),t.length)}(e,t)},D:function(e,t,n){var r=function(e){Nu(1,arguments);var t=Iu(e),n=t.getTime();t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0);var r=n-t.getTime();return Math.floor(r/864e5)+1}(e);return"Do"===t?n.ordinalNumber(r,{unit:"dayOfYear"}):Gu(r,t.length)},E:function(e,t,n){var r=e.getUTCDay();switch(t){case"E":case"EE":case"EEE":return n.day(r,{width:"abbreviated",context:"formatting"});case"EEEEE":return n.day(r,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(r,{width:"short",context:"formatting"});default:return n.day(r,{width:"wide",context:"formatting"})}},e:function(e,t,n,r){var a=e.getUTCDay(),o=(a-r.weekStartsOn+8)%7||7;switch(t){case"e":return String(o);case"ee":return Gu(o,2);case"eo":return n.ordinalNumber(o,{unit:"day"});case"eee":return n.day(a,{width:"abbreviated",context:"formatting"});case"eeeee":return n.day(a,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(a,{width:"short",context:"formatting"});default:return n.day(a,{width:"wide",context:"formatting"})}},c:function(e,t,n,r){var a=e.getUTCDay(),o=(a-r.weekStartsOn+8)%7||7;switch(t){case"c":return String(o);case"cc":return Gu(o,t.length);case"co":return n.ordinalNumber(o,{unit:"day"});case"ccc":return n.day(a,{width:"abbreviated",context:"standalone"});case"ccccc":return n.day(a,{width:"narrow",context:"standalone"});case"cccccc":return n.day(a,{width:"short",context:"standalone"});default:return n.day(a,{width:"wide",context:"standalone"})}},i:function(e,t,n){var r=e.getUTCDay(),a=0===r?7:r;switch(t){case"i":return String(a);case"ii":return Gu(a,t.length);case"io":return n.ordinalNumber(a,{unit:"day"});case"iii":return n.day(r,{width:"abbreviated",context:"formatting"});case"iiiii":return n.day(r,{width:"narrow",context:"formatting"});case"iiiiii":return n.day(r,{width:"short",context:"formatting"});default:return n.day(r,{width:"wide",context:"formatting"})}},a:function(e,t,n){var r=e.getUTCHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":case"aaa":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"aaaaa":return n.dayPeriod(r,{width:"narrow",context:"formatting"});default:return n.dayPeriod(r,{width:"wide",context:"formatting"})}},b:function(e,t,n){var r,a=e.getUTCHours();switch(r=12===a?"noon":0===a?"midnight":a/12>=1?"pm":"am",t){case"b":case"bb":case"bbb":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"bbbbb":return n.dayPeriod(r,{width:"narrow",context:"formatting"});default:return n.dayPeriod(r,{width:"wide",context:"formatting"})}},B:function(e,t,n){var r,a=e.getUTCHours();switch(r=a>=17?"evening":a>=12?"afternoon":a>=4?"morning":"night",t){case"B":case"BB":case"BBB":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"BBBBB":return n.dayPeriod(r,{width:"narrow",context:"formatting"});default:return n.dayPeriod(r,{width:"wide",context:"formatting"})}},h:function(e,t,n){if("ho"===t){var r=e.getUTCHours()%12;return 0===r&&(r=12),n.ordinalNumber(r,{unit:"hour"})}return function(e,t){return Gu(e.getUTCHours()%12||12,t.length)}(e,t)},H:function(e,t,n){return"Ho"===t?n.ordinalNumber(e.getUTCHours(),{unit:"hour"}):function(e,t){return Gu(e.getUTCHours(),t.length)}(e,t)},K:function(e,t,n){var r=e.getUTCHours()%12;return"Ko"===t?n.ordinalNumber(r,{unit:"hour"}):Gu(r,t.length)},k:function(e,t,n){var r=e.getUTCHours();return 0===r&&(r=24),"ko"===t?n.ordinalNumber(r,{unit:"hour"}):Gu(r,t.length)},m:function(e,t,n){return"mo"===t?n.ordinalNumber(e.getUTCMinutes(),{unit:"minute"}):function(e,t){return Gu(e.getUTCMinutes(),t.length)}(e,t)},s:function(e,t,n){return"so"===t?n.ordinalNumber(e.getUTCSeconds(),{unit:"second"}):function(e,t){return Gu(e.getUTCSeconds(),t.length)}(e,t)},S:function(e,t){return function(e,t){var n=t.length,r=e.getUTCMilliseconds();return Gu(Math.floor(r*Math.pow(10,n-3)),t.length)}(e,t)},X:function(e,t,n,r){var a=(r._originalDate||e).getTimezoneOffset();if(0===a)return"Z";switch(t){case"X":return Yu(a);case"XXXX":case"XX":return Xu(a);default:return Xu(a,":")}},x:function(e,t,n,r){var a=(r._originalDate||e).getTimezoneOffset();switch(t){case"x":return Yu(a);case"xxxx":case"xx":return Xu(a);default:return Xu(a,":")}},O:function(e,t,n,r){var a=(r._originalDate||e).getTimezoneOffset();switch(t){case"O":case"OO":case"OOO":return"GMT"+Qu(a,":");default:return"GMT"+Xu(a,":")}},z:function(e,t,n,r){var a=(r._originalDate||e).getTimezoneOffset();switch(t){case"z":case"zz":case"zzz":return"GMT"+Qu(a,":");default:return"GMT"+Xu(a,":")}},t:function(e,t,n,r){var a=r._originalDate||e;return Gu(Math.floor(a.getTime()/1e3),t.length)},T:function(e,t,n,r){return Gu((r._originalDate||e).getTime(),t.length)}};function Qu(e,t){var n=e>0?"-":"+",r=Math.abs(e),a=Math.floor(r/60),o=r%60;if(0===o)return n+String(a);var i=t||"";return n+String(a)+i+Gu(o,2)}function Yu(e,t){return e%60==0?(e>0?"-":"+")+Gu(Math.abs(e)/60,2):Xu(e,t)}function Xu(e,t){var n=t||"",r=e>0?"-":"+",a=Math.abs(e);return r+Gu(Math.floor(a/60),2)+n+Gu(a%60,2)}var Ku=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,Ju=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,ec=/^'([^]*?)'?$/,tc=/''/g,nc=/[a-zA-Z]/;function rc(e,t,n){Nu(2,arguments);var r=String(t),a=n||{},o=a.locale||Du,i=o.options&&o.options.firstWeekContainsDate,l=null==i?1:Pu(i),s=null==a.firstWeekContainsDate?l:Pu(a.firstWeekContainsDate);if(!(s>=1&&s<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var u=o.options&&o.options.weekStartsOn,c=null==u?0:Pu(u),d=null==a.weekStartsOn?c:Pu(a.weekStartsOn);if(!(d>=0&&d<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");if(!o.localize)throw new RangeError("locale must contain localize property");if(!o.formatLong)throw new RangeError("locale must contain formatLong property");var f=Iu(e);if(!function(e){Nu(1,arguments);var t=Iu(e);return!isNaN(t)}(f))throw new RangeError("Invalid time value");var p=function(e){var t=new Date(e.getTime()),n=Math.ceil(t.getTimezoneOffset());return t.setSeconds(0,0),6e4*n+(n>0?(6e4+Mu(t))%6e4:Mu(t))}(f),h=Au(f,p),m={firstWeekContainsDate:s,weekStartsOn:d,locale:o,_originalDate:f},g=r.match(Ju).map((function(e){var t=e[0];return"p"===t||"P"===t?(0,ju[t])(e,o.formatLong,m):e})).join("").match(Ku).map((function(e){if("''"===e)return"'";var t=e[0];if("'"===t)return function(e){return e.match(ec)[1].replace(tc,"'")}(e);var n=Zu[t];if(n)return!a.useAdditionalWeekYearTokens&&function(e){return-1!==Bu.indexOf(e)}(e)&&zu(e),!a.useAdditionalDayOfYearTokens&&function(e){return-1!==Fu.indexOf(e)}(e)&&zu(e),n(h,e,o.localize,m);if(t.match(nc))throw new RangeError("Format string contains an unescaped latin alphabet character `"+t+"`");return e})).join("");return g}function ac(e,t){Nu(2,arguments);var n=Iu(e),r=Pu(t);return isNaN(r)?new Date(NaN):r?(n.setDate(n.getDate()+r),n):n}function oc(e,t){Nu(1,arguments);var n=e||{},r=Iu(n.start),a=Iu(n.end).getTime();if(!(r.getTime()<=a))throw new RangeError("Invalid interval");var o=[],i=r;i.setHours(0,0,0,0);var l=t&&"step"in t?Number(t.step):1;if(l<1||isNaN(l))throw new RangeError("`options.step` must be a number greater than 1");for(;i.getTime()<=a;)o.push(Iu(i)),i.setDate(i.getDate()+l),i.setHours(0,0,0,0);return o}function ic(e,t){Nu(1,arguments);var n=t||{},r=n.locale,a=r&&r.options&&r.options.weekStartsOn,o=null==a?0:Pu(a),i=null==n.weekStartsOn?o:Pu(n.weekStartsOn);if(!(i>=0&&i<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var l=Iu(e),s=l.getDay(),u=6+(s=0&&i<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var l=Iu(e),s=l.getDay(),u=(s=a?u-a:6-a+u+1).keys()).fill(0),oc({start:s,end:c}).map((function(e){return{date:e,dayLabel:i(e)}})))}({year:t,month:n,firstDayOfWeek:o,dayLabelFormat:l})}),[t,n,o,l]),weekdayLabels:r.useMemo((function(){return function(e){var t=void 0===e?{}:e,n=t.firstDayOfWeek,r=void 0===n?1:n,a=t.weekdayLabelFormat,o=void 0===a?function(e){return rc(e,"iiiiii")}:a,i=new Date;return oc({start:ac(sc(i),r),end:ac(ic(i),r)}).reduce((function(e,t){return e.push(o(t)),e}),[])}({firstDayOfWeek:o,weekdayLabelFormat:u})}),[o,u]),monthLabel:d(new Date(t,n))}}function pc(e,t){Nu(2,arguments);var n=Iu(e),r=Iu(t);return n.getTime()r.getTime()}function mc(e,t){Nu(2,arguments);var n=t||{},r=Iu(e).getTime(),a=Iu(n.start).getTime(),o=Iu(n.end).getTime();if(!(a<=o))throw new RangeError("Invalid interval");return r>=a&&r<=o}function gc(e){Nu(1,arguments);var t=Iu(e);return t.setHours(0,0,0,0),t}function vc(e,t){Nu(2,arguments);var n=gc(e),r=gc(t);return n.getTime()===r.getTime()}function bc(e,t){Nu(2,arguments);var n=Iu(e),r=Pu(t);if(isNaN(r))return new Date(NaN);if(!r)return n;var a=n.getDate(),o=new Date(n.getTime());return o.setMonth(n.getMonth()+r+1,0),a>=o.getDate()?o:(n.setFullYear(o.getFullYear(),o.getMonth(),a),n)}var yc=function(e,t){return void 0===e&&(e=[]),e.some((function(e){return vc(t,e)}))};function wc(e){var t=lc(e);return{year:function(e){return Nu(1,arguments),Iu(e).getFullYear()}(t),month:function(e){return Nu(1,arguments),Iu(e).getMonth()}(t),date:t}}function xc(e,t){var n=wc(t||gc(Date.now())),r=n.date,a=[n];return e>1&&(a=Array.from(Array(e-1).keys()).reduce((function(e){return r=bc(e[e.length-1].date,1),e.concat([wc(r)])}),a)),a}function kc(e,t,n,r){var a=e[r?n>0?0:e.length-r:n>0?e.length-1:0].date;return Array.from(Array(t).keys()).reduce((function(e){return a=0===e.length?bc(a,n):bc(a,n>=0?1:-1),n>0?e.concat([wc(a)]):[wc(a)].concat(e)}),[])}function _c(e){var t=e.startDate,n=e.endDate,r=e.isDateBlocked,a=e.minBookingDays,o=e.exactMinBookingDays,i=e.minBookingDate,l=e.maxBookingDate,s=!i||!pc(t,ac(i,-1)),u=!l||!hc(ac(t,a-1),l);return!((!t||1!==a||n||r(t))&&(t&&a>1&&!n&&!o||t&&a>0&&o&&s&&u||t&&a>0&&o&&!i&&!l?oc({start:t,end:ac(t,a-1)}).some((function(e){return r(e)})):!t||!n||o||pc(n,ac(t,a-1))||oc({start:t,end:n}).some((function(e){return r(e)}))))}function Ec(e){var t=e.startDate,n=e.endDate,a=e.focusedInput,o=e.minBookingDate,i=e.maxBookingDate,l=e.onDatesChange,s=e.initialVisibleMonth,u=e.exactMinBookingDays,c=void 0!==u&&u,d=e.minBookingDays,f=void 0===d?1:d,p=e.numberOfMonths,h=void 0===p?2:p,m=e.firstDayOfWeek,g=void 0===m?1:m,v=e.isDateBlocked,b=void 0===v?function(){return!1}:v,y=e.unavailableDates,w=void 0===y?[]:y,x=e.changeActiveMonthOnSelect,k=void 0===x||x,_=r.useState((function(){return xc(h,t||s||null)})),E=_[0],S=_[1],C=r.useState(null),T=C[0],O=C[1],D=r.useState(t),P=D[0],N=D[1];r.useEffect((function(){return"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("keydown",R),function(){window.removeEventListener&&window.removeEventListener("keydown",R)}}));var I=function(e){return yc(w,e)||b(e)},A=function(e){N(e),(!P||P&&!vc(e,P))&&S(xc(h,e))},L=function(e){return function(e){var t=e.date,n=e.minBookingDate,r=e.maxBookingDate,a=e.isDateBlockedFn,o=e.startDate,i=e.endDate,l=e.minBookingDays,s=void 0===l?1:l,u=e.unavailableDates,c=void 0===u?[]:u,d=n?new Date(n.getFullYear(),n.getMonth(),n.getDate(),0,0,0):n,f=r?new Date(r.getFullYear(),r.getMonth(),r.getDate(),0,0,0):r;return!!(yc(c,t)||d&&pc(t,d)||f&&hc(t,f)||o&&!i&&s>1&&mc(t,{start:o,end:ac(o,s-2)})||a&&a(t))}({date:e,minBookingDate:o,maxBookingDate:i,startDate:t,endDate:n,minBookingDays:f,isDateBlockedFn:I})};function R(e){if(("ArrowRight"===e.key||"ArrowLeft"===e.key||"ArrowDown"===e.key||"ArrowUp"===e.key)&&!P){var t=E[0];A(t.date),S(xc(h,t.date))}}var j=r.useCallback((function(){S(kc(E,h,-1)),N(null)}),[E,h]),M=r.useCallback((function(){S(kc(E,h,-1,1)),N(null)}),[E,h]),F=r.useCallback((function(){S(kc(E,h,1)),N(null)}),[E,h]),B=r.useCallback((function(){S(kc(E,h,1,1)),N(null)}),[E,h]),z=r.useCallback((function(e){S(xc(h,e)),N(null)}),[h]),$=r.useCallback((function(e){void 0===e&&(e=1),S(kc(E,h,-(12*e-h+1))),N(null)}),[E,h]),U=r.useCallback((function(e){void 0===e&&(e=1),S(kc(E,h,12*e-h+1)),N(null)}),[E,h]);return{firstDayOfWeek:g,activeMonths:E,isDateSelected:function(e){return function(e,t,n){return!(!t||!n)&&mc(e,{start:t,end:n})}(e,t,n)},isDateHovered:function(e){return a=(r={date:e,hoveredDate:T,startDate:t,endDate:n,minBookingDays:f,exactMinBookingDays:c,isDateBlocked:I}).date,o=r.startDate,i=r.endDate,l=r.isDateBlocked,u=r.minBookingDays,(s=r.hoveredDate)&&u>1&&r.exactMinBookingDays&&mc(a,{start:s,end:ac(s,u-1)})?!oc({start:s,end:ac(s,u-1)}).some((function(e){return l(e)})):o&&!i&&s&&mc(a,{start:o,end:ac(o,u-1)})&&vc(o,s)&&u>1?!oc({start:o,end:ac(o,u-1)}).some((function(e){return l(e)})):!(!o||i||!s||pc(s,o)||!mc(a,{start:o,end:s})||oc({start:o,end:s}).some((function(e){return l(e)})));var r,a,o,i,l,s,u},isFirstOrLastSelectedDate:function(e){return function(e,t,n){return!!(t&&vc(e,t)||n&&vc(e,n))}(e,t,n)},isStartDate:function(e){return function(e,t){return!(!t||!vc(e,t))}(e,t)},isEndDate:function(e){return function(e,t){return!(!t||!vc(e,t))}(e,n)},isDateBlocked:L,numberOfMonths:h,isDateFocused:function(e){return!!P&&vc(e,P)},focusedDate:P,hoveredDate:T,onResetDates:function(){l({startDate:null,endDate:null,focusedInput:"startDate"})},onDateHover:function(e){if(e){if(e){var r=!L(e)||t&&vc(e,t),a=!o||!pc(e,ac(o,-1)),l=!i||!hc(e,i),s=ac(e,f-1),u=!o||!pc(s,o),d=!i||!hc(s,i),p=c&&f>1&&a&&l&&u&&d,h=t&&!n&&!c&&a&&l,m=!(f>1&&t)||mc(e,{start:t,end:ac(t,f-2)}),g=t&&vc(e,t)&&m;r&&(p||h||g)?O(e):null!==T&&O(null)}}else O(null)},onDateSelect:function(e){("endDate"===a||"startDate"===a)&&f>0&&c&&_c({minBookingDays:f,exactMinBookingDays:c,minBookingDate:o,maxBookingDate:i,isDateBlocked:I,startDate:e,endDate:null})?l({startDate:e,endDate:ac(e,f-1),focusedInput:null}):("endDate"===a&&t&&pc(e,t)||"startDate"===a&&n&&hc(e,n))&&!c&&_c({minBookingDays:f,isDateBlocked:I,startDate:e,endDate:null})?l({endDate:null,startDate:e,focusedInput:"endDate"}):"startDate"===a&&!c&&_c({minBookingDays:f,isDateBlocked:I,endDate:n,startDate:e})?l({endDate:n,startDate:e,focusedInput:"endDate"}):"startDate"===a&&!c&&_c({minBookingDays:f,isDateBlocked:I,endDate:null,startDate:e})?l({endDate:null,startDate:e,focusedInput:"endDate"}):"endDate"===a&&t&&!pc(e,t)&&!c&&_c({minBookingDays:f,isDateBlocked:I,startDate:t,endDate:e})&&l({startDate:t,endDate:e,focusedInput:null}),"endDate"!==a&&(!P||P&&!vc(e,P))&&k&&S(xc(h,e))},onDateFocus:A,goToPreviousMonths:j,goToPreviousMonthsByOneMonth:M,goToNextMonths:F,goToNextMonthsByOneMonth:B,goToDate:z,goToPreviousYear:$,goToNextYear:U}}const Sc={root:"lsd-calendar",container:"lsd-calendar-container",small:"lsd-calendar--small",medium:"lsd-calendar--medium",large:"lsd-calendar--large",open:"lsd-calendar--open",disabled:"lsd-calendar--disabled",header:"lsd-calendar-header",weekDay:"lsd-calendar__week_day",button:"lsd-calendar__button",changeYear:"lsd-calendar__change-year",changeYearActive:"lsd-calendar__change-year--active",changeYearIconContainer:"lsd-calendar__change-year-icon-container",year:"lsd-calendar-year",month:"lsd-calendar-month",day:"lsd-calendar-day",yearAndIcon:"lsd-calendar__year-and-icon",monthAndYear:"lsd-calendar__month-and-year",dayContainer:"lsd-calendar-day__container",dayRange:"lsd-calendar-day--range",daySelected:"lsd-calendar-day--selected",dayDisabled:"lsd-calendar-day--disabled",dayIsToday:"lsd-calendar-day--today",dayBorderLeft:"lsd-calendar-day--border-left",dayBorderRight:"lsd-calendar-day--border-right",dayBorderLeftAndRight:"lsd-calendar-day--border-left-and-right",dayBorderTopAndBottom:"lsd-calendar-day--border-top-and-bottom",todayIndicator:"lsd-calendar-day__today_indicator",monthTable:"lsd-calendar__month-table",nextMonthButton:"lsd-calendar__next-month-button",previousMonthButton:"lsd-calendar__previous-month-button",yearDropdown:"lsd-calendar__year-dropdown",yearDropdownHidden:"lsd-calendar__year-dropdown--hidden"},Cc=r.createContext(null),Tc=()=>r.useContext(Cc),Oc=(e,t,n)=>{if(!e)return{isValid:!1,date:null};const r=new Date(e+"T00:00:00");return{isValid:!Number.isNaN(+r)&&r>=t&&r<=n,date:r}},Dc=e=>new Date(e.getTime()-6e4*e.getTimezoneOffset()).toISOString().split("T")[0],Pc=e=>e.setHours(0,0,0,0),Nc=(e,t,n)=>!!(e&&t&&n)&&(Pc(t)<=Pc(e)&&Pc(n)>=Pc(e)),Ic=(e,t)=>{if(!e||!t)return!1;return Dc(e)===Dc(t)},Ac=e=>{const t=(e=>{const t=e.find((e=>"number"!=typeof e));return t?new Date(t.date):new Date})(e),n=new Date(t);n.setDate(n.getDate()-t.getDay());const r=[];for(let a=0;a<42;a++){const e=new Date(n);e.setDate(e.getDate()+a),r.push(e)}return r},Lc=(e,t)=>e&&e===t?null:t;function Rc(e,t){if(!e||!t)return!0;let n=new Date(Dc(new Date(e)));return new Date(Dc(new Date(t)))>n}const jc=(e,t)=>"large"===t?"startDate"===e?130:291:"medium"===t?"startDate"===e?120:267:"small"===t?"startDate"===e?107:239:0,Mc=({day:e,index:t,fullMonthDays:n,disabled:a=!1})=>{const o=n[t],{mode:i,startDate:l,endDate:s,onDateSelect:u}=Tc(),c=r.useRef(null),d=Pc(o)===Pc(new Date),f="range"===i&&Nc(o,l,s),p=r.useCallback((()=>u(o)),[o,u]),h=Ic(o,l),m="range"===i&&Ic(o,s),g=h||m||f;if(!e)return null;const v=((e,t,n,r,a)=>{if(!n)return"";if(!r||!a)return Sc.dayBorderLeftAndRight;const{prevIndex:o,nextIndex:i}=((e,t)=>{const n=e-1,r=e+1;return{prevIndex:n>=0?n:null,nextIndex:r{const o=r.useRef(null),i=r.useRef(null),{goToDate:l,changeYearMode:s,setChangeYearMode:u}=Tc(),c=r.useRef(null),{y:d}=eu(c),[f,p]=r.useState((()=>parseInt(e)-a)),[h,m]=r.useState((()=>parseInt(e)+a)),g=Array.from({length:h-f+1},((e,t)=>f+t));Ys(o,(()=>{u(!1)}));return r.useEffect((()=>{if(s&&i.current&&c.current){const e=i.current.offsetTop,t=i.current.offsetHeight,n=e-c.current.clientHeight/2+t/2;c.current.scrollTop=n}}),[s]),r.useEffect((()=>{var e,t;const n=null==(e=null==c?void 0:c.current)?void 0:e.scrollHeight,r=null==(t=null==c?void 0:c.current)?void 0:t.clientHeight;if(!n||!r)return;const o=d/(n-r)*100;o>90&&m((e=>Math.min(e+a,Gc))),o<10&&p((e=>Math.max(e-a,Wc)))}),[d,a]),Ge("div",{ref:o,className:Qe(Sc.changeYear,s&&Sc.changeYearActive),onClick:()=>{u(!s)},children:[Ge("div",{className:Qe(Sc.year,Sc.yearAndIcon),children:[We(Vs,{component:"span",variant:"large"===n?"label1":"label2",children:e}),We("div",{className:Sc.changeYearIconContainer,children:We(s?Cs:Es,{color:"primary"})})]}),We("div",{className:Qe(Sc.yearDropdown,!s&&Sc.yearDropdownHidden),ref:c,children:g.map((r=>We("div",{className:Sc.year,onClick:()=>(e=>{const n=new Date(e,t,1);l(n),u(!1)})(r),ref:r===parseInt(e)?i:null,children:We(Vs,{component:"span",variant:"large"===n?"label1":"label2",children:r})},r)))})]})},Bc=({direction:e,onClick:t,className:n})=>{const r="previous"===e?js:Ms;return We("button",{className:Qe(Sc.button,n),type:"button",onClick:t,children:We(r,{color:"primary"})})},zc=({monthLabel:e,monthNumber:t,size:n})=>{const{goToPreviousMonths:r,goToNextMonths:a}=Tc(),[o,i]=e.split(" ");return Ge("div",{className:Sc.header,children:[We(Bc,{direction:"previous",onClick:r,className:Sc.previousMonthButton}),Ge("div",{className:Sc.monthAndYear,children:[We(Vs,{className:Sc.month,component:"span",variant:"large"===n?"label1":"label2",children:o}),We(Fc,{year:i,monthNumber:t,size:n})]}),We(Bc,{direction:"next",onClick:a,className:Sc.nextMonthButton})]})},$c=({weekdayLabels:e})=>We("tr",{children:e.map(((e,t)=>We("th",{children:We("div",{className:Sc.weekDay,children:We(Vs,{variant:"label2",children:e[0]})})},t)))}),Uc=({days:e})=>{const t=Ac(e),n=new Date(t[15]).getMonth();return We(qe,{children:Array.from({length:6}).map(((e,r)=>We("tr",{children:Array.from({length:7}).map(((e,a)=>{const o=7*r+a,i=t[o];return We(Mc,{index:o,day:i.getDate().toString(),fullMonthDays:t,disabled:i.getMonth()!==n},`day-${o}`)}))},`week-${r}`)))})},Hc=({size:e="large",year:t,month:n,firstDayOfWeek:r})=>{const a=Tc(),o=(null==a?void 0:a.size)??e,{days:i,weekdayLabels:l,monthLabel:s}=fc({year:t,month:n,firstDayOfWeek:r});return Ge(qe,{children:[We(zc,{monthLabel:s,monthNumber:n,size:o}),Ge("table",{className:Sc.monthTable,children:[We("thead",{children:We($c,{weekdayLabels:l})}),We("tbody",{children:We(Uc,{days:i})})]})]})},Vc={root:"lsd-tooltip-base",arrowTip:"lsd-tooltip-base__arrow-tip",content:"lsd-tooltip-base__content"},qc=({children:e,arrowOffset:t,arrowPosition:n="top",arrowSize:r=10,rootRef:a,...o})=>{const i=bs(o),l={width:`${r}px`,height:`${r}px`,transform:"rotate(45deg)"};return["top","bottom"].includes(n)?(l.left=`${t}px`,l[n]=`-${r/2}px`):(l.top=`${t}px`,l[n]=`-${r/2}px`),We("div",{ref:a,...ws(o),className:Qe(i.className,o.className,Vc.root),children:t?Ge(qe,{children:[We("div",{className:Vc.arrowTip,style:l}),We("div",{className:Vc.content,children:e})]}):e})};qc.classes=Vc;const Wc=1850,Gc=2100,Zc=({open:e,handleRef:t,size:n="large",mode:a="date",disabled:o=!1,onStartDateChange:i,onEndDateChange:l,onClose:s,onCalendarClickaway:u,startDate:c,endDate:d,calendarType:f="startDate",minDate:p=new Date(Wc,0,1),maxDate:h=new Date(Gc,0,1),tooltipArrowOffset:m,...g})=>{const v=bs(g),b=r.useRef(null),[y,w]=r.useState(c?Oc(c,p,h).date:null),[x,k]=r.useState(d?Oc(d,p,h).date:null),[_,E]=r.useState(!1);Ys(b,(t=>{e&&(u&&u(t),void 0===e&&s&&s())}));const{activeMonths:S,onDateFocus:C,onDateSelect:T,goToPreviousMonths:O,goToNextMonths:D,goToDate:P}=Ec({startDate:y,endDate:x,focusedInput:"startDate",onDatesChange:e=>{const t=((e,t,n,r)=>{let a=t,o=n;const i=r.startDate;return i?("startDate"===e?(!o||o&&i.getTime()<=o.getTime())&&(a=i):"endDate"===e&&(!a||a&&i.getTime()>=a.getTime())&&(o=i),{newStartDate:a,newEndDate:o}):{newStartDate:a,newEndDate:o}})(f,y,x,e),{newStartDate:n,newEndDate:r}=t;n!==y&&(null==i||i(n??new Date),w(n)),r!==x&&"range"===a&&(null==l||l(r??new Date),k(r))},numberOfMonths:1});r.useEffect((()=>{const e=Oc(c,p,h);if(Ic(e.date,y)||w(e.isValid?e.date:null),"range"===a){const e=Oc(d,p,h);Ic(e.date,x)||k(e.isValid?e.date:null)}}),[c,d,a,p,h,y,x]),r.useEffect((()=>{y&&C(y)}),[y]),r.useEffect((()=>{x&&C(x)}),[x]);const N=nu(t,e);return We(Cc.Provider,{value:{size:n,mode:a,startDate:y,endDate:x,onDateFocus:C,onDateSelect:T,goToPreviousMonths:O,goToNextMonths:D,goToDate:P,changeYearMode:_,setChangeYearMode:E},children:We(qc,{...g,className:Qe({...ws(g)},v.className,g.className,Sc.root,Sc[n],e&&Sc.open,o&&Sc.disabled),rootRef:b,style:{...N,...g.style??{}},arrowOffset:m,children:We("div",{className:Qe(Sc.container),children:S.map(((e,t)=>We(Hc,{year:e.year,month:e.month,firstDayOfWeek:0,size:n},`${e.year}-${e.month}-${t}`)))})})})};Zc.classes=Sc;const Qc={root:"lsd-card",small:"lsd-card--small",medium:"lsd-card--medium",large:"lsd-card--large"},Yc=r.createContext(null),Xc=({size:e="large",children:t,...n})=>{const r=bs(n);return We(Yc.Provider,{value:{size:e},children:We("div",{...ws(n),className:Qe(r.className,Qc.root,Qc[e]),children:t})})};Xc.classes=Qc;const Kc={root:"lsd-card-body"},Jc=({children:e,...t})=>{const n=bs(t);return We("div",{...ws(t),className:Qe(n.className,t.className,Kc.root),children:e})};Jc.classes=Kc;const ed={root:"lsd-card-header",title:"lsd-card-header__title",small:"lsd-card-header--small",medium:"lsd-card-header--medium",large:"lsd-card-header--large"},td=({size:e="large",children:t,...n})=>{const a=bs(n),o=r.useContext(Yc),i=(null==o?void 0:o.size)??e;return We("div",{...ws(n),className:Qe(a.className,n.className,ed.root,ed[i]),children:We(Vs,{className:ed.title,component:"div",variant:"large"===i?"label1":"label2",children:t})})};td.classes=ed;const nd=r.createContext(null),rd=ks((e=>We("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:We("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M2.91667 1.75C2.27233 1.75 1.75 2.27233 1.75 2.91667V11.0833C1.75 11.7277 2.27233 12.25 2.91667 12.25H11.0833C11.7277 12.25 12.25 11.7277 12.25 11.0833V2.91667C12.25 2.27233 11.7277 1.75 11.0833 1.75H2.91667ZM9.91667 6.41667H4.08333V7.58333H9.91667V6.41667Z",fill:"black"})})),{filled:!0}),ad={root:"lsd-checkbox",input:"lsd-checkbox__input",icon:"lsd-checkbox__icon",label:"lsd-checkbox__label",focused:"lsd-checkbox--focused",disabled:"lsd-checkbox--disabled",indeterminate:"lsd-checkbox--indeterminate",large:"lsd-checkbox--large",medium:"lsd-checkbox--medium",small:"lsd-checkbox--small"},od=({name:e,size:t="large",onChange:n,checked:a,defaultChecked:o,disabled:i=!1,indeterminate:l=!1,inputProps:s={},children:u,...c})=>{const d=bs(c),f=r.useRef(null),[p,h]=r.useState(!1),m=Ye({value:a,defaultValue:o??!1,onChange:n,ref:f}),g=r.useContext(nd),v=(null==g?void 0:g.size)??t;return r.useEffect((()=>{if(!f.current)return;const e=()=>h(!0),t=()=>h(!1);return f.current.addEventListener("focus",e),f.current.addEventListener("blur",t),()=>{var n,r;null==(n=f.current)||n.removeEventListener("focus",e),null==(r=f.current)||r.removeEventListener("blur",t)}}),[f.current]),Ge(Vs,{color:"primary",variant:"large"===v?"label1":"label2",component:"label","aria-disabled":i?"true":"false",...ws(c),className:Qe(d.className,c.className,ad.root,ad[v],p&&ad.focused,i&&ad.disabled,l&&ad.indeterminate),children:[We("input",{ref:f,name:e,type:"checkbox",disabled:i,checked:m.value,onChange:m.onChange,defaultChecked:o,className:Qe(s.className,ad.input),...s}),l?We(rd,{color:"primary",focusable:!1}):m.value?We(Ts,{color:"primary",focusable:!1}):We(Os,{color:"primary",focusable:!1}),We("span",{className:ad.label,children:u})]})};od.classes=ad;const id={root:"lsd-checkbox-group",label:"lsd-checkbox-group__label"},ld=({size:e="large",label:t,children:n,...r})=>{const a=bs(r);return We(nd.Provider,{value:{size:e},children:Ge("div",{...ws(r),className:Qe(a.className,r.className,id.root),children:[We(Vs,{component:"span",variant:"small"===e?"label2":"label1",className:id.label,...ys(r),children:t}),n]})})};ld.classes=id;const sd={root:"lsd-collapse-header",trigger:"lsd-collapse-header__trigger",label:"lsd-collapse-header__label",icons:"lsd-collapse-header__icons",icon:"lsd-collapse-header__icon",menuIcon:"lsd-collapse-header__menu-icon",open:"lsd-collapse-header--open",disabled:"lsd-collapse-header--disabled",small:"lsd-collapse-header--small",medium:"lsd-collapse-header--medium",large:"lsd-collapse-header--large"},ud=({label:e,disabled:t=!1,open:n,setOpen:r,size:a="large",onTrigger:o,...i})=>{const l=bs(i);return We("div",{...ws(i),className:Qe(l.className,i.className,sd.root,sd[a],t&&sd.disabled,n&&sd.open),children:Ge("button",{className:Qe(sd.trigger),onClick:o,children:[We(Vs,{color:"primary",component:"label",variant:"small"===a?"label2":"label1",className:sd.label,children:e}),We("div",{className:sd.icons,children:We(n?Cs:Es,{color:"primary",className:sd.menuIcon})})]})})};ud.classes=sd;const cd={root:"lsd-collapse",content:"lsd-collapse__content",open:"lsd-collapse--open",disabled:"lsd-collapse--disabled"},dd=({label:e,disabled:t=!1,size:n="large",open:a,children:o,...i})=>{const l=bs(i),s=r.useRef(null),[u,c]=r.useState(a??!1),d=e=>{if(void 0===a)return c(e);i.onChange&&i.onChange(e)};return r.useEffect((()=>{t&&u&&d(!1)}),[t,u,d]),r.useEffect((()=>{void 0!==a&&c(a)}),[a]),Ge("div",{...ws(i),ref:s,className:Qe(l.className,i.className,cd.root,t&&cd.disabled,u&&cd.open),children:[We(ud,{label:e,open:u,setOpen:c,size:n,onTrigger:()=>!t&&d(!u),disabled:t,...ys(i)}),u&&We("div",{className:cd.content,children:o})]})};dd.classes=cd;const fd={root:"lsd-date-field",label:"lsd-date-field__label",inputContainer:"lsd-date-field__input-container",input:"lsd-date-field__input-container__input",inputFilled:"lsd-date-field__input-container__input--filled",icon:"lsd-date-field__input-container__icon",noIcon:"lsd-date-field__input-container__no-icon",iconButton:"lsd-date-field__input-container__icon-button",supportingText:"lsd-date-field__supporting-text",disabled:"lsd-date-field--disabled",error:"lsd-date-field--error",large:"lsd-date-field--large",medium:"lsd-date-field--medium",small:"lsd-date-field--small",outlined:"lsd-date-field--outlined",underlined:"lsd-date-field--underlined"},pd=({label:e,size:t="large",error:n=!1,errorIcon:a=!1,clearButton:o,supportingText:i,children:l,value:s,placeholder:u,defaultValue:c,disabled:d,onChange:f,icon:p,onIconClick:h,inputProps:m={},calendarIconRef:g,variant:v="underlined",...b})=>{const y=bs(b),w=r.useRef(null),x=Ye({defaultValue:c,value:s,onChange:f,ref:w}),k=(null==m?void 0:m.id)??(b.id||"date-field")+"-input";return Ge("div",{"aria-disabled":d?"true":"false",...b,className:Qe({...ws(b)},b.className,y.className,fd.root,fd[t],d&&fd.disabled,n&&fd.error),children:[e&&We(Vs,{htmlFor:k,className:fd.label,variant:"label2",component:"label",children:e}),Ge("div",{className:Qe(fd.inputContainer,"outlined"===v?fd.outlined:fd.underlined),children:[We("input",{id:k,type:"date",placeholder:u,...m,ref:w,value:x.value||"",onChange:x.onChange,className:Qe(m.className,fd.input,x.filled&&fd.inputFilled),max:m.max||"9999-12-31"}),p?We("span",{className:fd.icon,onClick:()=>!d&&h&&h(),ref:g,children:p}):n&&a?We("span",{className:fd.icon,children:We(Ns,{color:"primary"})}):o&&x.filled?We("span",{onClick:()=>!d&&x.setValue(""),className:fd.icon,children:We(Ps,{color:"primary"})}):We("span",{className:fd.noIcon})]}),i&&We("div",{className:Qe(fd.supportingText),children:We(Vs,{variant:"label2",component:"p",children:i})}),l]})};pd.classes=fd;const hd={root:"lsd-date-picker",calendar:"lsd-date-picker__calendar",large:"lsd-date-picker--large",medium:"lsd-date-picker--medium",small:"lsd-date-picker--small"},md=(e,t)=>t&&(null==e?void 0:e.composedPath().includes(t))||!1,gd=({label:e,size:t="large",value:n,onChange:a,withCalendar:o=!0,variant:i="underlined",...l})=>{const s=bs(l),u=r.useRef(null),c=r.useRef(null),[d,f]=r.useState(!1),p=void 0!==n,h=Ye({value:n,defaultValue:"",onChange:a,getInput:()=>{var e;return null==(e=u.current)?void 0:e.querySelector(`input.${pd.classes.input}`)}});return We("div",{id:(l.id||"date-picker")+"-input",ref:u,className:Qe({...ws(l)},l.className,s.className,hd.root,hd[t]),children:We(pd,{label:e,size:t,variant:i,icon:o&&We(Us,{color:"primary"}),onIconClick:()=>f((e=>!e)),value:p||d?h.value:void 0,onChange:h.onChange,calendarIconRef:c,...l,children:We(lu,{id:"calendar",children:o&&We(Zc,{...ys(l),onStartDateChange:e=>(e=>h.setValue(Dc(e)))(e),open:d,onCalendarClickaway:e=>{md(e,c.current)||f(!1)},handleRef:u,startDate:h.value,disabled:l.disabled,className:hd.calendar})})})})};gd.classes=hd;const vd={root:"lsd-date-range-picker",calendar:"lsd-date-picker__calendar",withCalendar:"lsd-date-range-picker--with-calendar",openCalendar:"lsd-date-range-picker--calendar-open",disabled:"lsd-date-range-picker--disabled",inputContainer:"lsd-date-range-picker__input-container",icon:"lsd-date-range-picker__icon",large:"lsd-date-range-picker--large",medium:"lsd-date-range-picker--medium",small:"lsd-date-range-picker--small",label:"lsd-date-range-picker__label",supportingText:"lsd-date-range-picker__supporting-text",outlined:"lsd-date-range-picker--outlined",separator:"lsd-date-range-picker__separator"},bd=({startValue:e,endValue:t,onStartDateChange:n,onEndDateChange:a,size:o="large",variant:i="underlined",withCalendar:l=!0,label:s,supportingText:u,disabled:c,...d})=>{const f=bs(d),p=r.useRef(null),h=r.useRef(null),m=r.useRef(null),[g,v]=r.useState(null),b=void 0!==e,y=void 0!==t,w=Ye({value:e,defaultValue:"",onChange:n,getInput:()=>{var e;return null==(e=p.current)?void 0:e.querySelectorAll(`input.${pd.classes.input}`)[0]}}),x=Ye({value:t,defaultValue:"",onChange:a,getInput:()=>{var e;return null==(e=p.current)?void 0:e.querySelectorAll(`input.${pd.classes.input}`)[1]}}),k={...d,size:o,label:void 0,supportingText:void 0},_="startDate"===g||"endDate"===g;return Ge("div",{ref:p,className:Qe({...ws(d)},f.className,d.className,vd.root,vd[o],l&&vd.withCalendar,_&&vd.openCalendar,c&&vd.disabled),children:[s&&We(Vs,{className:vd.label,variant:"label2",component:"label",children:s}),Ge("div",{className:Qe(d.className,vd.inputContainer,"outlined"===i&&vd.outlined),children:[We(pd,{variant:i,calendarIconRef:m,icon:l&&We(Us,{color:"primary"}),value:b||_?w.value:void 0,onIconClick:()=>v((e=>Lc(e,"startDate"))),onChange:e=>{x.value&&!Rc(e.target.value,x.value)||w.onChange(e)},...k}),We("div",{className:vd.separator}),We(pd,{variant:i,calendarIconRef:h,icon:l&&We(Us,{color:"primary"}),value:y||_?x.value:void 0,onIconClick:()=>v((e=>Lc(e,"endDate"))),onChange:e=>{w.value&&!Rc(w.value,e.target.value)||x.onChange(e)},...k})]}),u&&We("div",{className:Qe(vd.supportingText),children:We(Vs,{variant:"label2",component:"p",children:u})}),l&&We(lu,{id:"calendar",children:We(Zc,{...ys(d),onStartDateChange:e=>{w.setValue(Dc(e)),v("endDate")},onEndDateChange:e=>x.setValue(Dc(e)),onCalendarClickaway:e=>{md(e,h.current)||md(e,m.current)||v(null)},calendarType:g,open:_,onClose:()=>v(null),handleRef:p,mode:"range",disabled:c,startDate:w.value,endDate:x.value,className:vd.calendar,tooltipArrowOffset:jc(g,o),size:o})})]})};bd.classes=vd;const yd={root:"lsd-dropdown",label:"lsd-dropdown__label",buttonContainer:"lsd-dropdown__button-container",trigger:"lsd-dropdown__trigger",optionLabel:"lsd-dropdown__option-label",icons:"lsd-dropdown__icons",icon:"lsd-dropdown__icon",menuIcon:"lsd-dropdown__menu-icon",supportingText:"lsd-dropdown__supporting-text",open:"lsd-dropdown--open",error:"lsd-dropdown--error",disabled:"lsd-dropdown--disabled",small:"lsd-dropdown--small",medium:"lsd-dropdown--medium",large:"lsd-dropdown--large",outlined:"lsd-dropdown--outlined",underlined:"lsd-dropdown--underlined"},wd=({label:e,size:t="large",error:n=!1,disabled:a=!1,supportingText:o,triggerLabel:i,value:l=[],onChange:s,options:u=[],multi:c=!1,variant:d="outlined",isOpen:f,onToggle:p,menuProps:h={},...m})=>{const g=bs(m),v=r.useRef(null),b=void 0!==f,[y,w]=r.useState(!1);b&&f!==y&&w(f);const{select:x,isSelected:k,selected:_}=((e,t,{onDone:n,onChange:a,multi:o=!1}={})=>{const i=r.useMemo((()=>Object.fromEntries(e.map((e=>[e.value,e])))),[e]),[l,s]=r.useState(Array.isArray(t)?t:t?[t]:[]),u=r.useMemo((()=>ds(l,(()=>!0))),[l]),c=r.useMemo((()=>l.map((e=>i[e]))),[l,i]);r.useEffect((()=>{a&&s(Array.isArray(t)?t:t?[t]:[])}),[t,a]);const d=e=>"string"==typeof e?e:e.value;return{selected:c,isSelected:e=>!!u[d(e)],select:e=>{const t=d(e),r=o?u[t]?l.filter((e=>e!==t)):[...l,t]:[t];a?a(o?r:r[0]):s(r),!o&&n&&n(o?r:r[0])}}})(u,l,{multi:c,onChange:s,onDone:()=>{w(!1)}}),E=e=>{b?p&&p(e):w(e)};r.useEffect((()=>{a&&y&&!b&&w(!1)}),[y,a,b]);const S=(null==m?void 0:m.id)??(m.id||"dropdown")+"-input";return Ge("div",{ref:v,...ws(m),className:Qe(g.className,m.className,yd.root,yd[t],n&&yd.error,a&&yd.disabled,y&&yd.open,"outlined"===d?yd.outlined:yd.underlined),children:[e&&We(Vs,{htmlFor:S,className:yd.label,variant:"label2",component:"label",children:e}),We("div",{className:yd.buttonContainer,children:Ge("button",{id:S,className:Qe(yd.trigger),onClick:()=>{a||E(!y)},children:[We(Vs,{color:"primary",component:"label",variant:"large"===t?"label1":"label2",className:yd.optionLabel,children:_.length>0?_.map((e=>e.name)).join(", "):i}),Ge("div",{className:yd.icons,children:[n&&We(Ns,{color:"primary",className:yd.icon}),We(y?Cs:Es,{color:"primary",className:yd.menuIcon})]})]})}),o&&We(Vs,{variant:"large"===t?"label1":"label2",component:"p",className:yd.supportingText,children:o}),We(lu,{id:"dropdown",children:We(ru,{handleRef:v,open:y,onClose:()=>E(!1),size:t,genericFontFamily:m.genericFontFamily,...h,children:u.map((e=>We(Ws,{size:t,tabIndex:0,onClick:x.bind(null,e),withIcon:c,label:e.name,selected:k(e),onKeyDown:t=>"Enter"===t.key&&x(e)},e.value)))})})]})};wd.classes=yd;const xd=r.createContext(null),kd={root:"lsd-icon-button",outlined:"lsd-icon-button--outlined",filled:"lsd-icon-button--filled",disabled:"lsd-icon-button--disabled",small:"lsd-icon-button--small",medium:"lsd-icon-button--medium",large:"lsd-icon-button--large"},_d=({size:e,disabled:t,variant:n,children:a,...o})=>{const i=bs(o),l=r.useContext(xd),s=e??(null==l?void 0:l.size)??"large",u=n??(null==l?void 0:l.variant)??"outlined",c=t??(null==l?void 0:l.disabled)??!1;return We("button",{...ws(o),className:Qe(i.className,o.className,kd.root,kd[s],kd[u],c&&kd.disabled),children:a})};_d.classes=kd;const Ed={root:"lsd-icon-button-group",outlined:"lsd-icon-button-group--outlined",filled:"lsd-icon-button-group--filled",disabled:"lsd-icon-button-group--disabled",small:"lsd-icon-button-group--small",medium:"lsd-icon-button-group--medium",large:"lsd-icon-button-group--large"},Sd=({size:e="large",disabled:t,variant:n="outlined",children:r,...a})=>{const o=bs(a);return We("div",{...ws(a),className:Qe(o.className,a.className,Ed.root,Ed[e],Ed[n],t&&Ed.disabled),children:We(xd.Provider,{value:{size:e,variant:n,disabled:t},children:r})})};Sd.classes=Ed;const Cd={root:"lsd-modal",small:"lsd-modal--small",medium:"lsd-modal--medium",large:"lsd-modal--large",xsmall:"lsd-modal--extra-small",modalContainer:"lsd-modal__container",header:"lsd-modal__header",title:"lsd-modal__title",subtitle:"lsd-modal__subtitle",titleAndSubtitleContainer:"lsd-modal__title-and-subtitle-container",closeIcon:"lsd-modal__close-icon"},Td=({isOpen:e,size:t="large",title:n,subtitle:r,onClose:a,children:o,...i})=>{const l=bs(i);return e?We("div",{...ws(i),className:Qe(l.className,Cd.root,Cd[t]),onClick:e=>{e.target===e.currentTarget&&a&&a()},children:Ge("div",{className:Qe(Cd.modalContainer),children:[Ge("div",{className:Cd.header,children:[Ge("div",{className:Cd.titleAndSubtitleContainer,children:[!!n&&We(Vs,{className:Cd.title,component:"div",variant:"small"===t?"h6":"h5",children:n}),!!r&&We(Vs,{className:Cd.subtitle,variant:"small"===t?"label2":"label1",component:"div",children:r})]}),We(_d,{onClick:a,className:Cd.closeIcon,size:"medium",children:We(Ps,{color:"primary"})})]}),o]})}):null};Td.classes=Cd;const Od={root:"lsd-modal-body"},Dd=({children:e,...t})=>{const n=bs(t);return We("div",{...ws(t),className:Qe(n.className,Od.root),children:e})};Dd.classes=Od;const Pd={root:"lsd-modal-footer"},Nd=({children:e,...t})=>{const n=bs(t);return We("div",{...ws(t),className:Qe(n.className,Pd.root),children:e})};Nd.classes=Pd;const Id={root:"lsd-number-input",label:"lsd-number-input__label",mainContainer:"lsd-number-input__main-container",inputContainer:"lsd-number-input__input-container",input:"lsd-number-input__input",errorIcon:"lsd-number-input__error-icon",plusMinusIcons:"lsd-number-input__plus-minus-icons",supportingText:"lsd-number-input__supporting-text",disabled:"lsd-number-input--disabled",error:"lsd-number-input--error",large:"lsd-number-input--large",medium:"lsd-number-input--medium",small:"lsd-number-input--small"},Ad=({label:e,size:t="large",error:n=!1,errorIcon:a=!1,supportingText:o,value:i,placeholder:l,defaultValue:s,disabled:u,onChange:c,icon:d,inputProps:f={},id:p="number-input",min:h=Number.MIN_SAFE_INTEGER,max:m=Number.MAX_SAFE_INTEGER,step:g=1,...v})=>{const b=r.useRef(null),y=bs(v),w=Ye({defaultValue:s,value:i,onChange:c,ref:b});return Ge("div",{"aria-disabled":u?"true":"false",...ws(v),className:Qe(v.className,y.className,Id.root,Id[t],u&&Id.disabled,n&&Id.error),children:[e&&We(Vs,{htmlFor:p,className:Id.label,variant:"label2",component:"label",children:e}),Ge("div",{className:Id.mainContainer,children:[We(_d,{onClick:()=>{if(u)return;const e=Math.max(h,Number(w.value||"0")-g);w.setValue(e.toString())},className:Id.plusMinusIcons,children:We(Hs,{color:"primary"})}),Ge("div",{className:Id.inputContainer,children:[We("input",{id:p,type:"number",placeholder:l,ref:b,className:Qe(f.className,Id.input),value:w.value||"",onChange:w.onChange,min:h,max:m,step:g,disabled:u,...f}),n&&!!a&&We("span",{className:Id.errorIcon,children:We(Ns,{color:"primary"})})]}),We(_d,{onClick:()=>{if(u)return;const e=Math.min(m,Number(w.value||"0")+g);w.setValue(e.toString())},className:Id.plusMinusIcons,children:We(_s,{color:"primary"})})]}),o&&We("div",{className:Qe(Id.supportingText),children:We(Vs,{variant:"label2",component:"p",children:o})})]})};Ad.classes=Id;const Ld=e=>{try{return[e(),void 0]}catch(t){return[void 0,t]}},Rd=({children:e})=>{const[t,n]=r.useState(!1);return r.useEffect((()=>{if("undefined"==typeof window)return;const e=document.querySelector("body");let t=e.querySelector("#lsd-presentation");return t||(t=document.createElement("div"),t.id="lsd-presentation"),e.appendChild(t),n(!0),()=>{Ld((()=>e.removeChild(t)))}}),[]),We(au.Provider,{value:{initialized:t},children:e})},jd={root:"lsd-quote",indentedInline:"lsd-quote--indented-inline",parentheses:"lsd-quote--parentheses",text:"lsd-quote__text"},Md=({mode:e="indented-line",children:t,...n})=>{const r=bs(n);return We(qe,{children:We("div",{...ws(n),className:Qe(r.className,n.className,jd.root,e&&"parentheses"===e?jd.parentheses:jd.indentedInline),children:We(Vs,{color:"primary",component:"label",variant:"label1",children:t})})})};Md.classes=jd;const Fd=r.createContext(null),Bd={root:"lsd-radio-button",input:"lsd-radio-button__input",label:"lsd-radio-button__label",disabled:"lsd-radio-button--disabled",large:"lsd-radio-button--large",medium:"lsd-radio-button--medium",small:"lsd-radio-button--small"},zd=({size:e="large",onChange:t,checked:n,defaultChecked:a,disabled:o=!1,value:i,name:l,inputProps:s={},children:u,...c})=>{const d=bs(c),f=r.useRef(null),p=r.useContext(Fd),h=(null==p?void 0:p.size)??e,m=(null==p?void 0:p.name)??l??"",g=p?p.value===i:n,v=Ye({value:g,defaultValue:a??!1,onChange:t,ref:f});return Ge(Vs,{color:"primary",variant:"large"===h?"label1":"label2",component:"label","aria-disabled":o?"true":"false",...ws(c),className:Qe(d.className,c.className,Bd.root,Bd[h],o&&Bd.disabled),children:[We("input",{ref:f,name:m,value:i,type:"radio",checked:v.value,onChange:e=>{p?p.setActiveRadioButton(e.target.value):v.onChange(e)},defaultChecked:a,className:Qe(s.className,Bd.input),...s}),v.value?We($s,{color:"primary",focusable:!1}):We(zs,{color:"primary",focusable:!1}),We("span",{className:Bd.label,children:u})]})};zd.classes=Bd;const $d={root:"lsd-radio-button-group",label:"lsd-radio-button-group__label"},Ud=({size:e="large",label:t,value:n,name:a,onChange:o,children:i,...l})=>{const s=bs(l),u=r.useRef(null),[c,d]=r.useState(n);return r.useEffect((()=>d(n)),[n]),We(Fd.Provider,{value:{value:c,setActiveRadioButton:e=>{o?o(e):d(e)},name:a,size:e},children:Ge("div",{ref:u,...ws(l),className:Qe(s.className,l.className,$d.root),children:[We(Vs,{component:"span",variant:"small"===e?"label2":"label1",className:$d.label,children:t&&t}),i]})})};Ud.classes=$d;const Hd=r.createContext(null),Vd={root:"lsd-tab-item",text:"lsd-tab-item--text",icon:"lsd-tab-item--icon",disabled:"lsd-tab-item--disabled",selected:"lsd-tab-item--selected",small:"lsd-tab-item--small",medium:"lsd-tab-item--medium",large:"lsd-tab-item--large",withIcon:"lsd-tab-item--with-icon"},qd=({name:e,size:t="large",selected:n=!1,inactive:a=!1,icon:o,children:i,...l})=>{const s=bs(l),u=r.useContext(Hd),c=(null==u?void 0:u.size)??t,d=u?u.activeTab===e:n;return Ge("button",{...ws(l),className:Qe(s.className,l.className,Vd.root,Vd[c],d&&Vd.selected,l.disabled&&Vd.disabled,!!o&&Vd.withIcon),onClick:t=>{l.onClick&&l.onClick(t),a||(null==u?void 0:u.setActiveTab)&&u.setActiveTab(e)},children:[We(Vs,{component:"span",className:Vd.text,variant:"small"===c?"label2":"label1",children:i}),o&&We("span",{className:Vd.icon,children:o})]})};qd.classes=Vd;const Wd={root:"lsd-table-body",toolbar:"lsd-table-body__toolbar",row:"lsd-table-body__row"},Gd=({options:e=[],size:t="large",buttonLabel:n="Button",toolbar:r,children:a,...o})=>{const i=bs(o);return Ge("div",{...ws(o),className:Qe(i.className,o.className,Wd.root),children:[r&&We("div",{className:Qe(Wd.toolbar),children:r}),We("table",{children:a})]})};Gd.classes=Wd;const Zd={root:"lsd-table-header"},Qd=({size:e="large",children:t,...n})=>{const r=bs(n);return We("div",{...ws(n),className:Qe(r.className,n.className,Zd.root),children:t})};Qd.classes=Zd;const Yd={root:"lsd-table",small:"lsd-table--small",medium:"lsd-table--medium",large:"lsd-table--large"},Xd=r.createContext(null),Kd=()=>r.useContext(Xd),Jd=({size:e="large",type:t="default",headerOptions:n,header:r,toolbar:a,children:o,...i})=>{const l=bs(i);return We(Xd.Provider,{value:{size:e,type:t,headerOptions:n},children:Ge("div",{...ws(i),className:Qe(l.className,Yd.root,Yd[e]),children:[We(Qd,{children:r}),We(Gd,{toolbar:a,options:n,children:o})]})})};Jd.classes=Yd;const ef={root:"lsd-table-item",large:"lsd-table-item--large",medium:"lsd-table-item--medium",small:"lsd-table-item--small"},tf=({size:e="large",children:t,...n})=>{const r=bs(n),a=Kd(),o=(null==a?void 0:a.size)??e;return We("td",{...ws(n),className:Qe(r.className,n.className,ef.root,ef[o]),children:t})};tf.classes=ef;const nf={root:"lsd-table-row"},rf=({size:e="large",type:t="default",children:n,...r})=>{const a=bs(r),o=Kd(),i=(null==o?void 0:o.type)??t;return Ge("tr",{...ws(r),className:Qe(a.className,r.className,nf.root),children:["checkbox"===i&&We("td",{className:ef.root,children:We(od,{})}),"radio"===i&&We("td",{className:ef.root,children:We(zd,{value:"1"})}),n]})};rf.classes=nf;const af=r.createContext(null),of=(e=0)=>{let t=e-1;return()=>(t++,t)},lf="undefined"==typeof DOMRectReadOnly?null:new DOMRectReadOnly(0,0,0,0),sf=of(),uf=(e,t)=>{const n=(()=>{const{observe:e,unobserve:t,ready:n}=r.useContext(af)??{};return r.useMemo((()=>({observe:e,unobserve:t,ready:n})),[e,t,n])})(),a=r.useMemo((()=>t??sf().toString()),[t]),o=((e,t)=>{var n;const a=r.useContext(af);return(null==(n=null==a?void 0:a.rect)?void 0:n[e])??t})(a)??lf;return r.useEffect((()=>{if(n&&n.ready)return e.current&&n.observe(a,e),()=>{n.unobserve(a)}}),[n.ready,e.current]),o},cf=(e,t,n,r)=>-1===e?t:n-(r+t),df=(e,t)=>{var n;const a=uf(e),[o,i]=r.useState((null==(n=null==e?void 0:e.current)?void 0:n.scrollLeft)??0),[l,s]=r.useState(0),[u,c]=r.useState(0),d=r.useRef(null);((e,t,n,a,o)=>{const i=r.useMemo((()=>"string"==typeof e?e:e()),[]),l=r.useMemo((()=>"function"==typeof t?t():t),[t]);r.useEffect((()=>{if((null==l?void 0:l.addEventListener)&&(null==l?void 0:l.removeEventListener))return l.addEventListener(i,n,a),()=>{l.removeEventListener(i,n,a)}}),[i,l])})("scroll",e.current,(e=>{i(e.target.scrollLeft)}),{passive:!0});r.useEffect((()=>{if(d.current&&clearTimeout(d.current),!e.current)return;const{scrollLeft:t,scrollWidth:n,clientWidth:r}=e.current;c(cf(1,t,n,r)),s(cf(-1,t,n,r))}),[a,o,null==t?void 0:t.deps]);const f=(n,r)=>{const{clientWidth:a,scrollLeft:o}=e.current,i=Array.from(e.current.childNodes).find((e=>e.getBoundingClientRect().x>=0)),l=Math.max(r??a/3,i?i.clientWidth:0);e.current.scrollTo({behavior:(null==t?void 0:t.scrollBehavior)??"smooth",left:o+l*n})};return r.useMemo((()=>({right:u,left:l,toRight:f.bind(null,1),toLeft:f.bind(null,-1)})),[u,l])},ff={root:"lsd-tabs",fullWidth:"lsd-tabs--full-width",withScrollControls:"lsd-tabs--with-scroll-controls",leftScrollControl:"lsd-tabs__left-scroll-control",rightScrollControl:"lsd-tabs__right-scroll-control"},pf=({size:e="large",fullWidth:t=!1,scrollControls:n=!1,onChange:a,activeTab:o,children:i,...l})=>{const s=bs(l),u=r.useRef(null),[c,d]=r.useState(o);r.useEffect((()=>d(o)),[o]);const f=df(u,{scrollBehavior:"smooth",deps:[i]}),p=0!==f.left||0!==f.right;return We(Hd.Provider,{value:{activeTab:c,setActiveTab:e=>{a?a(e):d(e)},size:e},children:Ge("div",{ref:u,...ws(l),className:Qe(s.className,l.className,ff.root,t&&ff.fullWidth,n&&p&&ff.withScrollControls),children:[n&&p&&We(qd,{inactive:!0,name:"Prev",disabled:0===f.left,onClick:()=>f.toLeft(),className:ff.leftScrollControl,children:We(js,{color:"primary"})}),i,n&&p&&We(qd,{inactive:!0,name:"Next",disabled:0===f.right,onClick:()=>f.toRight(),className:ff.rightScrollControl,children:We(Ms,{color:"primary"})})]})})};pf.classes=ff;const hf={root:"lsd-tag",label:"lsd-tag__label",outlined:"lsd-tag--outlined",filled:"lsd-tag--filled",disabled:"lsd-tag--disabled",small:"lsd-badge--small",large:"lsd-badge--large"},mf=({variant:e="outlined",disabled:t,icon:n,iconDirection:r="left",children:a,size:o="large",...i})=>{const l=bs(i);return Ge("div",{"aria-label":a,...ws(i),className:Qe(l.className,i.className,hf.root,hf[e],t&&hf.disabled,hf[o]),children:["left"===r&&n,We(Vs,{variant:"small"===o?"label2":"label1",className:hf.label,component:"span",children:a}),"right"===r&&n]})};mf.classes=hf;var gf=Hi,vf=0;var bf=function(e){var t=++vf;return gf(e)+t};const yf={root:"lsd-text-field",inputContainer:"lsd-text-field__input-container",label:"lsd-text-field__label",input:"lsd-text-field__input",icon:"lsd-text-field__icon",clearButton:"lsd-text-field__clear-button",supportingText:"lsd-text-field__supporting-text",disabled:"lsd-text-field--disabled",error:"lsd-text-field--error",large:"lsd-text-field--large",medium:"lsd-text-field--medium",small:"lsd-text-field--small",outlined:"lsd-text-field--outlined",underlined:"lsd-text-field--underlined"},wf=({size:e="large",label:t,icon:n,error:a=!1,errorIcon:o=!1,clearButton:i,supportingText:l,children:s,value:u,placeholder:c,defaultValue:d,disabled:f,onChange:p,inputProps:h={},labelProps:m={},variant:g="underlined",...v})=>{const b=bs(v),y=r.useRef(null),w=Ye({defaultValue:d,value:u,onChange:p,ref:y}),x=h.id||bf("TextField-");return Ge("div",{"aria-disabled":f?"true":"false",...ws(v),className:Qe(b.className,v.className,yf.root,yf[e],f&&yf.disabled,a&&yf.error,"outlined"===g?yf.outlined:yf.underlined),children:[t&&We(Vs,{variant:"label2",component:"label",htmlFor:x,...m,className:Qe(yf.label,m.className),children:t}),Ge("div",{className:yf.inputContainer,children:[We("input",{id:x,placeholder:c,ref:y,value:w.value,onChange:w.onChange,...h,className:Qe(h.className,yf.input)}),a&&o?We(Ns,{color:"primary",className:yf.icon}):i&&w.filled?We(_d,{disabled:f,onClick:()=>!f&&w.setValue(""),"aria-label":"clear",className:yf.clearButton,children:We(Ps,{color:"primary",className:yf.icon})}):n]}),l&&We("div",{className:Qe(yf.supportingText),children:We(Vs,{variant:"large"===e?"label1":"label2",component:"p",children:l})})]})};wf.classes=yf;const xf={vars:{lsd:(...e)=>`--${["lsd",...e].join("-")}`,typography:(e,t)=>xf.vars.lsd(e,t),color:(e,t)=>xf.vars.lsd(e,t),wrap:e=>`var(${e})`},define:(e,t)=>`${e}: ${t};`},kf=(()=>{const e={};return t=>{const n=t.name;return e[n]&&"undefined"!=typeof window||(e[n]=(e=>{const t=[],n=[],r=fs.map((()=>[])),a=fs.map((()=>[]));ps.forEach((n=>{ms.forEach((r=>{var a;const o=(null==(a=e.typography[n][r])?void 0:a.toString())??"unset";t.push(xf.define(xf.vars.typography(n,r),o))}))})),t.push(xf.define(xf.vars.lsd("typography","generic-font-family"),e.typographyGlobal.genericFontFamily)),fs.forEach(((t,n)=>{ps.forEach((r=>{ms.forEach((o=>{var i,l,s,u;const c=e.breakpoints[t].typography[r][o],d=n>0?null==(u=null==(s=null==(l=null==(i=e.breakpoints)?void 0:i[fs[n-1]])?void 0:l.typography)?void 0:s[r])?void 0:u[o]:e.typography[r][o];c&&c!==d&&a[n].push(xf.define(xf.vars.typography(r,o),c.toString()))}))}))}));{const{primary:n,secondary:r,...a}=e.palette,o=a;t.push(xf.define(xf.vars.color("theme","primary"),n),xf.define(xf.vars.color("theme","secondary"),r),...Object.keys(o).flatMap((e=>Object.keys(o[e]).map((t=>xf.define(xf.vars.color(e,t),o[e][t]))))))}e.spacing.map((e=>{const n=xf.vars.lsd("spacing",e.toString());t.push(xf.define(n,`${e}px`))})),fs.map(((t,o)=>{n.push(`@media (min-width: ${e.breakpoints[t].width}px) {\n :root {\n ${a[o].join("\n")}\n }\n\n ${r[o]}\n }`)}));const i=`\n ${t.join("\n")} \n\n ${n.join("\n")}\n `;return{cssVars:i,globalStyles:o.css(":root{",i,";}","")}})(t)),e[n]}})(),_f={name:"LSD",breakpoints:{xs:{width:0,typography:{display1:{},display2:{},display3:{},display4:{},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},body1:{},body2:{},body3:{},label1:{},label2:{},subtitle1:{},subtitle2:{},subtitle3:{},subtitle4:{}}},sm:{width:400,typography:{display1:{},display2:{},display3:{},display4:{},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},body1:{},body2:{},body3:{},label1:{},subtitle4:{},subtitle3:{},label2:{},subtitle1:{},subtitle2:{}}},md:{width:768,typography:{display1:{},display2:{},display3:{},display4:{},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},body1:{},body2:{},body3:{},label1:{},subtitle4:{},subtitle3:{},label2:{},subtitle1:{},subtitle2:{}}},lg:{width:1024,typography:{display1:{},display2:{},display3:{},display4:{},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},body1:{},body2:{},body3:{},label1:{},subtitle4:{},subtitle3:{},label2:{},subtitle1:{},subtitle2:{}}},xl:{width:1205,typography:{display1:{},display2:{},display3:{},display4:{},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},body1:{},body2:{},body3:{},label1:{},subtitle4:{},subtitle3:{},label2:{},subtitle1:{},subtitle2:{}}}},typography:{display1:{fontSize:"5.5rem",fontWeight:"normal",lineHeight:"6rem"},display2:{fontSize:"4rem",fontWeight:"normal",lineHeight:"4.5rem"},display3:{fontSize:"3.5rem",fontWeight:"normal",lineHeight:"4rem"},display4:{fontSize:"3rem",fontWeight:"normal",lineHeight:"3.5rem"},h1:{fontSize:"2.5rem",fontWeight:"normal",lineHeight:"3rem"},h2:{fontSize:"2rem",fontWeight:"normal",lineHeight:"2.5rem"},h3:{fontSize:"1.75rem",fontWeight:"normal",lineHeight:"2.25rem"},h4:{fontSize:"1.5rem",fontWeight:"normal",lineHeight:"2rem"},h5:{fontSize:"1.25rem",fontWeight:"normal",lineHeight:"1.75rem"},h6:{fontSize:"1rem",fontWeight:"normal",lineHeight:"1.5rem"},subtitle1:{fontSize:"1.125rem",fontWeight:"normal",lineHeight:"1.5rem"},subtitle2:{fontSize:"1rem",fontWeight:"normal",lineHeight:"1.5rem"},subtitle3:{fontSize:"0.875rem",fontWeight:"normal",lineHeight:"1.25rem"},subtitle4:{fontSize:"0.75rem",fontWeight:"normal",lineHeight:"1rem"},body1:{fontSize:"1rem",fontWeight:"normal",lineHeight:"1.5rem"},body2:{fontSize:"0.875rem",fontWeight:"normal",lineHeight:"1.25rem"},body3:{fontSize:"0.75rem",fontWeight:"normal",lineHeight:"1rem"},label1:{fontSize:"0.875rem",fontWeight:"normal",lineHeight:"1.25rem"},label2:{fontSize:"0.75rem",fontWeight:"normal",lineHeight:"1rem"}},typographyGlobal:{genericFontFamily:"sans-serif"},palette:{primary:"0, 0, 0",secondary:"255, 255, 255",surface:{primary:"255, 255, 255",secondary:"0, 0, 0"},text:{primary:"0, 0, 0",secondary:"255, 255, 255",tertiary:"0, 0, 0, 0.34"},border:{primary:"0, 0, 0",secondary:"255, 255, 255"},icon:{primary:"0, 0, 0",secondary:"255, 255, 255"}},spacing:[4,8,16,24,32,40,64,80,96,120],globalStyles:o.css("",""),cssVars:""},{cssVars:Ef,globalStyles:Sf}=kf(_f);_f.cssVars=Ef,_f.globalStyles=Sf;const Cf=of(),Tf=(e,t)=>ds(ps,(n=>({...t.typography[n],...e.typography[n]??{}}))),Of=(e,t)=>({...t.typographyGlobal,...e.typographyGlobal}),Df=(e,t)=>{const n=new Map;return Object.fromEntries(fs.reduce(((r,a,o)=>[...r,{...t.breakpoints[a],...e.breakpoints[a],...ds(["typography"],(a=>((e,t,n,r,a,o)=>"typography"===e?ds(a[e],(i=>{var l,s,u,c,d,f,p,h,m,g,v;const b=`${e}.${i}`,y=!0===o.get(b);return Object.keys((null==(u=null==(s=null==(l=r.breakpoints)?void 0:l[fs[n]])?void 0:s[e])?void 0:u[i])??{}).length>0&&o.set(b,!0),{...a[e][i],...r[e][i],...y?(null==(d=null==(c=null==t?void 0:t[n-1])?void 0:c[e])?void 0:d[i])??{}:null==(h=null==(p=null==(f=a.breakpoints)?void 0:f[fs[n]])?void 0:p[e])?void 0:h[i],...(null==(v=null==(g=null==(m=r.breakpoints)?void 0:m[fs[n]])?void 0:g[e])?void 0:v[i])??{}}})):{})(a,r,o,e,t,n)))}]),[]).map(((e,t)=>[fs[t],e])))},Pf=(e,t)=>{var n,r,a,o,i,l,s,u,c;const d=e.palette.primary??t.palette.primary,f=e.palette.secondary??t.palette.secondary;return{primary:d,secondary:f,surface:{primary:(null==(n=e.palette.surface)?void 0:n.primary)??f,secondary:(null==(r=e.palette.surface)?void 0:r.secondary)??d},border:{primary:(null==(a=e.palette.border)?void 0:a.primary)??d,secondary:(null==(o=e.palette.border)?void 0:o.secondary)??f},icon:{primary:(null==(i=e.palette.icon)?void 0:i.primary)??d,secondary:(null==(l=e.palette.icon)?void 0:l.secondary)??f},text:{primary:(null==(s=e.palette.text)?void 0:s.primary)??d,secondary:(null==(u=e.palette.text)?void 0:u.secondary)??f,tertiary:(null==(c=e.palette.text)?void 0:c.tertiary)??`${d}, 0.34`}}},Nf=(e,t=_f)=>{const n={name:e.name??(r=t.name,`${r}-${Cf()}`),typography:Tf(e,t),typographyGlobal:Of(e,t),breakpoints:Df(e,t),palette:Pf(e,t),globalStyles:o.css("",""),cssVars:"",spacing:e.spacing.length?e.spacing:t.spacing};var r;const{cssVars:a,globalStyles:i}=kf(n);return n.cssVars=a,n.globalStyles=i,n},If=Nf({name:"Light",breakpoints:{},typography:{},typographyGlobal:{},palette:{},spacing:[]},_f),Af={light:If,dark:Nf({name:"Dark",breakpoints:{},typography:{},typographyGlobal:{},palette:{primary:"255, 255, 255",secondary:"0, 0, 0"},spacing:[]},If)},Lf=o.css(".",uu.root,"{box-sizing:border-box;}.",uu.label,"{display:block;}.",uu.inputContainer,"{display:flex;justify-content:space-between;}.",uu.disabled,"{opacity:0.34;}.",uu.input,"{border:none;outline:none;font-size:14px;color:rgb(var(--lsd-text-primary));background:none;width:100%;}.",uu.input,":hover{outline:none;}.",uu.input,"::placeholder{color:rgb(var(--lsd-text-primary));opacity:0.3;}.",uu.icon,"{cursor:pointer;display:flex;align-items:center;}.",uu.error,"{text-decoration:line-through;}.",uu.large,"{width:208px;.",uu.label,"{margin:0 0 6px 18px;}.",uu.inputContainer,"{height:40px;}.",uu.input,"{padding:9px 17px;}.",uu.icon,"{padding:12px 13px;}}.",uu.medium,"{width:188px;.",uu.label,"{margin:0 0 6px 14px;}.",uu.inputContainer,"{height:32px;}.",uu.input,"{padding:5px 13px;}.",uu.icon,"{padding:8px 11px;}}.",uu.small,"{width:164px;.",uu.label,"{margin:0 0 6px 12px;}.",uu.inputContainer,"{height:28px;}.",uu.input,"{padding:5px 11px;}.",uu.icon,"{padding:6px 9px;}}.",uu.withIcon,"{}.",uu.outlined," .",uu.inputContainer,"{border:1px solid rgb(var(--lsd-border-primary));}.",uu.underlined," .",uu.inputContainer,"{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}.",uu.dropdownItemPlaceholder,"{opacity:0.5;white-space:pre;}",""),Rf=o.css(".",du.root,"{width:fit-content;box-sizing:border-box;display:flex;flex-direction:row;align-items:center;justify-content:center;border:1px solid rgb(var(--lsd-icon-primary));border-radius:20px;&:hover,&:focus{text-decoration:underline;cursor:pointer;}}.",du.large,"{padding:3px 11px;gap:12px;height:28px;}.",du.small,"{padding:3px 7px;gap:8px;height:24px;}.",du.filled,"{background-color:rgb(var(--lsd-icon-primary));.",du.label,"{color:rgb(var(--lsd-text-secondary));}svg{--lsd-icon-primary:var(--lsd-icon-secondary);}}.",du.outlined,"{color:rgb(var(--lsd-text-primary));}.",du.disabled,"{opacity:0.3;cursor:initial;pointer-events:none;}",""),jf=o.css(".",mu.root,"{}.",mu.list,"{display:flex;flex-direction:row;align-items:center;list-style-type:none;margin:0;padding:0;}.",mu.disabled,"{.",mu.list,"{opacity:0.34;cursor:initial;pointer-events:none;}}.",mu.listBox,"{display:flex;flex-direction:column;overflow:auto;border:1px solid rgb(var(--lsd-border-primary));margin-top:10px;position:absolute;width:auto!important;}.",mu.listBox,">li{cursor:pointer;&:not(:last-child){border-bottom:1px solid rgb(var(--lsd-border-primary));}&:hover,&:focus{text-decoration:underline;text-decoration-color:rgb(var(--lsd-border-primary));}}.",mu.listBox," li>a{width:164px;padding:5px 11px;}",""),Mf=o.css(".",pu.root,"{list-style-type:none;display:flex;align-items:center;}.",mu.list,">li:not(:last-child)::after{display:inline-block;margin-inline:12px;content:'/';}.",pu.itemLink,"{text-decoration:none;cursor:pointer;}.",pu.outlined,"{padding:3px 11px;border:1px solid rgb(var(--lsd-border-primary));}",pu.large,"{}",pu.small,"{}.",mu.root,":not(.",mu.disabled,"){.",pu.itemLink,"{&:hover,&:focus{text-decoration:underline;text-decoration-color:rgb(var(--lsd-border-primary));}}}",""),Ff=o.css(".",bu.root,"{width:auto;cursor:pointer;padding:6px 24px;}.",bu.disabled,"{cursor:default;opacity:0.34;}.",bu.large,"{padding:10px 40px;}.",bu.medium,"{padding:6px 24px;}.",bu.small,"{padding:6px 12px;}.",bu.root,":hover{&:not(.",bu.disabled,"){.",bu.text,"{text-decoration:underline;}}}.",bu.withIcon,"{display:flex;align-items:center;}.",bu.icon,"{display:flex;justify-content:center;align-items:center;height:100%;}.",bu.large,".",bu.withIcon,"{padding:10px 0px 10px 18px;.",bu.icon,"{width:42px;}}.",bu.medium,".",bu.withIcon,"{padding:6px 0px 6px 14px;.",bu.icon,"{width:38px;}}.",bu.small,".",bu.withIcon,"{padding:6px 0px 6px 12px;.",bu.icon,"{width:34px;}}.",bu.outlined,"{background:none;border:1px solid rgb(var(--lsd-border-primary));.",bu.text,"{color:rgb(var(--lsd-text-primary));}}.",bu.filled,"{background:rgb(var(--lsd-surface-secondary));border:1px solid rgb(var(--lsd-border-primary));.",bu.text,"{color:rgb(var(--lsd-text-secondary));}}",""),Bf=o.css(".",Sc.root,"{border:1px solid rgb(var(--lsd-border-primary));visibility:hidden;position:absolute!important;top:0;left:0;opacity:0;visibility:hidden;margin:0;padding:0;box-sizing:border-box;background:rgb(var(--lsd-surface-primary));user-select:none;}.",Sc.container,"{display:flex;flex-direction:column;padding:8px;}.",Sc.open,"{opacity:1;visibility:visible;}.",Sc.header,"{display:flex;justify-content:center;align-items:center;height:32px;margin-bottom:8px;}.",Sc.weekDay,"{display:flex;justify-content:center;align-items:center;aspect-ratio:1/1;margin-bottom:4px;}.",Sc.changeYear,"{position:relative;display:flex;justify-content:center;align-items:center;padding:2px 0xp 2px 8px;gap:6px;border:1px solid transparent;}.",Sc.changeYearActive,"{.",Sc.yearAndIcon,"{border:1px solid rgb(var(--lsd-border-primary));}}.",Sc.changeYearIconContainer,"{display:flex;justify-content:center;align-items:center;cursor:pointer;border:none;}.",Sc.month,"{margin-right:8px;}.",Sc.monthAndYear,"{display:flex;align-items:center;justify-content:center;}.",Sc.dayContainer,"{cursor:pointer;background:transparent;position:relative;box-sizing:border-box;border:1px solid transparent;}.",Sc.day,"{aspect-ratio:1/1;display:flex;justify-content:center;align-items:center;}.",Sc.day,":hover{cursor:pointer;text-decoration:underline;text-decoration-color:rgb(var(--lsd-border-primary));}.",Sc.day," label:hover{cursor:pointer;}.",Sc.daySelected,"{border:1px solid rgb(var(--lsd-border-primary));}.",Sc.dayDisabled,"{opacity:0.3;cursor:default;}.",Sc.todayIndicator,"{position:absolute;left:50%;transform:translateX(-50%);bottom:2px;}.",Sc.disabled,"{pointer-events:none;border:1px solid rgba(var(--lsd-border-primary), 0.3);label{opacity:0.3;}.",Sc.button,"{opacity:0.3;}.",Sc.daySelected,"{opacity:0.3;}}.",Sc.button,"{border:1px solid rgb(var(--lsd-border-primary));cursor:pointer;background:transparent;width:32px;height:32px;display:flex;align-items:center;justify-content:center;position:absolute;}.",Sc.nextMonthButton,"{top:8px;right:8px;}.",Sc.previousMonthButton,"{top:8px;left:8px;}.",Sc.dayBorderLeft,"{border-left:1px double rgb(var(--lsd-border-primary));}.",Sc.dayBorderRight,"{border-right:1px double rgb(var(--lsd-border-primary));}.",Sc.dayBorderLeftAndRight,"{border-left:1px double rgb(var(--lsd-border-primary));border-right:1px double rgb(var(--lsd-border-primary));}.",Sc.dayBorderTopAndBottom,"{border-top:1px double rgb(var(--lsd-border-primary));border-bottom:1px double rgb(var(--lsd-border-primary));}.",Sc.monthTable,"{border-collapse:collapse;}.",Sc.yearDropdown,"{box-sizing:border-box;position:absolute;top:100%;left:0;max-height:200px;overflow-y:auto;width:100%;border:1px solid rgb(var(--lsd-border-primary));border-top:none;z-index:1;.",Sc.year,"{border-bottom:1px solid rgb(var(--lsd-border-primary));}}.",Sc.yearDropdownHidden,"{visibility:hidden;}.",Sc.year,"{display:flex;cursor:pointer;transition:background-color 0.2s;align-items:center;background:rgb(var(--lsd-surface-primary));:hover{text-decoration:underline;}}.",Sc.yearAndIcon,"{border:1px solid rgb(var(--lsd-border-primary));}.",Sc.large,"{.",Sc.year,"{padding:6px 0px 6px 14px;}.",Sc.changeYearIconContainer,"{width:32px;}}.",Sc.medium,"{.",Sc.year,"{padding:6px 0px 6px 12px;}.",Sc.changeYearIconContainer,"{width:28px;}}.",Sc.small,"{.",Sc.year,"{padding:6px 0px 6px 12px;}.",Sc.changeYearIconContainer,"{width:28px;}}",""),zf=o.css(".",Qc.root,"{box-sizing:border-box;display:flex;flex-direction:column;}.",Qc.root,">.",ed.root,"{margin-bottom:-1px;}.",Qc.large,"{}.",Qc.medium,"{}.",Qc.small,"{}",""),$f=o.css(".",Kc.root,"{box-sizing:border-box;padding:14px 22px;border:1px solid rgb(var(--lsd-border-primary));}",""),Uf=o.css(".",ed.root,"{box-sizing:border-box;padding:10px 18px;text-align:center;border:1px solid rgb(var(--lsd-border-primary));}.",ed.title,"{overflow:hidden;word-break:break-all;}.",ed.large,"{padding:10px 18px;}.",ed.medium,"{padding:6px 14px;}.",ed.small,"{padding:6px 12px;}",""),Hf=o.css(".",ad.root,"{position:relative;display:flex;flex-direction:row;align-items:center;}.",ad.input,"{opacity:0;position:absolute;left:0;top:0;padding:0;margin:0;width:100%;height:100%;}.",ad.root,":not(.",ad.disabled,"){&:hover,&.",ad.focused,"{text-decoration:underline;}.",ad.input,"{cursor:pointer;}}.",ad.disabled,"{opacity:0.34;}.",ad.label,"{margin-left:18px;}.",ad.large,"{.",ad.label,"{margin-left:18px;}}.",ad.medium,"{.",ad.label,"{margin-left:14px;}}.",ad.small,"{.",ad.label,"{margin-left:12px;}}",""),Vf=o.css(".",id.root,"{display:flex;flex-direction:column;gap:6px;width:fit-content;}.",id.label,"{margin-bottom:6px;}",""),qf=o.css(".",cd.root,"{box-sizing:border-box;display:flex;flex-direction:column;}.",cd.open,"{.",cd.content,"{border-top:1px solid transparent;}}.",cd.content,"{border:1px solid rgb(var(--lsd-border-primary));}",""),Wf=o.css(".",sd.root,"{box-sizing:border-box;}.",sd.root,":not(.",sd.disabled,"){.",sd.trigger,"{&:hover{.",sd.label,"{text-decoration:underline;}}}}.",sd.trigger,"{width:100%;display:flex;flex-direction:row;align-items:center;justify-content:space-between;cursor:pointer;background:none;border:1px solid rgb(var(--lsd-border-primary));&:focus{outline:none;}}.",sd.label,"{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:auto;}.",sd.icons,"{display:flex;flex-direction:row;align-items:center;justify-content:flex-end;}.",sd.icon,"{margin-right:8px;}.",sd.menuIcon,"{}.",sd.disabled,"{.",sd.trigger,"{opacity:0.34;cursor:initial;}}.",sd.large,"{.",sd.trigger,"{width:299px;height:40px;padding:9px 17px;}}.",sd.medium,"{.",sd.trigger,"{width:270px;height:32px;padding:5px 13px;}}.",sd.small,"{.",sd.trigger,"{width:235px;height:28px;padding:5px 11px;}}",""),Gf=o.css(".",fd.root,"{width:auto;box-sizing:border-box;}.",fd.label,"{display:block;}.",fd.icon,"{position:absolute;right:0;cursor:pointer;display:flex;align-items:center;background-color:rgb(var(--lsd-surface-primary));}.",fd.icon,":focus{background:blue;background-color:pink;border:1px solid rgb(var(--lsd-border-primary));}.",fd.noIcon,"{position:absolute;right:0;background-color:rgb(var(--lsd-surface-primary));padding:12px;}.",fd.outlined,"{border:1px solid rgb(var(--lsd-border-primary));}.",fd.underlined,"{border-bottom:1px solid rgb(var(--lsd-border-primary));}.",fd.inputContainer,"{position:relative;display:flex;align-items:center;justify-content:space-between;}.",fd.disabled,"{opacity:0.34;}.",fd.input,"{border:none;outline:none;font-size:14px;color:rgb(var(--lsd-text-primary));background:none;width:100%;opacity:0.4;transition:opacity 0.2s ease-in-out;}.",fd.input,"::-webkit-inner-spin-button,.",fd.input,"::-webkit-calendar-picker-indicator{display:none;-webkit-appearance:none;}.",fd.input,":hover{outline:none;}.",fd.supportingText,"{position:absolute;}.",fd.large,"{width:208px;.",fd.label,"{margin:0 0 6px 18px;}.",fd.inputContainer,"{height:40px;}.",fd.input,"{padding:9px 0px 9px 17px;}.",fd.icon,"{padding:12px 13px;}.",fd.supportingText,"{margin:6px 18px 0 18px;}}.",fd.medium,"{width:188px;.",fd.label,"{margin:0 0 6px 14px;}.",fd.inputContainer,"{height:32px;}.",fd.input,"{padding:5px 11px 5px 13px;}.",fd.icon,"{padding:8px 11px;}.",fd.supportingText,"{margin:6px 14px 0 14px;}}.",fd.small,"{width:164px;.",fd.label,"{margin:0 0 6px 12px;}.",fd.inputContainer,"{height:28px;}.",fd.input,"{padding:5px 9px 5px 11px;font-size:12px;}.",fd.icon,"{padding:6px 9px;}.",fd.supportingText,"{margin:6px 12px 0 12px;}}.",fd.input,":invalid,.",fd.inputFilled,"{color:rgb(var(--lsd-border-primary));opacity:1;}.",fd.error," .",fd.input,"::-webkit-datetime-edit-year-field,.",fd.error," .",fd.input,"::-webkit-datetime-edit-month-field,.",fd.error," .",fd.input,"::-webkit-datetime-edit-day-field{text-decoration:line-through;}@supports not selector(::-webkit-datetime-edit-day-field){.",fd.error," .",fd.input,"{text-decoration:line-through;}}",""),Zf=o.css(".",hd.root,"{width:fit-content;}.",hd.calendar,"{border-top:none!important;}.",hd.large,"{.",fd.large,"{width:318px;}}.",hd.medium,"{.",fd.medium,"{width:290px;}}.",hd.small,"{.",fd.small,"{width:262px;}}",""),Qf=o.css(".",yd.root,"{}.",yd.root,":not(.",yd.disabled,"):not(\n .",yd.error,"\n ){.",yd.trigger,"{&:hover,&:focus{.",yd.optionLabel,"{text-decoration:underline;}}}}.",yd.label,"{display:block;}.",yd.buttonContainer,"{display:flex;justify-content:space-between;}.",yd.trigger,"{width:100%;display:flex;flex-direction:row;align-items:center;justify-content:space-between;border:none;cursor:pointer;background:none;&:focus{outline:none;}}.",yd.optionLabel,"{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.",yd.icons,"{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:8px;}.",yd.icon,"{display:flex;align-items:center;}.",yd.menuIcon,"{}.",yd.supportingText,"{margin:6px 14px;}.",yd.error,"{.",yd.optionLabel,"{text-decoration:line-through;}}.",yd.disabled,"{opacity:0.34;cursor:initial;}.",yd.large,"{width:208px;&.",yd.error,"{width:230px;}.",yd.label,"{margin:0 0 6px 18px;}.",yd.buttonContainer,"{height:40px;}.",yd.trigger,"{padding:10px 0px 10px 18px;}.",yd.icons,"{padding:0px 14px;}}.",yd.medium,"{width:188px;&.",yd.error,"{width:210px;}.",yd.label,"{margin:0 0 6px 14px;}.",yd.buttonContainer,"{height:32px;}.",yd.trigger,"{padding:6px 0px 6px 14px;}.",yd.icons,"{padding:0px 12px;}}.",yd.small,"{width:164px;&.",yd.error,"{width:186px;}.",yd.label,"{margin:0 0 6px 12px;}.",yd.buttonContainer,"{height:28px;}.",yd.trigger,"{padding:6px 0px 6px 12px;}.",yd.icons,"{padding:0px 10px;}}.",yd.outlined,"{.",yd.buttonContainer,"{border:1px solid rgb(var(--lsd-border-primary));}}.",yd.underlined,"{.",yd.buttonContainer,"{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}}",""),Yf=o.css(".",qs.root,"{width:100%;box-sizing:border-box;display:flex;flex-direction:row;align-items:center;border:1px solid rgb(var(--lsd-border-primary));:not(.",qs.disabled,"){cursor:pointer;&:hover,&:focus{outline:none;.",qs.label,"{text-decoration:underline;}}}}.",qs.label,"{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.",qs.disabled,"{opacity:0.34;}.",qs.icon,"{margin-right:18px;flex-shrink:0;}.",qs.small,"{padding:5px 9px;height:28px;}.",qs.medium,"{padding:5px 11px;height:32px;}.",qs.large,"{padding:5px 13px;height:40px;}",""),Xf=o.css(".",kd.root,"{display:flex;flex-direction:row;align-items:center;justify-content:center;cursor:pointer;background:none;padding:0;border:1px solid rgb(var(--lsd-border-primary));}.",kd.filled,"{background-color:rgb(var(--lsd-icon-primary));svg{--lsd-icon-primary:var(--lsd-icon-secondary);}}.",kd.outlined,"{}.",kd.disabled,"{opacity:0.34;cursor:default;}.",kd.large,"{width:40px;height:40px;}.",kd.medium,"{width:32px;height:32px;}.",kd.small,"{width:28px;height:28px;}",""),Kf=o.css(".",Ed.root,"{display:flex;flex-direction:row;}.",Ed.outlined," .",kd.root,":not(:last-child){border-right:none;}",""),Jf=o.css(".",xs.root,"{}.",xs.primary,"{&.",xs.filled,"{&,*{fill:rgb(var(--lsd-icon-primary));}}$.",xs.stroked,"{&,*{fill:rgb(var(--lsd-icon-primary));}}}.",xs.secondary,"{&.",xs.filled,"{&,*{fill:rgb(var(--lsd-icon-secondary));}}$.",xs.stroked,"{&,*{fill:rgb(var(--lsd-icon-secondary));}}}",""),ep=o.css(".",tu.root,"{position:absolute;top:0;left:0;opacity:0;visibility:hidden;margin:0;padding:0;box-sizing:border-box;background:rgb(var(--lsd-surface-primary));overflow:auto;border:1px solid rgb(var(--lsd-border-primary));border-top:0;}.",tu.root,">div{border:0;&:not(:last-child){border-bottom:1px solid rgb(var(--lsd-border-primary));}}.",tu.open,"{opacity:1;visibility:visible;}.",tu.large,"{max-height:220px;}.",tu.medium,"{max-height:176px;}.",tu.small,"{max-height:154px;}",""),tp=o.css(".",jd.root,"{color:rgb(var(--lsd-text-primary));white-space:pre-wrap;}.",jd.indentedInline,"{border-left:1px solid rgb(var(--lsd-border-primary));padding:4px 8px 4px 28px;}.",jd.parentheses,"{padding:0px;text-align:center;}.",jd.parentheses,"::before{content:'***';}.",jd.parentheses,"::after{content:'***';}",""),np=o.css(".",Bd.root,"{position:relative;display:flex;flex-direction:row;align-items:center;}.",Bd.input,"{opacity:0;position:absolute;left:0;top:0;padding:0;margin:0;width:100%;height:100%;}.",Bd.root,":not(.",Bd.disabled,"){&:hover{text-decoration:underline;}.",Bd.input,"{cursor:pointer;}}.",Bd.disabled,"{opacity:0.34;}.",Bd.label,"{margin-left:18px;}.",Bd.large,"{.",Bd.label,"{margin-left:18px;}}.",Bd.medium,"{.",Bd.label,"{margin-left:14px;}}.",Bd.small,"{.",Bd.label,"{margin-left:12px;}}",""),rp=o.css(".",$d.root,"{display:flex;flex-direction:column;gap:6px;width:fit-content;}.",$d.label,"{margin-bottom:6px;}",""),ap=o.css(".",Vd.root,"{background:rgb(var(--lsd-surface-primary));border:1px solid transparent;cursor:pointer;display:flex;flex-direction:row;align-items:center;justify-content:center;box-sizing:border-box;&:hover{text-decoration:underline;}&:not(",Vd.selected,"){border-bottom:1px solid rgb(var(--lsd-border-primary));}}.",Vd.text,"{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.",Vd.icon,"{margin-left:14px;}.",Vd.selected,"{border:1px solid rgb(var(--lsd-border-primary));&:hover{text-decoration:none;}}.",Vd.withIcon,"{justify-content:space-between;}.",Vd.disabled,"{cursor:default;opacity:0.34;&:hover{text-decoration:none;}}.",Vd.small,"{padding:6px 12px;.",Vd.icon,"{margin-left:10px;}}.",Vd.medium,"{padding:6px 14px;.",Vd.icon,"{margin-left:12px;}}.",Vd.large,"{padding:10px 18px;.",Vd.icon,"{margin-left:14px;}}",""),op=o.css(".",Yd.root,"{box-sizing:border-box;display:flex;flex-direction:column;}.",Yd.root,">.",Zd.root,"{margin-bottom:-1px;}.",Yd.large,"{}.",Yd.medium,"{}.",Yd.small,"{}",""),ip=o.css(".",Wd.root,"{table{border-collapse:collapse;text-align:center;table-layout:fixed;width:100%;height:auto;}table tr:first-of-type td label:has(input[type='radio']){display:none;}}.",Wd.toolbar,"{box-sizing:border-box;padding:10px;border:1px solid rgb(var(--lsd-border-primary));border-bottom:none;display:flex;justify-content:space-between;}",""),lp=o.css(".",Zd.root,"{box-sizing:border-box;border:1px solid rgb(var(--lsd-border-primary));}",""),sp=o.css(".",ef.root,"{border:1px solid rgb(var(--lsd-border-primary));}.",ef.root,":has(> label){width:40px;input{position:relative;width:14px;height:14px;margin:auto;}span{margin-left:14px!important;}}.",ef.large,"{padding:10px;}.",ef.medium,"{padding:6px 8px;}.",ef.small,"{padding:6px;}",""),up=o.css(".",nf.root,"{align-items:center;}",""),cp=o.css(".",ff.root,"{display:flex;flex-direction:row;overflow:auto;width:fit-content;max-width:100%;border-bottom:1px solid rgb(var(--lsd-border-primary));&>*{flex-shrink:0;}.",Vd.root,"{border-bottom:none;}}.",ff.fullWidth,"{width:100%;justify-content:stretch;&>*{width:100%;flex:1 0;}}.",ff.root,"{-ms-overflow-style:none;scrollbar-width:none;&::-webkit-scrollbar{display:none;}}.",ff.leftScrollControl,"{left:0;}.",ff.rightScrollControl,"{right:0;}.",ff.rightScrollControl,",.",ff.leftScrollControl,"{top:0;flex:0 1;position:sticky;}",""),dp=o.css(".",hf.root,"{width:fit-content;display:flex;flex-direction:row;align-items:center;justify-content:center;box-sizing:border-box;border:1px solid rgb(var(--lsd-icon-primary));&:hover,&:focus{text-decoration:underline;cursor:pointer;}}.",hf.large,"{padding:3px 11px;gap:12px;height:28px;}.",hf.small,"{padding:3px 7px;gap:8px;height:24px;}.",hf.filled,"{background-color:rgb(var(--lsd-icon-primary));.",hf.label,"{color:rgb(var(--lsd-text-secondary));}svg{--lsd-icon-primary:var(--lsd-icon-secondary);}}.",hf.outlined,"{color:rgb(var(--lsd-text-primary));}.",hf.disabled,"{opacity:0.3;cursor:initial;pointer-events:none;}",""),fp=o.css(".",yf.root,"{box-sizing:border-box;display:flex;flex-direction:column;}.",yf.inputContainer,"{display:flex;align-items:center;justify-content:space-between;}.",yf.disabled,"{opacity:0.34;}.",yf.input,"{border:none;outline:none;font-size:14px;color:rgb(var(--lsd-text-primary));background:none;width:100%;}.",yf.input,":hover{outline:none;}.",yf.input,"::placeholder{color:rgb(var(--lsd-text-primary));opacity:0.3;}.",yf.error," .",yf.input,"{text-decoration:line-through;}.",yf.supportingText,"{width:fit-content;}.",yf.large,"{width:208px;&>*{padding:10px 14px 10px 18px;}}.",yf.medium,"{width:188px;&>*{padding:6px 12px 6px 14px;}}.",yf.small,"{width:164px;&>*{padding:6px 10px 6px 12px;}}.",yf.label,"{padding-top:0;padding-bottom:6px;}.",yf.supportingText,"{padding-bottom:0;padding-top:6px;}.",yf.outlined," .",yf.inputContainer,"{border:1px solid rgb(var(--lsd-border-primary));}.",yf.underlined," .",yf.inputContainer,"{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}.",yf.clearButton,"{padding:0;width:auto;height:auto;margin:0;border:0;}.",yf.icon,"{}",""),pp=o.css("body *{font-family:var(--lsd-typography-generic-font-family);}.",gs.root,"{color:rgb(var(--lsd-text-primary));}.",gs.sansSerif,"{&,*{font-family:sans-serif;}}.",gs.serif,"{&,*{font-family:serif;}}.",gs.monospace,"{&,*{font-family:monospace;}}",ps.map((e=>o.css((e=>[...hs[e]??[],`.${gs[e]}`].join(", "))(e),"{color:rgb(var(--lsd-text-primary));font-weight:var(--lsd-",e,"-fontWeight);font-size:var(--lsd-",e,"-fontSize);line-height:var(--lsd-",e,"-lineHeight);}","")))," .",gs.primary,"{color:rgb(var(--lsd-text-primary));}.",gs.secondary,"{color:rgb(var(--lsd-text-secondary));}input{color:rgb(var(--lsd-text-primary));font-size:var(--lsd-body1-fontSize);font-weight:var(--lsd-body1-fontWeight);}h1,h2,h3,h4,h5,h6,p,span{margin:0;}",""),hp={root:"lsd-toast",inlineContainer:"lsd-toast__inline-container",columnContainer:"lsd-toast__column-container",large:"lsd-toast--large",medium:"lsd-toast--medium",small:"lsd-toast--small",icon:"lsd-toast__icon",textContainer:"lsd-toast__text-container",columnIconContainer:"lsd-toast__column-icon-container",inlineIconContainer:"lsd-toast__inline-icon-container",title:"lsd-toast__title",information:"lsd-toast__information",inlineButtonContainer:"lsd-toast__inline-button-container",columnButtonContainer:"lsd-toast__column-button-container",buttonContainer:"lsd-toast__button-container",closeButton:"lsd-toast__close-button"},mp={toastContainer:"lsd-toast-provider__toast-container",topLeft:"lsd-toast-provider__toast--top-left",topCenter:"lsd-toast-provider__toast--top-center",topRight:"lsd-toast-provider__toast--top-right",bottomLeft:"lsd-toast-provider__toast--bottom-left",bottomCenter:"lsd-toast-provider__toast--bottom-center",bottomRight:"lsd-toast-provider__toast--bottom-right"},gp=[Ff,Xf,Kf,pp,Jf,ap,cp,ep,Qf,Yf,jf,Mf,zf,Uf,$f,dp,fp,Hf,Lf,tp,qf,Wf,Vf,Rf,np,rp,op,lp,ip,sp,up,o.css(".",Id.root,"{width:auto;box-sizing:border-box;}.",Id.mainContainer,":hover{text-decoration:underline;}.",Id.error,"{.",Id.mainContainer,"{text-decoration:line-through;}}.",Id.label,"{display:block;}.",Id.plusMinusIcons,"{display:flex;flex-shrink:0;}.",Id.inputContainer,"{box-sizing:border-box;border:1px solid rgb(var(--lsd-border-primary));border-left:0px;border-right:0px;}.",Id.errorIcon,"{cursor:pointer;display:flex;align-items:center;padding:10px 8px;}.",Id.inputContainer,"{display:flex;align-items:center;justify-content:space-between;}.",Id.disabled,"{opacity:0.34;}.",Id.mainContainer,"{display:flex;align-items:center;}.",Id.input,"{border:none;outline:none;font-size:14px;color:rgb(var(--lsd-text-primary));background:none;text-align:center;padding:0 4px;}.",Id.input,"::-webkit-inner-spin-button{display:none;-webkit-appearance:none;}.",Id.input,":hover{outline:none;}.",Id.supportingText,"{position:absolute;}.",Id.large,"{.",Id.label,"{margin:0 0 6px 18px;}.",Id.inputContainer,"{height:40px;}.",Id.input,"{width:62px;}.",Id.plusMinusIcons,"{height:40px;width:40px;}.",Id.supportingText,"{margin:6px 18px 0 18px;}}.",Id.medium,"{.",Id.label,"{margin:0 0 6px 14px;}.",Id.inputContainer,"{height:32px;}.",Id.input,"{width:58px;}.",Id.plusMinusIcons,"{height:32px;width:32px;}.",Id.supportingText,"{margin:6px 14px 0 14px;}}.",Id.small,"{.",Id.label,"{margin:0 0 6px 12px;}.",Id.inputContainer,"{height:28px;}.",Id.input,"{width:50px;}.",Id.plusMinusIcons,"{height:28px;width:28px;}.",Id.supportingText,"{margin:6px 12px 0 12px;}}",""),o.css(".",Cd.root,"{box-sizing:border-box;display:flex;flex-direction:column;position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0, 0, 0, 0.5);display:flex;justify-content:center;align-items:center;z-index:9999;}.",Cd.modalContainer,"{position:relative;background:rgb(var(--lsd-surface-primary));padding:20px;max-width:90%;box-sizing:border-box;border:1px solid rgb(var(--lsd-border-primary));}.",Cd.header,"{display:flex;justify-content:space-between;align-items:center;}.",Cd.title,"{}.",Cd.subtitle,"{}.",Cd.closeIcon,"{position:absolute;top:8px;right:8px;cursor:pointer;}.",Cd.titleAndSubtitleContainer,"{display:flex;flex-direction:column;}.",Cd.large,"{.",Cd.modalContainer,"{min-width:960px;}}.",Cd.medium,"{.",Cd.modalContainer,"{min-width:768px;}}.",Cd.small,"{.",Cd.modalContainer,"{min-width:614px;}}.",Cd.xsmall,"{.",Cd.modalContainer,"{min-width:490px;}}",""),o.css(".",Pd.root,"{display:flex;}",""),o.css(".",Od.root,"{margin:18px 0;}",""),Zf,Gf,Bf,o.css(".",hp.root,"{box-sizing:border-box;display:inline-flex;align-items:center;background:rgb(var(--lsd-surface-primary));border:1px solid rgb(var(--lsd-border-primary));padding:8px;height:fit-content;}.",hp.inlineButtonContainer,"{flex-shrink:0;}.",hp.columnButtonContainer,"{margin-top:18px;margin-bottom:6px;}.",hp.inlineContainer,"{display:flex;align-items:center;justify-content:space-between;flex-grow:1;}.",hp.columnContainer,"{display:flex;flex-direction:column;justify-content:space-between;}.",hp.textContainer,"{display:flex;flex-direction:column;color:rgb(var(--lsd-text-secondary));padding-left:12px;}.",hp.title,"{position:relative;}.",hp.information,"{margin-top:4px;}.",hp.buttonContainer,"{min-height:28px;min-width:60px;width:fit-content;padding:0px 12px;}.",hp.closeButton,"{margin-bottom:auto;flex-shrink:0;height:28px;width:28px;margin-left:auto;}.",hp.columnIconContainer,"{display:flex;justify-content:center;margin-bottom:auto;position:relative;top:4px;padding-left:4px;}.",hp.inlineIconContainer,"{display:flex;align-items:center;justify-content:center;padding-left:4px;}.",hp.icon,"{position:relative;}.",hp.large,"{width:364px;}.",hp.medium,"{width:336px;}.",hp.small,"{width:296px;.",hp.icon,"{top:0px;}}",""),o.css(".",mp.toastContainer,"{position:fixed;transition:all 230ms cubic-bezier(0.21, 1.02, 0.73, 1);z-index:9999;}.",mp.topLeft,",.",mp.topCenter,",.",mp.topRight,"{top:0;}.",mp.bottomLeft,",.",mp.bottomCenter,",.",mp.bottomRight,"{bottom:0;}.",mp.topCenter,",.",mp.bottomCenter,"{left:50%;}.",mp.topRight,",.",mp.bottomRight,"{right:0;}",""),o.css(".",wu.root,"{display:flex;flex-direction:row;>*:not(:last-child){&.",bu.outlined,",.",bu.outlined,"{border-right:none;}}}",""),o.css(".",vd.root,"{box-sizing:border-box;.",fd.outlined,"{border:none;}.",fd.icon,"{padding:8px;}}.",vd.label,"{display:block;}.",vd.inputContainer,"{box-sizing:border-box;display:flex;align-items:center;border:1px solid transparent;}.",vd.calendar,"{border-top:none!important;.",Vc.arrowTip,"{transition:left 0.2s ease-in-out;}}.",vd.openCalendar,"{.",vd.inputContainer,"{border-bottom:1px solid rgb(var(--lsd-border-primary));}}.",vd.icon,"{cursor:pointer;display:flex;align-items:center;justify-content:center;flex-grow:1;padding:0 10px;}.",vd.disabled,"{opacity:0.3;}.",vd.supportingText,"{position:absolute;}.",vd.large,"{width:318px;.",fd.large,"{width:156px;}.",fd.input,"{padding-right:0;}.",fd.icon,"{padding:11px 12px;}.",vd.label,"{margin:0 0 6px 18px;}.",vd.inputContainer,"{height:40px;}.",vd.supportingText,"{margin:6px 18px 0 18px;}}.",vd.medium,"{width:290px;.",fd.medium,"{width:142px;}.",fd.input,"{padding-right:0;}.",fd.icon,"{padding:7px 8px;}.",vd.label,"{margin:0 0 6px 14px;}.",vd.inputContainer,"{height:32px;}.",vd.supportingText,"{margin:6px 14px 0 14px;}}.",vd.small,"{width:262px;.",fd.small,"{width:128px;}.",fd.input,"{padding-right:0;}.",fd.icon,"{padding:5px 7px;}.",vd.label,"{margin:0 0 6px 12px;}.",vd.inputContainer,"{height:28px;}.",vd.supportingText,"{margin:6px 12px 0 12px;}}.",vd.separator,"{margin-left:3px;width:1px;height:100%;}.",vd.separator,"{border-left:1px solid transparent;}.",vd.outlined,"{border:1px solid rgb(var(--lsd-border-primary));.",vd.separator,"{border-left:1px solid rgb(var(--lsd-border-primary));}}",""),o.css(".",Vc.root,"{border:1px solid rgb(var(--lsd-border-primary));position:relative;}.",Vc.arrowTip,"{border:1px solid rgb(var(--lsd-border-primary));position:absolute;background:rgb(var(--lsd-surface-primary));}.",Vc.content,"{background:rgb(var(--lsd-surface-primary));width:100%;height:100%;position:relative;z-index:1;}","")],vp=({theme:e=Af.light})=>{const t=r.useMemo((()=>gp.map((t=>"function"==typeof t?t(e):t)).map((e=>We(o.Global,{styles:e},e.name)))),[e]);return We(qe,{children:t})},bp=({children:e})=>{const t=r.useRef(),n=r.useRef({}),[a,o]=r.useState({}),[i,l]=r.useState(!1),s=e=>{const t=n.current[e];t&&t.current&&Ld((()=>{o((n=>({...n,[e]:t.current.getBoundingClientRect()})))}))};r.useEffect((()=>{if("undefined"!=typeof window&&"undefined"!=typeof ResizeObserver)return t.current=new ResizeObserver((e=>{Ld((()=>{const t=Object.entries(n.current);e.map((e=>t.find((([t,n])=>n.current===e.target)))).forEach((e=>{if(e&&2===e.length){const[t]=e;s(t)}}))}))})),l(!0),()=>{var e;null==(e=t.current)||e.disconnect()}}),[]);return We(af.Provider,{value:{observe:(e,r)=>{t.current&&(n.current[e]=r,s(e),r.current instanceof Element&&t.current.observe(r.current))},unobserve:e=>{if(!t.current)return;const r=n.current[e];r&&(r.current instanceof Element&&t.current.unobserve(r.current),delete n.current[e],o((t=>Vl(t,e))))},rect:a,ready:i},children:e})},yp=r.createContext({theme:null}),wp=({title:e,information:t,onClose:n,size:r="large",toastRef:a,children:o,icon:i,actions:l,...s})=>{const u=bs(s),c=!t,d=void 0===i?Ns:i;return Ge("div",{ref:a,...ws(s),className:Qe(s.className,u.className,hp.root,hp[r]),children:[We("div",{className:Qe(c?hp.inlineIconContainer:hp.columnIconContainer),children:d&&We(d,{color:"primary",className:hp.icon})}),Ge("div",{className:c?hp.inlineContainer:hp.columnContainer,children:[Ge("div",{className:Qe(hp.textContainer),children:[!!e&&We(Vs,{className:hp.title,component:"div",variant:"small"===r?"label2":"label1",children:e}),!!t&&We(Vs,{className:hp.information,component:"div",variant:"small"===r?"label2":"label1",children:t})]}),!!l&&We("div",{className:Qe(hp.buttonContainer,c?hp.inlineButtonContainer:hp.columnButtonContainer),children:l})]}),We(_d,{onClick:n,className:hp.closeButton,size:"medium",children:We(Ps,{color:"primary"})})]})};wp.classes=hp;var xp=(e,t)=>(e=>"function"==typeof e)(e)?e(t):e,kp=(()=>{let e=0;return()=>(++e).toString()})(),_p=new Map,Ep=e=>{if(_p.has(e))return;let t=setTimeout((()=>{_p.delete(e),Op({type:4,toastId:e})}),1e3);_p.set(e,t)},Sp=(e,t)=>{switch(t.type){case 0:return{...e,toasts:[t.toast,...e.toasts].slice(0,20)};case 1:return t.toast.id&&(e=>{let t=_p.get(e);t&&clearTimeout(t)})(t.toast.id),{...e,toasts:e.toasts.map((e=>e.id===t.toast.id?{...e,...t.toast}:e))};case 2:let{toast:n}=t;return e.toasts.find((e=>e.id===n.id))?Sp(e,{type:1,toast:n}):Sp(e,{type:0,toast:n});case 3:let{toastId:r}=t;return r?Ep(r):e.toasts.forEach((e=>{Ep(e.id)})),{...e,toasts:e.toasts.map((e=>e.id===r||void 0===r?{...e,visible:!1}:e))};case 4:return void 0===t.toastId?{...e,toasts:[]}:{...e,toasts:e.toasts.filter((e=>e.id!==t.toastId))};case 5:return{...e,pausedAt:t.time};case 6:let a=t.time-(e.pausedAt||0);return{...e,pausedAt:void 0,toasts:e.toasts.map((e=>({...e,pauseDuration:e.pauseDuration+a})))}}},Cp=[],Tp={toasts:[],pausedAt:void 0},Op=e=>{Tp=Sp(Tp,e),Cp.forEach((e=>{e(Tp)}))},Dp={blank:4e3,error:4e3,success:2e3,loading:1/0,custom:4e3},Pp=e=>(t,n)=>{let r=((e,t="blank",n)=>({createdAt:Date.now(),visible:!0,type:t,ariaProps:{role:"status","aria-live":"polite"},message:e,pauseDuration:0,...n,id:(null==n?void 0:n.id)||kp()}))(t,e,n);return Op({type:2,toast:r}),r.id},Np=(e,t)=>Pp("blank")(e,t);Np.error=Pp("error"),Np.success=Pp("success"),Np.loading=Pp("loading"),Np.custom=Pp("custom"),Np.dismiss=e=>{Op({type:3,toastId:e})},Np.remove=e=>Op({type:4,toastId:e}),Np.promise=(e,t,n)=>{let r=Np.loading(t.loading,{...n,...null==n?void 0:n.loading});return e.then((e=>(Np.success(xp(t.success,e),{id:r,...n,...null==n?void 0:n.success}),e))).catch((e=>{Np.error(xp(t.error,e),{id:r,...n,...null==n?void 0:n.error})})),e};var Ip=(e,t)=>{Op({type:1,toast:{id:e,height:t}})},Ap=()=>{Op({type:5,time:Date.now()})},Lp=e=>{let{toasts:t,pausedAt:n}=((e={})=>{let[t,n]=r.useState(Tp);r.useEffect((()=>(Cp.push(n),()=>{let e=Cp.indexOf(n);e>-1&&Cp.splice(e,1)})),[t]);let a=t.toasts.map((t=>{var n,r;return{...e,...e[t.type],...t,duration:t.duration||(null==(n=e[t.type])?void 0:n.duration)||(null==e?void 0:e.duration)||Dp[t.type],style:{...e.style,...null==(r=e[t.type])?void 0:r.style,...t.style}}}));return{...t,toasts:a}})(e);r.useEffect((()=>{if(n)return;let e=Date.now(),r=t.map((t=>{if(t.duration===1/0)return;let n=(t.duration||0)+t.pauseDuration-(e-t.createdAt);if(!(n<0))return setTimeout((()=>Np.dismiss(t.id)),n);t.visible&&Np.dismiss(t.id)}));return()=>{r.forEach((e=>e&&clearTimeout(e)))}}),[t,n]);let a=r.useCallback((()=>{n&&Op({type:6,time:Date.now()})}),[n]),o=r.useCallback(((e,n)=>{let{reverseOrder:r=!1,gutter:a=8,defaultPosition:o}=n||{},i=t.filter((t=>(t.position||o)===(e.position||o)&&t.height)),l=i.findIndex((t=>t.id===e.id)),s=i.filter(((e,t)=>te.visible)).slice(...r?[s+1]:[0,s]).reduce(((e,t)=>e+(t.height||0)+a),0)}),[t]);return{toasts:t,handlers:{updateHeight:Ip,startPause:Ap,endPause:a,calculateOffset:o}}};const Rp=r.createContext(null),jp=({toastsPropsMap:e,className:t,...n})=>{const{toasts:r,handlers:a}=Lp(),{startPause:o,endPause:i,calculateOffset:l,updateHeight:s}=a;return We(lu,{id:"toast",children:r.map((r=>{const a=e.get(r.id);if(!a)return console.warn("Could not find toast with id",r.id),null;const{position:u,duration:c,...d}=a,f=l(r,{reverseOrder:!1,gutter:8,defaultPosition:u}),{transform:p,positionClassName:h}=((e,t)=>{if(!e)return{positionClassName:"",transform:`translateY(${t}px)`};let n="";const r=e.includes("center"),a=e.includes("bottom");return"top-left"===e?n=mp.topLeft:"top-center"===e?n=mp.topCenter:"top-right"===e?n=mp.topRight:"bottom-left"===e?n=mp.bottomLeft:"bottom-center"===e?n=mp.bottomCenter:"bottom-right"===e&&(n=mp.bottomRight),{positionClassName:n,transform:`translateY(${a?-t:t}px) translateX(${r?"-50%":"0"})`}})(u,f);return We("div",{onMouseEnter:o,onMouseLeave:i,...n,className:Qe(mp.toastContainer,h,t),style:{transform:p,...n.style},children:We(wp,{className:Qe(d.className),toastRef:e=>{if(e&&"number"!=typeof r.height){const t=e.getBoundingClientRect().height;s(r.id,t)}},...d,style:{opacity:r.visible?1:0,...d.style},onClose:()=>{var e;Np.dismiss(r.id),null==(e=d.onClose)||e.call(d)}},r.id)},`container-${r.id}`)}))})};t.AddIcon=_s,t.ArrowForwardIcon=Ss,t.Autocomplete=cu,t.Badge=fu,t.Breadcrumb=gu,t.BreadcrumbItem=hu,t.Button=yu,t.ButtonGroup=xu,t.CALENDAR_MAX_YEAR=Gc,t.CALENDAR_MIN_YEAR=Wc,t.Calendar=Zc,t.CalendarIcon=Us,t.Card=Xc,t.CardBody=Jc,t.CardHeader=td,t.CheckIcon=Ds,t.Checkbox=od,t.CheckboxGroup=ld,t.CheckboxIcon=Ts,t.CheckboxOutlineBlankIcon=Os,t.ChevronDownIcon=Es,t.ChevronLeftIcon=js,t.ChevronRightIcon=Ms,t.ChevronUpIcon=Cs,t.CloseIcon=Ps,t.Collapse=dd,t.CollapseHeader=ud,t.DateField=pd,t.DatePicker=gd,t.DateRangePicker=bd,t.Dropdown=wd,t.DropdownItem=Ws,t.DropdownMenu=ru,t.ErrorIcon=Ns,t.FolderIcon=Is,t.IconButton=_d,t.IconButtonGroup=Sd,t.KeyboardReturnIcon=As,t.LSD_NAMESPACE="lsd",t.LsdIcon=ks,t.MenuIcon=Ls,t.Modal=Td,t.ModalBody=Dd,t.ModalFooter=Nd,t.MoreIcon=Rs,t.NumberInput=Ad,t.PickIcon=Bs,t.Portal=lu,t.PortalContext=au,t.PortalProvider=Rd,t.Quote=Md,t.RadioButton=zd,t.RadioButtonCheckedIcon=$s,t.RadioButtonGroup=Ud,t.RadioButtonIcon=zs,t.RemoveIcon=Hs,t.SearchIcon=Fs,t.THEME_BREAKPOINTS=fs,t.THEME_TYPOGRAPHY_PROPERTIES=ms,t.THEME_TYPOGRAPHY_VARIANTS=ps,t.THEME_VARIANT_PROPERTIES=["typography"],t.TabItem=qd,t.Table=Jd,t.TableBody=Gd,t.TableHeader=Qd,t.TableItem=tf,t.TableRow=rf,t.Tabs=pf,t.Tag=mf,t.TextField=wf,t.ThemeProvider=({theme:e,children:t,injectCssVars:n=!0})=>We(bp,{children:We(Rd,{children:Ge(yp.Provider,{value:{theme:e},children:[We(vp,{theme:e}),n&&We(o.Global,{styles:e.globalStyles}),We(o.ThemeProvider,{theme:e,children:t})]})})}),t.Toast=wp,t.ToastContext=Rp,t.ToastProvider=({providerToastOptions:e,children:t,...n})=>{const[a,o]=r.useState(new Map);return Ge(Rp.Provider,{value:(t,n)=>{const r={...e,...n},a=Np("",{duration:null==r?void 0:r.duration});t&&o((e=>{const n=new Map(e);return n.set(a,{...t,...r}),n}))},children:[t,We(jp,{toastsPropsMap:a,...n})]})},t.TooltipBase=qc,t.Typography=Vs,t.createTheme=Nf,t.createThemeGlobalStyles=kf,t.defaultThemes=Af,t.useCanUsePortal=ou,t.usePortal=iu,t.useTheme=()=>r.useContext(yp).theme??Af.light,t.useToast=function(){const e=r.useContext(Rp);if(!e)throw new Error("useToast must be used within a ToastProvider");return e},t.withTheme=e=>t=>e(t)},90602:(e,t,n)=>{"use strict";n.d(t,{Z:()=>ae});var r=function(){function e(e){var t=this;this._insertTag=function(e){var n;n=0===t.tags.length?t.insertionPoint?t.insertionPoint.nextSibling:t.prepend?t.container.firstChild:t.before:t.tags[t.tags.length-1].nextSibling,t.container.insertBefore(e,n),t.tags.push(e)},this.isSpeedy=void 0===e.speedy||e.speedy,this.tags=[],this.ctr=0,this.nonce=e.nonce,this.key=e.key,this.container=e.container,this.prepend=e.prepend,this.insertionPoint=e.insertionPoint,this.before=null}var t=e.prototype;return t.hydrate=function(e){e.forEach(this._insertTag)},t.insert=function(e){this.ctr%(this.isSpeedy?65e3:1)==0&&this._insertTag(function(e){var t=document.createElement("style");return t.setAttribute("data-emotion",e.key),void 0!==e.nonce&&t.setAttribute("nonce",e.nonce),t.appendChild(document.createTextNode("")),t.setAttribute("data-s",""),t}(this));var t=this.tags[this.tags.length-1];if(this.isSpeedy){var n=function(e){if(e.sheet)return e.sheet;for(var t=0;t0?c(w,--b):0,g--,10===y&&(g=1,m--),y}function E(){return y=b2||O(y)>3?"":" "}function A(e,t){for(;--t&&E()&&!(y<48||y>102||y>57&&y<65||y>70&&y<97););return T(e,C()+(t<6&&32==S()&&32==E()))}function L(e){for(;E();)switch(y){case e:return b;case 34:case 39:34!==e&&39!==e&&L(y);break;case 40:41===e&&L(e);break;case 92:E()}return b}function R(e,t){for(;E()&&e+y!==57&&(e+y!==84||47!==S()););return"/*"+T(t,b-1)+"*"+o(47===e?e:E())}function j(e){for(;!O(S());)E();return T(e,b)}var M="-ms-",F="-moz-",B="-webkit-",z="comm",$="rule",U="decl",H="@keyframes";function V(e,t){for(var n="",r=p(e),a=0;a0&&f(F)-v&&h(y>32?Y(F+";",r,n,v-1):Y(s(F," ","")+";",r,n,v-2),p);break;case 59:F+=";";default:if(h(M=Z(F,t,n,m,g,a,d,D,P=[],L=[],v),i),123===O)if(0===g)G(F,t,M,M,P,i,v,d,L);else switch(99===b&&110===c(F,3)?100:b){case 100:case 108:case 109:case 115:G(e,M,M,r&&h(Z(e,M,M,0,0,a,d,D,a,P=[],v),L),a,L,v,d,r?P:L);break;default:G(F,M,M,M,[""],L,0,d,L)}}m=g=y=0,x=T=1,D=F="",v=l;break;case 58:v=1+f(F),y=w;default:if(x<1)if(123==O)--x;else if(125==O&&0==x++&&125==_())continue;switch(F+=o(O),O*x){case 38:T=g>0?1:(F+="\f",-1);break;case 44:d[m++]=(f(F)-1)*T,T=1;break;case 64:45===S()&&(F+=N(E())),b=S(),g=v=f(D=F+=j(C())),O++;break;case 45:45===w&&2==f(F)&&(x=0)}}return i}function Z(e,t,n,r,o,i,u,c,f,h,m){for(var g=o-1,v=0===o?i:[""],b=p(v),y=0,w=0,k=0;y0?v[_]+" "+E:s(E,/&\f/g,v[_])))&&(f[k++]=S);return x(e,t,n,0===o?$:c,f,h,m)}function Q(e,t,n){return x(e,t,n,z,o(y),d(e,2,-2),0)}function Y(e,t,n,r){return x(e,t,n,U,d(e,0,r),d(e,r+1,-1),r)}var X=function(e,t,n){for(var r=0,a=0;r=a,a=S(),38===r&&12===a&&(t[n]=1),!O(a);)E();return T(e,b)},K=function(e,t){return P(function(e,t){var n=-1,r=44;do{switch(O(r)){case 0:38===r&&12===S()&&(t[n]=1),e[n]+=X(b-1,t,n);break;case 2:e[n]+=N(r);break;case 4:if(44===r){e[++n]=58===S()?"&\f":"",t[n]=e[n].length;break}default:e[n]+=o(r)}}while(r=E());return e}(D(e),t))},J=new WeakMap,ee=function(e){if("rule"===e.type&&e.parent&&!(e.length<1)){for(var t=e.value,n=e.parent,r=e.column===n.column&&e.line===n.line;"rule"!==n.type;)if(!(n=n.parent))return;if((1!==e.props.length||58===t.charCodeAt(0)||J.get(n))&&!r){J.set(e,!0);for(var a=[],o=K(t,a),i=n.props,l=0,s=0;l6)switch(c(e,t+1)){case 109:if(45!==c(e,t+4))break;case 102:return s(e,/(.+:)(.+)-([^]+)/,"$1"+B+"$2-$3$1"+F+(108==c(e,t+3)?"$3":"$2-$3"))+e;case 115:return~u(e,"stretch")?ne(s(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(115!==c(e,t+1))break;case 6444:switch(c(e,f(e)-3-(~u(e,"!important")&&10))){case 107:return s(e,":",":"+B)+e;case 101:return s(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+B+(45===c(e,14)?"inline-":"")+"box$3$1"+B+"$2$3$1"+M+"$2box$3")+e}break;case 5936:switch(c(e,t+11)){case 114:return B+e+M+s(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return B+e+M+s(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return B+e+M+s(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return B+e+M+e+e}return e}var re=[function(e,t,n,r){if(e.length>-1&&!e.return)switch(e.type){case U:e.return=ne(e.value,e.length);break;case H:return V([k(e,{value:s(e.value,"@","@"+B)})],r);case $:if(e.length)return function(e,t){return e.map(t).join("")}(e.props,(function(t){switch(function(e,t){return(e=t.exec(e))?e[0]:e}(t,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return V([k(e,{props:[s(t,/:(read-\w+)/,":"+F+"$1")]})],r);case"::placeholder":return V([k(e,{props:[s(t,/:(plac\w+)/,":"+B+"input-$1")]}),k(e,{props:[s(t,/:(plac\w+)/,":"+F+"$1")]}),k(e,{props:[s(t,/:(plac\w+)/,M+"input-$1")]})],r)}return""}))}}],ae=function(e){var t=e.key;if("css"===t){var n=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(n,(function(e){-1!==e.getAttribute("data-emotion").indexOf(" ")&&(document.head.appendChild(e),e.setAttribute("data-s",""))}))}var a=e.stylisPlugins||re;var o,i,l={},s=[];o=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+t+' "]'),(function(e){for(var t=e.getAttribute("data-emotion").split(" "),n=1;n{"use strict";function r(e){var t=Object.create(null);return function(n){return void 0===t[n]&&(t[n]=e(n)),t[n]}}n.d(t,{Z:()=>r})},80123:(e,t,n)=>{"use strict";n.d(t,{C:()=>g,E:()=>T,T:()=>y,_:()=>v,a:()=>k,b:()=>_,c:()=>S,h:()=>h,i:()=>p,u:()=>w,w:()=>b});var r=n(67294),a=n(90602);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{"use strict";n.r(t),n.d(t,{CacheProvider:()=>r.C,ClassNames:()=>h,Global:()=>u,ThemeContext:()=>r.T,ThemeProvider:()=>r.a,__unsafe_useEmotionCache:()=>r._,createElement:()=>s,css:()=>c,jsx:()=>s,keyframes:()=>d,useTheme:()=>r.u,withEmotionCache:()=>r.w,withTheme:()=>r.b});var r=n(80123),a=n(67294),o=n(70444),i=n(27278),l=n(48137),s=(n(90602),n(8679),function(e,t){var n=arguments;if(null==t||!r.h.call(t,"css"))return a.createElement.apply(void 0,n);var o=n.length,i=new Array(o);i[0]=r.E,i[1]=(0,r.c)(e,t);for(var l=2;l{"use strict";n.d(t,{O:()=>h});var r={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},a=n(45042),o=/[A-Z]|^ms/g,i=/_EMO_([^_]+?)_([^]*?)_EMO_/g,l=function(e){return 45===e.charCodeAt(1)},s=function(e){return null!=e&&"boolean"!=typeof e},u=(0,a.Z)((function(e){return l(e)?e:e.replace(o,"-$&").toLowerCase()})),c=function(e,t){switch(e){case"animation":case"animationName":if("string"==typeof t)return t.replace(i,(function(e,t,n){return f={name:t,styles:n,next:f},t}))}return 1===r[e]||l(e)||"number"!=typeof t||0===t?t:t+"px"};function d(e,t,n){if(null==n)return"";if(void 0!==n.__emotion_styles)return n;switch(typeof n){case"boolean":return"";case"object":if(1===n.anim)return f={name:n.name,styles:n.styles,next:f},n.name;if(void 0!==n.styles){var r=n.next;if(void 0!==r)for(;void 0!==r;)f={name:r.name,styles:r.styles,next:f},r=r.next;return n.styles+";"}return function(e,t,n){var r="";if(Array.isArray(n))for(var a=0;a=4;++r,a-=4)t=1540483477*(65535&(t=255&e.charCodeAt(r)|(255&e.charCodeAt(++r))<<8|(255&e.charCodeAt(++r))<<16|(255&e.charCodeAt(++r))<<24))+(59797*(t>>>16)<<16),n=1540483477*(65535&(t^=t>>>24))+(59797*(t>>>16)<<16)^1540483477*(65535&n)+(59797*(n>>>16)<<16);switch(a){case 3:n^=(255&e.charCodeAt(r+2))<<16;case 2:n^=(255&e.charCodeAt(r+1))<<8;case 1:n=1540483477*(65535&(n^=255&e.charCodeAt(r)))+(59797*(n>>>16)<<16)}return(((n=1540483477*(65535&(n^=n>>>13))+(59797*(n>>>16)<<16))^n>>>15)>>>0).toString(36)}(a)+s;return{name:u,styles:a,next:f}}},27278:(e,t,n)=>{"use strict";var r;n.d(t,{L:()=>i,j:()=>l});var a=n(67294),o=!!(r||(r=n.t(a,2))).useInsertionEffect&&(r||(r=n.t(a,2))).useInsertionEffect,i=o||function(e){return e()},l=o||a.useLayoutEffect},70444:(e,t,n)=>{"use strict";n.d(t,{My:()=>o,fp:()=>r,hC:()=>a});function r(e,t,n){var r="";return n.split(" ").forEach((function(n){void 0!==e[n]?t.push(e[n]+";"):r+=n+" "})),r}var a=function(e,t,n){var r=e.key+"-"+t.name;!1===n&&void 0===e.registered[r]&&(e.registered[r]=t.styles)},o=function(e,t,n){a(e,t,n);var r=e.key+"-"+t.name;if(void 0===e.inserted[t.name]){var o=t;do{e.insert(t===o?"."+r:"",o,e.sheet,!0),o=o.next}while(void 0!==o)}}},19044:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:18,height:18,viewBox:"0 0 18 18",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{stroke:"#fff",d:"M9 17.5V.5M.5 9h17"})))}},80255:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:20,height:20,viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M11.764 5.294 7.06 10l4.705 4.706",stroke:"#000",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"})))}},67146:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:14,height:14,viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M11.667 6.417h-7.1l3.261-3.261L7 2.333 2.333 7 7 11.667l.823-.823-3.255-3.26h7.099V6.417Z",fill:"#fff"})))}},68425:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>l});var r,a,o=n(67294);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...l}=e;return o.createElement("svg",i({width:20,height:20,viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},l),t?o.createElement("title",{id:n},t):null,r||(r=o.createElement("rect",{width:20,height:20,rx:10,fill:"#000"})),a||(a=o.createElement("path",{d:"m9 8 2 2-2 2",stroke:"#fff",strokeWidth:1.2,strokeLinecap:"round",strokeLinejoin:"round"})))}},88121:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:14,height:14,viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"m7 2.333-.823.823 3.255 3.26H2.333v1.167h7.1l-3.256 3.261.823.823L11.667 7 7 2.333Z",fill:"#fff"})))}},62082:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>l});var r,a,o=n(67294);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...l}=e;return o.createElement("svg",i({width:40,height:40,viewBox:"0 0 40 40",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},l),t?o.createElement("title",{id:n},t):null,r||(r=o.createElement("path",{d:"M20 20a3.21 3.21 0 0 1-2.354-.98 3.21 3.21 0 0 1-.98-2.353c0-.917.327-1.702.98-2.355A3.21 3.21 0 0 1 20 13.333a3.21 3.21 0 0 1 2.354.98 3.21 3.21 0 0 1 .98 2.354 3.21 3.21 0 0 1-.98 2.354A3.21 3.21 0 0 1 20 20Zm-6.666 6.667v-2.334c0-.472.121-.906.364-1.302.244-.396.567-.698.969-.906.86-.43 1.736-.754 2.625-.97A11.418 11.418 0 0 1 20 20.834c.917 0 1.82.108 2.709.324.888.215 1.763.538 2.625.968.402.208.725.51.969.907.243.396.364.83.364 1.301v2.334H13.333ZM15 25h10v-.667a.817.817 0 0 0-.417-.708 10.844 10.844 0 0 0-2.27-.843 9.652 9.652 0 0 0-4.625 0c-.764.187-1.521.468-2.271.843a.815.815 0 0 0-.303.292.776.776 0 0 0-.114.416V25Zm5-6.667c.459 0 .851-.163 1.178-.49.326-.326.49-.719.489-1.176 0-.459-.164-.851-.49-1.178A1.602 1.602 0 0 0 20 15c-.458 0-.85.164-1.177.49-.327.328-.49.72-.49 1.178 0 .458.164.85.49 1.177.327.327.72.49 1.177.49Z",fill:"#fff"})),a||(a=o.createElement("rect",{x:.5,y:.5,width:39,height:39,rx:19.5,stroke:"#fff"})))}},80469:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:16,height:16,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"m12.667 4.273-.94-.94L8.001 7.06 4.274 3.333l-.94.94L7.061 8l-3.727 3.727.94.94L8.001 8.94l3.726 3.727.94-.94L8.941 8l3.726-3.727Z",fill:"#fff",opacity:.6})))}},94793:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:14,height:14,viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M2.917 12.833c-.321 0-.596-.114-.825-.343a1.121 1.121 0 0 1-.342-.823V3.5h1.167v8.167h6.416v1.166H2.917ZM5.25 10.5c-.32 0-.596-.114-.824-.343a1.121 1.121 0 0 1-.343-.824v-7c0-.32.115-.595.343-.824.229-.229.504-.343.824-.342h5.25c.32 0 .596.114.824.343.229.228.343.503.343.823v7c0 .321-.115.596-.343.825a1.121 1.121 0 0 1-.824.342H5.25Zm0-1.167h5.25v-7H5.25v7Z",fill:"#fff"})))}},14607:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:40,height:40,viewBox:"0 0 40 40",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M14.2 23.077c-1.733 0-3.147-1.575-3.147-3.504 0-1.926 1.379-3.5 3.149-3.5 1.75 0 3.183 1.574 3.148 3.5 0 1.929-1.398 3.504-3.15 3.504Zm11.623 0c-1.733 0-3.15-1.575-3.15-3.504 0-1.926 1.382-3.5 3.15-3.5 1.75 0 3.184 1.574 3.15 3.5 0 1.929-1.381 3.504-3.15 3.504ZM16.875 7.205l-.513-.938-1.057.175a27.255 27.255 0 0 0-6.93 2.133l-.38.177-.237.348C3.403 15.523 2.208 21.847 2.8 28.06l.065.677.55.4a28.181 28.181 0 0 0 8.463 4.238l1.317.403 1.855-4.528c3.183.787 6.717.788 9.898 0l1.845 4.53 1.317-.405a28.033 28.033 0 0 0 8.467-4.24l.545-.397.066-.67c.727-7.2-1.161-13.473-4.93-18.975l-.236-.345-.38-.173a27.625 27.625 0 0 0-6.924-2.133l-1.03-.172-.523.902c-.155.27-.301.544-.438.823a26.463 26.463 0 0 0-5.439 0c-.133-.266-.27-.53-.413-.79Zm-5.683 20.478c.328.19.675.377 1.016.547l-.748 1.827a25.041 25.041 0 0 1-5.713-2.964c-.375-5.231.688-10.508 4.273-15.95a24.256 24.256 0 0 1 4.707-1.521c.1.208.193.411.27.593l.455 1.072 1.153-.169a23.508 23.508 0 0 1 6.817 0l1.15.167.453-1.07c.078-.187.17-.39.267-.593a24.71 24.71 0 0 1 4.713 1.525c3.125 4.7 4.702 9.943 4.243 15.945a24.841 24.841 0 0 1-5.716 2.963l-.742-1.823c.343-.172.69-.359 1.022-.549.816-.47 1.695-1.056 2.255-1.616l-2.134-2.134c-.271.274-.871.7-1.628 1.137-.74.427-1.475.772-1.945.927-3.338 1.105-7.38 1.105-10.72 0-.468-.155-1.203-.5-1.943-.927-.757-.435-1.357-.863-1.63-1.137l-2.134 2.134c.562.56 1.442 1.146 2.259 1.616Z",fill:"#fff"})))}},50437:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>l});var r,a,o=n(67294);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...l}=e;return o.createElement("svg",i({width:71,height:55,viewBox:"0 0 71 55",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},l),t?o.createElement("title",{id:n},t):null,r||(r=o.createElement("g",{clipPath:"url(#a)"},o.createElement("path",{d:"M60.105 4.898A58.55 58.55 0 0 0 45.653.415a.22.22 0 0 0-.233.11 40.784 40.784 0 0 0-1.8 3.697c-5.456-.817-10.886-.817-16.23 0-.485-1.164-1.201-2.587-1.828-3.697a.228.228 0 0 0-.233-.11 58.386 58.386 0 0 0-14.451 4.483.207.207 0 0 0-.095.082C1.578 18.73-.944 32.144.293 45.39a.244.244 0 0 0 .093.167c6.073 4.46 11.955 7.167 17.729 8.962a.23.23 0 0 0 .249-.082 42.08 42.08 0 0 0 3.627-5.9.225.225 0 0 0-.123-.312 38.772 38.772 0 0 1-5.539-2.64.228.228 0 0 1-.022-.378c.372-.279.744-.569 1.1-.862a.22.22 0 0 1 .23-.03c11.619 5.304 24.198 5.304 35.68 0a.219.219 0 0 1 .233.027c.356.293.728.586 1.103.865a.228.228 0 0 1-.02.378 36.384 36.384 0 0 1-5.54 2.637.227.227 0 0 0-.121.315 47.249 47.249 0 0 0 3.624 5.897.225.225 0 0 0 .249.084c5.801-1.794 11.684-4.502 17.757-8.961a.228.228 0 0 0 .092-.164c1.48-15.315-2.48-28.618-10.497-40.412a.18.18 0 0 0-.093-.084Zm-36.38 32.427c-3.497 0-6.38-3.211-6.38-7.156 0-3.944 2.827-7.156 6.38-7.156 3.583 0 6.438 3.24 6.382 7.156 0 3.945-2.827 7.156-6.381 7.156Zm23.593 0c-3.498 0-6.38-3.211-6.38-7.156 0-3.944 2.826-7.156 6.38-7.156 3.582 0 6.437 3.24 6.38 7.156 0 3.945-2.798 7.156-6.38 7.156Z",fill:"#23272A"}))),a||(a=o.createElement("defs",null,o.createElement("clipPath",{id:"a"},o.createElement("path",{fill:"#fff",d:"M0 0h71v55H0z"})))))}},23179:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),void 0===t?a.createElement("title",{id:n},"Discourse"):t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M12.103 0C18.666 0 24 5.485 24 11.997c0 6.51-5.33 11.99-11.9 11.99L0 24V11.79C0 5.28 5.532 0 12.103 0zm.116 4.563a7.395 7.395 0 0 0-6.337 3.57 7.247 7.247 0 0 0-.148 7.22L4.4 19.61l4.794-1.074a7.424 7.424 0 0 0 8.136-1.39 7.256 7.256 0 0 0 1.737-7.997 7.375 7.375 0 0 0-6.84-4.585h-.008z"})))}},7744:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:16,height:16,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M9.334 1.333H4c-.733 0-1.326.6-1.326 1.334l-.007 10.666c0 .734.593 1.334 1.327 1.334H12c.734 0 1.334-.6 1.334-1.334v-8l-4-4ZM4 13.333V2.667h4.667V6H12v7.333H4Z",fill:"#fff"})))}},19818:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:20,height:20,viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("circle",{cx:10,cy:10,r:8.333,fill:"#fff"})))}},38981:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:14,height:14,viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M7 9.333 4.083 6.417 4.9 5.57l1.517 1.517V2.333h1.166v4.755L9.1 5.57l.817.846L7 9.333Zm-3.5 2.334c-.32 0-.596-.115-.824-.343a1.121 1.121 0 0 1-.343-.824V8.75H3.5v1.75h7V8.75h1.167v1.75c0 .32-.115.596-.343.824a1.121 1.121 0 0 1-.824.343h-7Z",fill:"#fff"})))}},28487:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:12,height:12,viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"m2 4 4 4 4-4",stroke:"#909091",strokeWidth:1.4,strokeLinecap:"round",strokeLinejoin:"round"})))}},94177:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:16,height:16,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"m12.707 2.393.9.9c.526.52.526 1.367 0 1.887L4.787 14H2v-2.787l6.933-6.94 1.887-1.88c.52-.52 1.367-.52 1.887 0ZM3.333 12.667l.94.04 6.547-6.554-.94-.94-6.547 6.547v.907Z",fill:"#fff"})))}},96867:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:16,height:16,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M14.667 2.667H1.34l-.007 10.667h13.334V2.667ZM13.333 12H2.667V5.334L8 8.667l5.333-3.333V12ZM8 7.334 2.667 4h10.666L8 7.334Z",fill:"#fff"})))}},58611:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:16,height:16,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M11.192 4H3.428V2.857h9.715v9.715H12V4.808l-8.167 8.168-.809-.808L11.192 4Z",fill:"#fff"})))}},13042:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:20,height:20,viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M1.804 16.292a.836.836 0 0 0 .696.374H15a.832.832 0 0 0 .766-.505l2.5-5.833a.833.833 0 0 0-.766-1.162h-.833v-2.5C16.667 5.747 15.919 5 15 5H9.454l-2.13-1.667h-3.99c-.92 0-1.667.748-1.667 1.667v10.833h.006a.834.834 0 0 0 .131.46ZM15 6.666v2.5H5a.832.832 0 0 0-.766.505l-.9 2.103V6.666H15Z",fill:"#000"})))}},96367:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:14,height:14,viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M4.667 11.083v-1.75h-1.75V8.166h2.916v2.917H4.667Zm3.5 0V8.166h2.916v1.167h-1.75v1.75H8.167Zm-5.25-5.25V4.666h1.75v-1.75h1.166v2.917H2.917Zm5.25 0V2.916h1.166v1.75h1.75v1.167H8.167Z",fill:"#fff"})))}},6907:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:14,height:14,viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M1.75 2.917V5.25h1.167V2.917H5.25V1.75H2.917A1.17 1.17 0 0 0 1.75 2.917ZM2.917 8.75H1.75v2.333a1.17 1.17 0 0 0 1.167 1.167H5.25v-1.167H2.917V8.75Zm8.166 2.333H8.75v1.167h2.333a1.17 1.17 0 0 0 1.167-1.167V8.75h-1.167v2.333Zm0-9.333H8.75v1.167h2.333V5.25h1.167V2.917a1.17 1.17 0 0 0-1.167-1.167Z",fill:"#fff"})))}},59570:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:40,height:40,viewBox:"0 0 40 40",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M20 4.4a16 16 0 0 0-16 16c0 7.072 4.592 13.072 10.944 15.2.8.128 1.056-.368 1.056-.8v-2.704c-4.432.96-5.376-2.144-5.376-2.144-.736-1.856-1.776-2.352-1.776-2.352-1.456-.992.112-.96.112-.96 1.6.112 2.448 1.648 2.448 1.648C12.8 30.72 15.152 30 16.064 29.616c.144-1.04.56-1.744 1.008-2.144-3.552-.4-7.28-1.776-7.28-7.872 0-1.776.608-3.2 1.648-4.336-.16-.4-.72-2.064.16-4.224 0 0 1.344-.432 4.4 1.632a15.075 15.075 0 0 1 4-.528c1.36 0 2.736.176 4 .528 3.056-2.064 4.4-1.632 4.4-1.632.88 2.16.32 3.824.16 4.224 1.04 1.136 1.648 2.56 1.648 4.336 0 6.112-3.744 7.456-7.312 7.856.576.496 1.104 1.472 1.104 2.96V34.8c0 .432.256.944 1.072.8C31.424 33.456 36 27.472 36 20.4a16.001 16.001 0 0 0-16-16Z",fill:"#fff"})))}},26890:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>l});var r,a,o=n(67294);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...l}=e;return o.createElement("svg",i({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512","aria-labelledby":n},l),t?o.createElement("title",{id:n},t):null,r||(r=o.createElement("path",{d:"M256 411.12 0 202.667 256 0zM256 411.12l256-208.453L256 0z"})),a||(a=o.createElement("circle",{cx:256,cy:362.667,r:149.333})))}},42924:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:16,height:16,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"m4 13.333.667-2.666H2.333l.334-1.334H5l.667-2.666H3l.333-1.334H6l.667-2.666H8l-.667 2.666H10l.667-2.666H12l-.667 2.666h2.334l-.334 1.334H11l-.667 2.666H13l-.333 1.334H10l-.667 2.666H8l.667-2.666H6l-.667 2.666H4Zm2.333-4H9l.667-2.666H7l-.667 2.666Z",fill:"#fff"})))}},74297:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:16,height:16,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M8 14c-1.533 0-2.87-.508-4.009-1.525-1.139-1.017-1.791-2.287-1.958-3.808H3.4c.156 1.155.67 2.11 1.542 2.866.872.756 1.892 1.134 3.058 1.134 1.3 0 2.403-.453 3.309-1.359.905-.906 1.358-2.008 1.358-3.308 0-1.3-.453-2.403-1.359-3.309C10.402 3.786 9.3 3.333 8 3.333a4.5 4.5 0 0 0-2.15.534 4.954 4.954 0 0 0-1.683 1.466H6v1.334H2v-4h1.333v1.566A5.954 5.954 0 0 1 8 2c.833 0 1.614.158 2.342.475a6.107 6.107 0 0 1 1.9 1.283c.539.54.966 1.172 1.283 1.9C13.842 6.386 14 7.166 14 8c0 .833-.158 1.614-.475 2.342a6.108 6.108 0 0 1-1.283 1.9 6.11 6.11 0 0 1-1.9 1.283A5.793 5.793 0 0 1 8 14Zm1.867-3.2L7.333 8.267v-3.6h1.334v3.066L10.8 9.867l-.933.933Z",fill:"#fff"})))}},33336:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:16,height:16,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M12.667 2A1.333 1.333 0 0 1 14 3.333v9.334A1.334 1.334 0 0 1 12.667 14H3.333A1.334 1.334 0 0 1 2 12.667V3.333A1.333 1.333 0 0 1 3.333 2h9.334Zm-.334 10.333V8.8a2.173 2.173 0 0 0-2.173-2.173c-.567 0-1.227.346-1.547.866v-.74h-1.86v5.58h1.86V9.047a.93.93 0 1 1 1.86 0v3.286h1.86ZM4.587 5.707a1.12 1.12 0 0 0 1.12-1.12 1.124 1.124 0 1 0-1.12 1.12Zm.926 6.626v-5.58H3.667v5.58h1.846Z",fill:"#fff"})))}},78951:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:18,height:18,viewBox:"0 0 18 18",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{stroke:"#fff",d:"M.5 9h17"})))}},84629:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>l});var r,a,o=n(67294);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...l}=e;return o.createElement("svg",i({width:18,height:18,viewBox:"0 0 18 18",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},l),t?o.createElement("title",{id:n},t):null,r||(r=o.createElement("g",{clipPath:"url(#a)"},o.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M1.79 6.75a4.979 4.979 0 1 1 9.957 0 4.979 4.979 0 0 1-9.957 0ZM6.768.572a6.179 6.179 0 1 0 3.817 11.037l5.146 5.146a1 1 0 0 0 1.414-1.414l-5.207-5.207A6.179 6.179 0 0 0 6.768.571Z",fill:"#000"}))),a||(a=o.createElement("defs",null,o.createElement("clipPath",{id:"a"},o.createElement("path",{fill:"#fff",d:"M0 0h18v18H0z"})))))}},23816:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:179,height:178,viewBox:"0 0 179 178",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M104.512 88.178c-10.667.615-17.352-1.87-28.02-1.254a44.732 44.732 0 0 0-7.853 1.146c1.575-19.73 15.538-36.988 34.525-38.085 11.652-.672 23.298 6.522 23.93 18.2.621 11.479-8.131 19.158-22.58 19.992l-.002.001Zm-28.645 40.355c-11.162.631-22.317-6.104-22.923-17.033-.596-10.742 7.79-17.93 21.633-18.71 10.218-.575 16.623 1.751 26.84 1.174a43.776 43.776 0 0 0 7.522-1.073c-1.506 18.464-14.881 34.617-33.072 35.642ZM89.5.001C40.346 0 .5 39.846.5 89c0 49.154 39.846 89 89 89s89-39.847 89-89-39.846-89-89-89",fill:"#000"})))}},35245:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:40,height:40,viewBox:"0 0 40 40",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M4.906 17.987c9.395-4.094 15.66-6.792 18.795-8.096 8.95-3.723 10.81-4.37 12.022-4.39.267-.005.863.06 1.249.374.326.264.416.622.459.873.043.25.096.822.053 1.268-.485 5.097-2.583 17.463-3.65 23.171-.453 2.415-1.342 3.225-2.203 3.304-1.872.172-3.293-1.237-5.106-2.425-2.836-1.86-4.439-3.017-7.192-4.831-3.182-2.097-1.12-3.25.694-5.133.475-.493 8.72-7.993 8.88-8.674.02-.085.039-.402-.15-.57-.188-.167-.466-.11-.667-.064-.284.064-4.816 3.06-13.594 8.985-1.286.883-2.451 1.314-3.495 1.29-1.15-.024-3.364-.65-5.01-1.185-2.018-.656-3.622-1.003-3.483-2.117.073-.58.872-1.174 2.398-1.78Z",fill:"#fff"})))}},68902:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:24,height:24,xmlns:"http://www.w3.org/2000/svg",xmlSpace:"preserve",style:{fillRule:"evenodd",clipRule:"evenodd",strokeLinejoin:"round",strokeMiterlimit:1.41421},"aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M12 0C5.374 0 0 5.372 0 12c0 6.627 5.374 12 12 12 6.627 0 12-5.373 12-12 0-6.628-5.373-12-12-12Zm3.224 17.871c.188.133.43.166.646.085a.678.678 0 0 0 .422-.491c.507-2.382 1.737-8.412 2.198-10.578a.457.457 0 0 0-.151-.443.47.47 0 0 0-.465-.082c-2.446.906-9.979 3.732-13.058 4.871a.484.484 0 0 0-.316.467.483.483 0 0 0 .346.445c1.381.413 3.193.988 3.193.988s.847 2.558 1.288 3.858a.512.512 0 0 0 .352.336.505.505 0 0 0 .474-.121l1.805-1.704s2.084 1.527 3.266 2.369Zm-6.423-5.062.98 3.231.218-2.046 5.941-5.358a.162.162 0 0 0 .019-.22.165.165 0 0 0-.219-.037l-6.939 4.43Z"})))}},86089:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:17,height:14,viewBox:"0 0 17 14",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M16.557 1.597a6.802 6.802 0 0 1-1.95.534A3.406 3.406 0 0 0 16.1.251a6.782 6.782 0 0 1-2.157.824 3.398 3.398 0 0 0-5.788 3.1A9.647 9.647 0 0 1 1.153.624a3.395 3.395 0 0 0-.059 3.31c.264.494.645.915 1.11 1.225a3.389 3.389 0 0 1-1.538-.425v.044a3.398 3.398 0 0 0 2.725 3.33c-.5.136-1.025.156-1.534.06a3.399 3.399 0 0 0 3.173 2.357A6.817 6.817 0 0 1 0 11.934a9.607 9.607 0 0 0 5.207 1.526c6.249 0 9.665-5.176 9.665-9.665 0-.146-.004-.293-.01-.439A6.905 6.905 0 0 0 16.556 1.6l.001-.002Z",fill:"#000"})))}},92358:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r,a=n(67294);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...i}=e;return a.createElement("svg",o({width:40,height:40,viewBox:"0 0 40 40",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},i),t?a.createElement("title",{id:n},t):null,r||(r=a.createElement("path",{d:"M22.62 19.134 32.63 7.5h-2.373l-8.69 10.102L14.627 7.5H6.62l10.496 15.275-10.496 12.2h2.372l9.177-10.668 7.33 10.668h8.005L22.62 19.134Zm-3.248 3.776-1.063-1.521L9.847 9.285h3.643l6.829 9.768 1.063 1.521 8.877 12.697h-3.643l-7.244-10.36v-.001Z",fill:"#fff"})))}},4074:(e,t,n)=>{"use strict";n.r(t),n.d(t,{HOSTNAMES:()=>o,SCRIPT_URL:()=>a,SITE_ID:()=>r});const r="FUTMI",a="https://fathom.status.im/tracker.js",o=[]},723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(67294),a=n(87462),o=n(68356),i=n.n(o),l=n(16887);const s={"0444839e":[()=>n.e(175).then(n.bind(n,62093)),"@site/docs/guides/js-waku/manage-filter.md",62093],"0f1b9a4a":[()=>n.e(5158).then(n.bind(n,36280)),"@site/docs/guides/js-waku/run-waku-nodejs.md",36280],"1067bd84":[()=>Promise.all([n.e(532),n.e(4881),n.e(5447)]).then(n.bind(n,45173)),"@site/docs/learn/faq.md",45173],"1236ce69":[()=>n.e(3235).then(n.bind(n,64180)),"@site/docs/research/research-and-studies/rln-key-benchmarks.md",64180],17896441:[()=>Promise.all([n.e(532),n.e(7918)]).then(n.bind(n,18652)),"@theme/DocItem",18652],"1be78505":[()=>Promise.all([n.e(532),n.e(9514)]).then(n.bind(n,93717)),"@theme/DocPage",93717],"1f1f54c7":[()=>n.e(2285).then(n.bind(n,55345)),"@site/docs/guides/js-waku/store-retrieve-messages.md",55345],20987266:[()=>Promise.all([n.e(532),n.e(4881),n.e(7442)]).then(n.bind(n,26820)),"@site/docs/guides/nwaku/faq.md",26820],"2f51beae":[()=>n.e(231).then(n.bind(n,59043)),"@site/docs/learn/concepts/discv5.md",59043],"3b0eafbc":[()=>n.e(6167).then(n.t.bind(n,83769,19)),"/home/jenkins/workspace/website/dev-docs.waku.org/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",83769],"3b240eda":[()=>Promise.all([n.e(532),n.e(3178)]).then(n.bind(n,68458)),"@site/docs/guides/js-waku/use-waku-react.md",68458],"3fbcf129":[()=>n.e(8173).then(n.bind(n,71899)),"@site/docs/research/research-and-studies/message-propagation.md",71899],"406e0176":[()=>Promise.all([n.e(532),n.e(3855)]).then(n.bind(n,89472)),"@site/docs/guides/nwaku/run-node.md",89472],"41a4e09e":[()=>n.e(9169).then(n.bind(n,68518)),"@site/docs/learn/waku-vs-libp2p.md",68518],"488ca57d":[()=>Promise.all([n.e(532),n.e(6839)]).then(n.bind(n,76201)),"@site/docs/guides/js-waku/index.md",76201],"4aba8864":[()=>n.e(357).then(n.bind(n,19034)),"@site/docs/learn/glossary.md",19034],"4bb5c570":[()=>n.e(161).then(n.bind(n,46771)),"@site/docs/guides/js-waku/configure-discovery.md",46771],"4e726341":[()=>n.e(2588).then(n.bind(n,82493)),"@site/docs/research/research-and-studies/incentivisation.md",82493],"500a151f":[()=>n.e(4545).then(n.bind(n,41725)),"@site/docs/terms.md",41725],"5277fe18":[()=>Promise.all([n.e(532),n.e(1374)]).then(n.bind(n,48153)),"@site/docs/guides/js-waku/use-waku-create-app.md",48153],"606377f0":[()=>n.e(5832).then(n.bind(n,89955)),"@site/docs/learn/security-features.md",89955],60832973:[()=>n.e(7304).then(n.bind(n,40259)),"@site/docs/guides/nwaku/configure-nwaku.md",40259],"6778e957":[()=>n.e(3292).then(n.bind(n,82844)),"@site/docs/learn/concepts/peer-discovery.md",82844],"6c6e315a":[()=>n.e(8319).then(n.bind(n,40029)),"@site/docs/learn/research.md",40029],"6e8bfb6f":[()=>n.e(6512).then(n.bind(n,16783)),"@site/docs/guides/nwaku/run-docker.md",16783],"7c28fd94":[()=>n.e(906).then(n.bind(n,17217)),"@site/docs/guides/nwaku/run-docker-compose.md",17217],"80a3009a":[()=>n.e(3116).then(n.bind(n,67868)),"@site/docs/learn/concepts/peer-exchange.md",67868],"80ec2a43":[()=>n.e(3634).then(n.bind(n,69399)),"@site/docs/guides/nwaku/config-methods.md",69399],"8a655033":[()=>n.e(1385).then(n.bind(n,45948)),"@site/docs/guides/nwaku/configure-discovery.md",45948],"8c5da4da":[()=>n.e(1923).then(n.bind(n,88006)),"@site/docs/privacy-policy.md",88006],"8eff6037":[()=>n.e(5844).then(n.bind(n,64985)),"@site/docs/guides/nwaku/config-options.md",64985],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],"97983a7b":[()=>n.e(1937).then(n.bind(n,56055)),"@site/docs/research/research-and-studies/capped-bandwidth.md",56055],a44b8792:[()=>n.e(5787).then(n.bind(n,33447)),"@site/docs/learn/concepts/dns-discovery.md",33447],a494bfbc:[()=>Promise.all([n.e(532),n.e(4881),n.e(2675)]).then(n.bind(n,43815)),"@site/docs/guides/js-waku/faq.md",43815],b54b2767:[()=>n.e(727).then(n.bind(n,12381)),"@site/docs/learn/concepts/network-domains.md",12381],b551b2b5:[()=>n.e(101).then(n.bind(n,46645)),"@site/docs/guides/nwaku/find-node-address.md",46645],b99d0044:[()=>n.e(1201).then(n.bind(n,34765)),"@site/docs/learn/waku-network.md",34765],c57f3997:[()=>n.e(7683).then(n.bind(n,56804)),"@site/docs/guides/js-waku/light-send-receive.md",56804],c764ec94:[()=>n.e(3076).then(n.bind(n,73979)),"@site/docs/learn/concepts/content-topics.md",73979],c9ea0dcf:[()=>n.e(2941).then(n.bind(n,22103)),"@site/docs/guides/getting-started.md",22103],d53fc737:[()=>n.e(6471).then(n.bind(n,57704)),"@site/docs/rules-of-engagement.md",57704],df0a719b:[()=>n.e(6059).then(n.bind(n,61131)),"@site/docs/research/research-and-studies/maximum-bandwidth.md",61131],df28445d:[()=>Promise.all([n.e(532),n.e(2355)]).then(n.bind(n,30282)),"@site/docs/guides/js-waku/message-encryption.md",30282],e168415d:[()=>n.e(5306).then(n.bind(n,96608)),"@site/docs/research/benchmarks/postgres-adoption.md",96608],e610d71e:[()=>n.e(617).then(n.bind(n,92247)),"@site/docs/guides/js-waku/debug-waku-dapp.md",92247],e63bb37c:[()=>n.e(6321).then(n.bind(n,77362)),"@site/docs/learn/concepts/static-peers.md",77362],ef85d46a:[()=>n.e(6618).then(n.bind(n,63351)),"@site/docs/learn/concepts/transports.md",63351],f2470003:[()=>Promise.all([n.e(532),n.e(2811)]).then(n.bind(n,43733)),"@site/docs/guides/nwaku/build-source.md",43733],f7974e9c:[()=>n.e(5838).then(n.bind(n,34602)),"@site/docs/research/index.md",34602],fb5ea66b:[()=>n.e(5740).then(n.bind(n,898)),"@site/docs/learn/concepts/protocols.md",898]};function u(e){let{error:t,retry:n,pastDelay:a}=e;return t?r.createElement("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%"}},r.createElement("p",null,String(t)),r.createElement("div",null,r.createElement("button",{type:"button",onClick:n},"Retry"))):a?r.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"}},r.createElement("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"},r.createElement("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2"},r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"8"},r.createElement("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"}))))):null}var c=n(99670),d=n(30226);function f(e,t){if("*"===e)return i()({loading:u,loader:()=>Promise.all([n.e(532),n.e(2568)]).then(n.bind(n,92568)),modules:["@theme/NotFound"],webpack:()=>[92568],render(e,t){const n=e.default;return r.createElement(d.z,{value:{plugin:{name:"native",id:"default"}}},r.createElement(n,t))}});const o=l[`${e}-${t}`],f={},p=[],h=[],m=(0,c.Z)(o);return Object.entries(m).forEach((e=>{let[t,n]=e;const r=s[n];r&&(f[t]=r[0],p.push(r[1]),h.push(r[2]))})),i().Map({loading:u,loader:f,modules:p,webpack:()=>h,render(t,n){const i=JSON.parse(JSON.stringify(o));Object.entries(t).forEach((t=>{let[n,r]=t;const a=r.default;if(!a)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof a&&"function"!=typeof a||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{a[e]=r[e]}));let o=i;const l=n.split(".");l.slice(0,-1).forEach((e=>{o=o[e]})),o[l[l.length-1]]=a}));const l=i.__comp;delete i.__comp;const s=i.__context;return delete i.__context,r.createElement(d.z,{value:s},r.createElement(l,(0,a.Z)({},i,n)))}})}const p=[{path:"/",component:f("/","c34"),routes:[{path:"/",component:f("/","0f1"),exact:!0,sidebar:"guides"},{path:"/guides/js-waku/",component:f("/guides/js-waku/","9af"),exact:!0,sidebar:"guides"},{path:"/guides/js-waku/configure-discovery",component:f("/guides/js-waku/configure-discovery","dfe"),exact:!0,sidebar:"guides"},{path:"/guides/js-waku/debug-waku-dapp",component:f("/guides/js-waku/debug-waku-dapp","c0d"),exact:!0,sidebar:"guides"},{path:"/guides/js-waku/faq",component:f("/guides/js-waku/faq","1ad"),exact:!0,sidebar:"guides"},{path:"/guides/js-waku/light-send-receive",component:f("/guides/js-waku/light-send-receive","77b"),exact:!0,sidebar:"guides"},{path:"/guides/js-waku/manage-filter",component:f("/guides/js-waku/manage-filter","d72"),exact:!0,sidebar:"guides"},{path:"/guides/js-waku/message-encryption",component:f("/guides/js-waku/message-encryption","d96"),exact:!0,sidebar:"guides"},{path:"/guides/js-waku/run-waku-nodejs",component:f("/guides/js-waku/run-waku-nodejs","30f"),exact:!0,sidebar:"guides"},{path:"/guides/js-waku/store-retrieve-messages",component:f("/guides/js-waku/store-retrieve-messages","1c5"),exact:!0,sidebar:"guides"},{path:"/guides/js-waku/use-waku-create-app",component:f("/guides/js-waku/use-waku-create-app","76f"),exact:!0,sidebar:"guides"},{path:"/guides/js-waku/use-waku-react",component:f("/guides/js-waku/use-waku-react","ed9"),exact:!0,sidebar:"guides"},{path:"/guides/nwaku/build-source",component:f("/guides/nwaku/build-source","995"),exact:!0,sidebar:"guides"},{path:"/guides/nwaku/config-methods",component:f("/guides/nwaku/config-methods","c44"),exact:!0,sidebar:"guides"},{path:"/guides/nwaku/config-options",component:f("/guides/nwaku/config-options","def"),exact:!0,sidebar:"guides"},{path:"/guides/nwaku/configure-discovery",component:f("/guides/nwaku/configure-discovery","a6b"),exact:!0,sidebar:"guides"},{path:"/guides/nwaku/configure-nwaku",component:f("/guides/nwaku/configure-nwaku","a95"),exact:!0,sidebar:"guides"},{path:"/guides/nwaku/faq",component:f("/guides/nwaku/faq","ad1"),exact:!0,sidebar:"guides"},{path:"/guides/nwaku/find-node-address",component:f("/guides/nwaku/find-node-address","786"),exact:!0,sidebar:"guides"},{path:"/guides/nwaku/run-docker",component:f("/guides/nwaku/run-docker","d03"),exact:!0,sidebar:"guides"},{path:"/guides/nwaku/run-docker-compose",component:f("/guides/nwaku/run-docker-compose","ca4"),exact:!0,sidebar:"guides"},{path:"/guides/nwaku/run-node",component:f("/guides/nwaku/run-node","9f1"),exact:!0,sidebar:"guides"},{path:"/learn/concepts/content-topics",component:f("/learn/concepts/content-topics","45b"),exact:!0,sidebar:"learn"},{path:"/learn/concepts/discv5",component:f("/learn/concepts/discv5","01f"),exact:!0,sidebar:"learn"},{path:"/learn/concepts/dns-discovery",component:f("/learn/concepts/dns-discovery","c5b"),exact:!0,sidebar:"learn"},{path:"/learn/concepts/network-domains",component:f("/learn/concepts/network-domains","5d8"),exact:!0,sidebar:"learn"},{path:"/learn/concepts/peer-discovery",component:f("/learn/concepts/peer-discovery","913"),exact:!0,sidebar:"learn"},{path:"/learn/concepts/peer-exchange",component:f("/learn/concepts/peer-exchange","e58"),exact:!0,sidebar:"learn"},{path:"/learn/concepts/protocols",component:f("/learn/concepts/protocols","13a"),exact:!0,sidebar:"learn"},{path:"/learn/concepts/static-peers",component:f("/learn/concepts/static-peers","9c6"),exact:!0,sidebar:"learn"},{path:"/learn/concepts/transports",component:f("/learn/concepts/transports","6fb"),exact:!0,sidebar:"learn"},{path:"/learn/faq",component:f("/learn/faq","74d"),exact:!0,sidebar:"learn"},{path:"/learn/glossary",component:f("/learn/glossary","cf5"),exact:!0,sidebar:"learn"},{path:"/learn/research",component:f("/learn/research","13c"),exact:!0,sidebar:"learn"},{path:"/learn/security-features",component:f("/learn/security-features","72b"),exact:!0,sidebar:"learn"},{path:"/learn/waku-network",component:f("/learn/waku-network","f0c"),exact:!0,sidebar:"learn"},{path:"/learn/waku-vs-libp2p",component:f("/learn/waku-vs-libp2p","c45"),exact:!0,sidebar:"learn"},{path:"/privacy-policy",component:f("/privacy-policy","4cd"),exact:!0},{path:"/research/",component:f("/research/","e8b"),exact:!0,sidebar:"research"},{path:"/research/benchmarks/postgres-adoption",component:f("/research/benchmarks/postgres-adoption","563"),exact:!0,sidebar:"research"},{path:"/research/research-and-studies/capped-bandwidth",component:f("/research/research-and-studies/capped-bandwidth","ee6"),exact:!0,sidebar:"research"},{path:"/research/research-and-studies/incentivisation",component:f("/research/research-and-studies/incentivisation","d49"),exact:!0,sidebar:"research"},{path:"/research/research-and-studies/maximum-bandwidth",component:f("/research/research-and-studies/maximum-bandwidth","80a"),exact:!0,sidebar:"research"},{path:"/research/research-and-studies/message-propagation",component:f("/research/research-and-studies/message-propagation","46a"),exact:!0,sidebar:"research"},{path:"/research/research-and-studies/rln-key-benchmarks",component:f("/research/research-and-studies/rln-key-benchmarks","5d8"),exact:!0,sidebar:"research"},{path:"/rules-of-engagement",component:f("/rules-of-engagement","0fc"),exact:!0},{path:"/terms",component:f("/terms","37d"),exact:!0}]},{path:"*",component:f("*")}]},26724:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.onRouteDidUpdate=void 0;const r=n(70655),a=n(4074);r.__importDefault(n(10412)).default.canUseDOM&&(()=>{if(a.HOSTNAMES.length>0?!a.HOSTNAMES.includes(window.location.hostname):"localhost"===window.location.hostname)return;!function(e,t,n,r){t[r]=t[r]||function(){(t[r].q=t[r].q||[]).push(arguments)};const a=e.createElement("script"),o=e.getElementsByTagName("script")[0];a.async=1,a.src=n,a.id="fathom-script",o.parentNode.insertBefore(a,o)}(document,window,a.SCRIPT_URL,"fathom");const{fathom:e}=window;e("set","siteId",a.SITE_ID),e("trackPageview")})();t.onRouteDidUpdate=e=>{let{location:t,previousLocation:n}=e;window.fathom&&t.pathname!==n?.pathname&&window.fathom("trackPageview")}},85711:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createPromise=t.ResultType=void 0;const r=n(70655),a=n(90022),o=n(91073),i=n(67133),l=n(98202),s=r.__importStar(n(61029)),u=e=>{let{versionUrl:t,searchContextByPaths:n}=e,r=window.location.pathname;if(r=r.endsWith("/")?r:r+"/",!Array.isArray(n)||!r.startsWith(t))return"";const a=r.substring(t.length);return n.find((e=>a===e||a.startsWith(`${e}/`)))??""};class c{constructor(e){this.config=e,this.loading=!1,this.source=null,this.init=async()=>{this.loading=!0;const{wrappedIndexes:e,zhDictionary:t}=await(async e=>{const{wrappedIndexes:t,zhDictionary:n}=await(0,a.fetchIndexes)(e.versionUrl,e.searchContext);return{wrappedIndexes:t,zhDictionary:n}})({versionUrl:this.baseUrl,searchContext:u({versionUrl:this.baseUrl,searchContextByPaths:this.searchContextByPaths})});this.source=(0,l.SearchSourceFactory)(e,t,this.config.resultsLimit)},this.query=async e=>{if(!this.source)throw new Error("Not initialized");const{promise:n,callback:r}=(0,t.createPromise)();return this.source&&this.source(e,r),{results:(await n).map((e=>this.formatResult(e)))}},this.formatResult=e=>({...e,type:this.resultTypeToString(e.type),page:e.page?this.formatDocument(e.page):null,document:e.document?this.formatDocument(e.document):null,highlighted:(0,i.highlightStemmed)(e.document.t,(0,o.getStemmedPositions)(e.metadata,"t"),e.tokens)}),this.resultTypeToString=e=>({0:d.Title,1:d.Heading,2:d.Paragraph}[e]),this.formatDocument=e=>({id:e.i,title:e.t,url:e.u,hash:e.h,parentId:e.p,breadcrumb:e.b,sectionTitle:e.s}),this.baseUrl=e.preferredVersionPath,this.searchContextByPaths=e.searchContextByPaths??""}}var d;!function(e){e.Title="title",e.Heading="heading",e.Paragraph="paragraph"}(d=t.ResultType||(t.ResultType={}));t.createPromise=()=>{let e,t;const n=new Promise(((n,r)=>{e=n,t=r}));return{reject:t,resolve:e,promise:n,callback:(n,r)=>{r?t(r):e(n)}}};(async()=>{if("undefined"==typeof window)return;const e=window;e.getProxiedGeneratedData=()=>s,e.createSearchInstance=async e=>new c(e)})()},55061:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.IconEmail=t.IconRemove=t.IconAdd=t.IconDownload=t.IconAvatar=t.IconX=t.IconTelegramWhite=t.IconDiscordWhite=t.IconExternalLink=t.IconFullscreenExit=t.IconFullscreen=t.IconEdit=t.IconClose=t.IconHistory=t.IconCopy=t.IconGScholar=t.IconDropdown=t.IconSearch=t.IconFolderFilled=t.IconDot=t.IconLinkedin=t.IconDiscourse=t.IconTelegram=t.IconTwitter=t.IconStatus=t.IconDiscord=t.IconGithub=t.IconFolder=t.IconArrowLeft=t.IconArrowRight=t.IconArrowLeftCircle=t.IconArrowRightCircle=t.Icon=void 0;const r=n(70655),a=n(86010),o=r.__importDefault(n(67294)),i=r.__importDefault(n(27861)),l=r.__importDefault(n(19044)),s=r.__importDefault(n(80255)),u=r.__importDefault(n(67146)),c=r.__importDefault(n(68425)),d=r.__importDefault(n(88121)),f=r.__importDefault(n(62082)),p=r.__importDefault(n(80469)),h=r.__importDefault(n(94793)),m=r.__importDefault(n(14607)),g=r.__importDefault(n(50437)),v=r.__importDefault(n(23179)),b=r.__importDefault(n(19818)),y=r.__importDefault(n(38981)),w=r.__importDefault(n(28487)),x=r.__importDefault(n(94177)),k=r.__importDefault(n(58611)),_=r.__importDefault(n(13042)),E=r.__importDefault(n(96367)),S=r.__importDefault(n(6907)),C=r.__importDefault(n(59570)),T=r.__importDefault(n(26890)),O=r.__importDefault(n(74297)),D=r.__importDefault(n(33336)),P=r.__importDefault(n(78951)),N=r.__importDefault(n(84629)),I=r.__importDefault(n(23816)),A=r.__importDefault(n(35245)),L=r.__importDefault(n(68902)),R=r.__importDefault(n(86089)),j=r.__importDefault(n(92358)),M=r.__importDefault(n(96867));t.Icon=e=>{const{children:t,size:n="m"}=e;return o.default.createElement("div",{className:(0,a.clsx)(i.default.icon,i.default[n],e.stroke&&i.default.stroke,e.fill&&i.default.fill,e.className&&e.className)},t)};t.IconArrowRightCircle=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(c.default,null));t.IconArrowLeftCircle=e=>o.default.createElement(t.Icon,null,o.default.createElement(s.default,null));t.IconArrowRight=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(d.default,null));t.IconArrowLeft=e=>o.default.createElement(t.Icon,null,o.default.createElement(u.default,null));t.IconFolder=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(_.default,null));t.IconGithub=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(C.default,null));t.IconDiscord=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(g.default,null));t.IconStatus=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(I.default,null));t.IconTwitter=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(R.default,null));t.IconTelegram=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(L.default,null));t.IconDiscourse=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(v.default,null));t.IconLinkedin=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(D.default,null));t.IconDot=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(b.default,null));t.IconFolderFilled=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(_.default,null));t.IconSearch=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(N.default,null));t.IconDropdown=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(w.default,null));t.IconGScholar=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(T.default,null));t.IconCopy=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(h.default,null));t.IconHistory=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(O.default,null));t.IconClose=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(p.default,null));t.IconEdit=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(x.default,null));t.IconFullscreen=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(S.default,null));t.IconFullscreenExit=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(E.default,null));t.IconExternalLink=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(k.default,null));t.IconDiscordWhite=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(m.default,null));t.IconTelegramWhite=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(A.default,null));t.IconX=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(j.default,null));t.IconAvatar=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(f.default,null));t.IconDownload=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(y.default,null));t.IconAdd=e=>o.default.createElement(t.Icon,{...e,stroke:!0},o.default.createElement(l.default,null));t.IconRemove=e=>o.default.createElement(t.Icon,{...e,stroke:!0},o.default.createElement(P.default,null));t.IconEmail=e=>o.default.createElement(t.Icon,{...e},o.default.createElement(M.default,null))},78870:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});n(70655).__exportStar(n(55061),t)},40466:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Modal=void 0;const r=n(70655),a=r.__importDefault(n(86010)),o=r.__importDefault(n(67294)),i=n(89164),l=n(96507),s=n(38954);n(22473);t.Modal=e=>{let{open:t=!1,onClose:n,keepMounted:r=!1,className:u,children:c,...d}=e;const f=(0,l.useHydrated)(),p=()=>{n&&n()};return(0,i.useKeyPressEvent)((e=>"Escape"===e.code),(e=>{p()})),f&&(t||r)?o.default.createElement(s.Portal,{containerId:"lsd-presentation",id:d.id},o.default.createElement("div",{className:(0,a.default)(u,"l-modal",t&&"l-modal--open"),...d},o.default.createElement("div",{className:"l-modal__container"},o.default.createElement("div",{className:"l-modal__content"},c),o.default.createElement("div",{className:"l-modal__backdrop",onClick:p})))):o.default.createElement(o.default.Fragment,null)}},38954:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Portal=void 0;const r=n(70655).__importDefault(n(67294)),a=n(73935),o=n(40653);t.Portal=e=>{let{children:t,containerId:n,id:i}=e;if("undefined"==typeof window)return r.default.createElement(r.default.Fragment,null);const l=(0,o.usePortal)({parentId:n});return(0,a.createPortal)(t,l,i)}},40653:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.usePortal=void 0;const r=n(67294),a=n(89321);t.usePortal=e=>{let{parentId:t}=e;const n=(0,r.useRef)();return n.current||(n.current=document.createElement("div")),(0,r.useEffect)((()=>{if(n.current)return document.getElementById(t)?.appendChild(n.current),()=>{const e=n.current;e&&(0,a.settleSync)((()=>document.getElementById(t)?.removeChild(e)))}}),[t,n.current]),n.current}},19843:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LightBoxWrapper=t.useLightBox=t.LightBoxContext=t.LightBoxProvider=void 0;const r=n(70655),a=n(31665),o=r.__importDefault(n(29785)),i=r.__importDefault(n(86010)),l=r.__importStar(n(67294)),s=r.__importStar(n(33199)),u=n(89164),c=n(55061),d=n(38954),f=n(96507),p=n(53708),h=r.__importDefault(n(10153));t.LightBoxProvider=e=>{let{children:n}=e;const r=(0,f.useHydrated)(),s=(0,u.useWindowScroll)(),[m,g]=(0,l.useState)(null),[v,b]=(0,l.useState)({opacity:"0.5"}),y=(0,p.useIsMobile)(),w=(0,l.useMemo)((()=>({opacity:1,transform:"scale(1) translate(0px, 0px)",transition:"0.3s"})),[m]),x=e=>{g(e);const t=document.body.clientWidth,n=window.innerHeight,r=window.innerWidth>768?.9375*t:t-32,a=n-128,o=e.getBoundingClientRect(),i=Math.min(a/o.height,r/o.width),l=[o.left+o.width/2,o.top+o.height/2],s=[t/2,n/2].map(((e,t)=>(e-l[t])/i));b({zIndex:202,transform:`scale(${i}) translate(${s[0]}px, ${s[1]}px)`,position:"relative"})},k=()=>{g(null)};return(0,l.useEffect)((()=>{m&&window.innerWidth>768&&k()}),[s]),(0,l.useEffect)((()=>{if(y&&m){document.querySelector("html").style.overflow="hidden"}else{document.querySelector("html").style.overflow="initial"}}),[y,m]),l.default.createElement(t.LightBoxContext.Provider,{value:{active:m,style:w,activeStyle:v,display:x,close:k,toggle:e=>{const t=m;k(),t!==e&&x(e)}}},n,r&&l.default.createElement(d.Portal,{containerId:"lsd-presentation"},l.default.createElement(l.default.Fragment,null,l.default.createElement("div",{className:(0,i.default)(h.default.backdrop,m&&h.default.visible)}),l.default.createElement("div",{className:(0,i.default)(h.default.navWrapper,m&&h.default.visible)},l.default.createElement("nav",{className:(0,i.default)(h.default.nav,"navbar",m&&h.default.visible)},l.default.createElement(o.default,null),l.default.createElement(a.IconButton,{size:"medium",onClick:k},l.default.createElement(c.IconFullscreenExit,null)))))))},t.LightBoxContext=l.default.createContext({style:{},activeStyle:{},active:null,close:null,toggle:null,display:null});t.useLightBox=()=>{const e=(0,l.useContext)(t.LightBoxContext);return{getStyle:t=>({...e.style,...t===e.active?e.activeStyle:{}}),style:e.style,activeStyle:e.activeStyle,active:e.active,isActive:!!e.active,close:e.close,toggle:e.toggle,display:e.display,isActiveElement:t=>e.active===t}};t.LightBoxWrapper=e=>{let{children:n}=e;const r=(0,l.useRef)(null),o=(0,l.useRef)(null),{getStyle:u,display:d,isActiveElement:f}=(0,t.useLightBox)(),m=(0,p.useIsMobile)(),g=(0,l.useCallback)((e=>{let{x:t,y:n,scale:r}=e;const{current:a}=o;if(a){const e=(0,s.make3dTransformValue)({x:t,y:n,scale:r});a.style.setProperty("transform",e)}}),[]),v=m&&r.current&&f(r.current)?l.default.createElement(s.default,{onUpdate:g,doubleTapZoomOutOnMaxScale:!0,maxZoom:3},l.default.createElement("div",{ref:o},n)):l.default.createElement(l.default.Fragment,null,n,l.default.createElement(a.IconButton,{className:h.default.fullscreenButton,size:"medium",onClick:()=>r.current&&d(r.current)},l.default.createElement(c.IconFullscreen,null)));return l.default.createElement(l.default.Fragment,null,l.default.createElement("div",{className:(0,i.default)(h.default.wrapper,f(r.current)&&h.default.active),ref:r,style:r.current?u(r.current):{}},v))}},78991:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ThemeProvider=void 0;const r=n(70655),a=n(31665),o=n(70917),i=r.__importDefault(n(67294)),l=n(92198);t.ThemeProvider=e=>{let{children:t}=e;const n=(0,l.useTheme)();return i.default.createElement(a.ThemeProvider,{theme:n.current,injectCssVars:!1},i.default.createElement(o.Global,{styles:n.cssVars}),t)}},27967:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});n(70655).__exportStar(n(78991),t)},89321:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.settleSync=t.settle=void 0;t.settle=async e=>{try{return["function"==typeof e?await e():await e,void 0]}catch(t){return[void 0,t]}};t.settleSync=e=>{try{return[e(),void 0]}catch(t){return[void 0,t]}}},28097:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ensureTrailingSlash=t.ensureTrailingString=void 0;t.ensureTrailingString=(e,t)=>e.endsWith(t)?e:e+t;t.ensureTrailingSlash=e=>(0,t.ensureTrailingString)(e,"/")},92198:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useTheme=void 0;const r=n(31665),a=n(82818),o=n(70917),i=n(67294),l=n(54400);t.useTheme=()=>{const e=(0,a.useColorMode)(),{typography:t}=(0,l.useThemeOptions)(),n=t?.genericFontFamily??"sans-serif",s=r.defaultThemes,u=(0,i.useMemo)((()=>{const e={breakpoints:{},palette:{},typography:{},typographyGlobal:{genericFontFamily:n},spacing:[]};return{light:(0,r.createTheme)(e,s.light),dark:(0,r.createTheme)(e,s.dark)}}),[s,n]);return{dark:u.dark,light:u.light,current:u[e.colorMode],colorMode:e.colorMode,cssVars:(c=u.light,d=u.dark,f=u.light,(0,i.useMemo)((()=>o.css` + html:not([data-theme]) { + ${f.cssVars} + } + + html[data-theme='light'] { + ${c.cssVars} + } + + html[data-theme='dark'] { + ${d.cssVars} + } + `),[d,c]))};var c,d,f}},55873:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useEventListener=void 0;const r=n(67294);t.useEventListener=(e,t,n,a,o)=>{const i=(0,r.useMemo)((()=>"string"==typeof e?e:e()),[]),l=(0,r.useMemo)((()=>"function"==typeof t?t():t),[t]);(0,r.useEffect)((()=>{if(l?.addEventListener&&l?.removeEventListener)return l.addEventListener(i,n,a),()=>{l.removeEventListener(i,n,a)}}),[i,l])}},96507:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useHydrated=void 0;const r=n(67294);t.useHydrated=()=>{const[e,t]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{t(!0)}),[]),e}},53708:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useIsMobile=void 0;const r=n(89164);t.useIsMobile=()=>(0,r.useMedia)("(max-width: 1199px)")},81803:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.usePersistedHistory=void 0;const r=n(89164);t.usePersistedHistory=(e,t)=>{const n=t?.unique??!1,a=t?.equals??((e,t)=>e===t),o=t?.maxItems??null,[i,l]=(0,r.useLocalStorage)("logos-docusaurus-theme-"+e,[]),s=e=>{l((i??[]).filter(((t,n)=>!e(t,n))))};return{add:e=>{const t=i??[],r=[e,...n?t.filter((t=>!a(t,e))):t];l(o?r.slice(0,o):r)},clear:()=>{l([])},remove:s,removeByIndex:e=>{s(((t,n)=>n===e))},list:i}}},54400:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useDocThemeOptions=t.useThemeOptions=void 0;const r=n(70655),a=n(80143),o=r.__importDefault(n(52263));t.useThemeOptions=()=>{const{siteConfig:{customFields:e={}}}=(0,o.default)();return e["logos-docusaurus-theme"]??{}};t.useDocThemeOptions=()=>{const e=(0,a.useActivePlugin)(),n=(0,t.useThemeOptions)();return e?n?.docs?.[e?.pluginId]??{}:{}}},521:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useWindowEventListener=void 0;const r=n(55873);t.useWindowEventListener=function(e,t,n,a){void 0===a&&(a=[]),(0,r.useEventListener)(e,(()=>"undefined"!=typeof window&&window),t,n,a)}},66354:(e,t,n)=>{"use strict";const r=n(70655),a=n(31665),o=n(95999),i=r.__importDefault(n(72389)),l=r.__importDefault(n(55211)),s=r.__importDefault(n(67080)),u=r.__importDefault(n(86010)),c=r.__importDefault(n(67294)),d=r.__importDefault(n(8633));t.Z=c.default.memo((function(e){let{className:t,buttonClassName:n,value:r,onChange:f}=e;const p=(0,i.default)(),h=(0,o.translate)({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,o.translate)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,o.translate)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return c.default.createElement(a.IconButton,{className:(0,u.default)("clean-btn",d.default.toggle,t,!p&&d.default.toggleButtonDisabled,n),type:"button",onClick:()=>f("dark"===r?"light":"dark"),disabled:!p,title:h,"aria-label":h,"aria-live":"polite"},c.default.createElement(s.default,{className:(0,u.default)(d.default.toggleIcon,d.default.lightToggleIcon)}),c.default.createElement(l.default,{className:(0,u.default)(d.default.toggleIcon,d.default.darkToggleIcon)}))}))},52601:(e,t,n)=>{"use strict";const r=n(70655),a=n(31665),o=r.__importDefault(n(86010)),i=r.__importDefault(n(67294)),l=r.__importDefault(n(79762));t.Z=function(e){let{style:t,links:n,logo:r,copyright:s}=e;const[u,c]=(e=>{const t=[],n=[];for(const r of e)"title"in r&&"string"==typeof r.title&&r.title.startsWith("shared:")?n.push({...r,title:r.title.slice(7)}):t.push(r);return[t,n]})(n.props.links);return i.default.createElement("footer",{className:(0,o.default)("footer",{"footer--dark":"dark"===t})},i.default.createElement("div",{className:(0,o.default)("container","container-fluid",l.default.firstRow)},(r||s)&&i.default.createElement(i.default.Fragment,null,i.default.createElement("div",{className:"footer__bottom text--center"},r&&i.default.createElement("div",{className:"margin-bottom--sm"},r),s)),i.default.cloneElement(n,{links:u})),i.default.createElement("div",{className:(0,o.default)(l.default.secondRow)},i.default.createElement("span",{className:(0,o.default)("footer__bottom text--center")},"Built by"," ",i.default.createElement("a",{href:"https://free.technology/",target:"_blank",className:(0,o.default)(l.default.footerLink)},"IFT")),i.default.cloneElement(n,{links:c})),i.default.createElement(a.Button,{className:l.default.backToTop,size:"small",onClick:()=>{window.scrollTo({top:0,behavior:"smooth"})}},"Back to top \u2191"))}},90988:(e,t,n)=>{"use strict";const r=n(70655).__importDefault(n(67294)),a=n(82818),o=n(91338),i=(0,a.composeProviders)([o.AnnouncementBarProvider,o.ScrollControllerProvider,o.DocsPreferredVersionContextProvider,o.PluginHtmlClassNameProvider,o.NavbarProvider]);t.Z=function(e){let{children:t}=e;return r.default.createElement(i,null,t)}},16853:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(70655),a=r.__importDefault(n(67294)),o=r.__importDefault(n(39960)),i=r.__importDefault(n(44996)),l=r.__importDefault(n(52263)),s=n(82818),u=r.__importDefault(n(16019));function c(e){let{logo:t,alt:n,imageClassName:r}=e;const o={light:(0,i.default)(t.src),dark:(0,i.default)(t.srcDark||t.src)},l=a.default.createElement(u.default,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?a.default.createElement("div",{className:r},l):l}t.default=function(e){const{siteConfig:{title:t}}=(0,l.default)(),{navbar:{title:n,logo:r}}=(0,s.useThemeConfig)(),{imageClassName:u,titleClassName:d,...f}=e,p=(0,i.default)(r?.href||"/"),h=n?"":t,m=r?.alt??h;return a.default.createElement(o.default,{to:p,...f,...r?.target&&{target:r.target}},r&&a.default.createElement(c,{logo:r,alt:m,imageClassName:u}),null!=n&&a.default.createElement("b",{className:d},n))}},10428:(e,t,n)=>{"use strict";const r=n(70655),a=n(31665),o=n(82818),i=n(91338),l=r.__importDefault(n(2101)),s=r.__importDefault(n(29785)),u=r.__importDefault(n(29865)),c=r.__importDefault(n(4710)),d=r.__importDefault(n(33760)),f=r.__importDefault(n(86010)),p=r.__importDefault(n(67294)),h=n(96507),m=r.__importDefault(n(90826));function g(e){let{items:t}=e;return p.default.createElement(p.default.Fragment,null,t.map(((e,t)=>p.default.createElement(o.ErrorCauseBoundary,{key:t,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})},p.default.createElement(c.default,{...e})))))}t.Z=function(){const e=(0,h.useHydrated)(),t=(0,i.useNavbarMobileSidebar)(),n=(0,o.useThemeConfig)().navbar.items,[r,c]=(0,i.splitNavbarItems)(n.filter((e=>!["search"].includes(e.type??"")))),v=n.find((e=>"search"===e.type));return p.default.createElement("div",{className:"navbar__inner"},p.default.createElement("div",{className:"navbar__left"},p.default.createElement(s.default,null)),p.default.createElement("div",{className:"navbar__left-items"},p.default.createElement(g,{items:r})),p.default.createElement("div",{className:"navbar__right-items"},p.default.createElement(g,{items:c}),p.default.createElement(a.IconButtonGroup,{className:m.default.iconButtonGroup,size:"medium"},p.default.createElement(l.default,{key:"color-toggle",className:(0,f.default)(m.default.colorModeToggle,"navbar__color-mode-toggle")}),e&&p.default.createElement(p.default.Fragment,{key:"search"},v&&p.default.createElement(d.default,null)),p.default.createElement(p.default.Fragment,{key:"mobile-sidebar-toggle"},!t.disabled&&p.default.createElement(u.default,null)))))}},4818:(e,t,n)=>{"use strict";const r=n(70655),a=r.__importDefault(n(67294)),o=r.__importDefault(n(86010)),i=n(82818),l=n(91338),s=n(95999),u=r.__importDefault(n(2203)),c=r.__importDefault(n(97087));function d(e){return a.default.createElement("div",{role:"presentation",...e,className:(0,o.default)("navbar-sidebar__backdrop",e.className)})}t.Z=function(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:r}}=(0,i.useThemeConfig)(),f=(0,l.useNavbarMobileSidebar)(),{navbarRef:p,isNavbarVisible:h}=(0,l.useHideableNavbar)(n);return a.default.createElement("nav",{ref:p,"aria-label":(0,s.translate)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,o.default)("navbar","navbar--fixed-top",n&&[c.default.navbarHideable,!h&&c.default.navbarHidden],{"navbar--dark":"dark"===r,"navbar--primary":"primary"===r,"navbar-sidebar--show":f.shown})},t,a.default.createElement(d,{onClick:f.toggle}),a.default.createElement(u.default,null))}},29785:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(70655),a=r.__importDefault(n(67294)),o=r.__importDefault(n(16853));t.default=function(){return a.default.createElement(o.default,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}},42977:(e,t,n)=>{"use strict";const r=n(70655),a=r.__importDefault(n(67294)),o=n(91338),i=n(95999),l=r.__importDefault(n(2101)),s=r.__importDefault(n(29785)),u=n(31665),c=r.__importDefault(n(33760));function d(){const e=(0,o.useNavbarMobileSidebar)();return a.default.createElement("button",{type:"button","aria-label":(0,i.translate)({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()},a.default.createElement(u.CloseIcon,null))}t.Z=function(){return a.default.createElement("div",{className:"navbar-sidebar__brand"},a.default.createElement(s.default,null),a.default.createElement(l.default,{className:"margin-right--md"}),a.default.createElement(c.default,null),a.default.createElement(d,null))}},82892:(e,t,n)=>{"use strict";const r=n(70655),a=r.__importDefault(n(67294)),o=r.__importDefault(n(86010)),i=n(91338),l=r.__importDefault(n(88507));t.Z=function(e){let{header:t,primaryMenu:n,secondaryMenu:r}=e;const{shown:s}=(0,i.useNavbarSecondaryMenu)();return a.default.createElement("div",{className:(0,o.default)("navbar-sidebar",s&&"navbar-sidebar--show-secondary")},t,a.default.createElement("div",{className:(0,o.default)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":s})},a.default.createElement("div",{className:"navbar-sidebar__item menu"},n,!s&&a.default.createElement(l.default,null)),a.default.createElement("div",{className:"navbar-sidebar__item menu"},r)))}},38732:(e,t,n)=>{"use strict";const r=n(70655),a=n(31665),o=n(82818),i=n(91338),l=r.__importDefault(n(95999)),s=n(78870),u=r.__importDefault(n(67294));function c(e){return u.default.createElement("button",{...e,type:"button",className:"clean-btn navbar-sidebar__back"},u.default.createElement(s.IconArrowLeft,null),u.default.createElement(a.Typography,null,u.default.createElement(l.default,{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)"},"Back to main menu")))}t.Z=function(){const e=0===(0,o.useThemeConfig)().navbar.items.length,t=(0,i.useNavbarSecondaryMenu)();return u.default.createElement(u.default.Fragment,null,!e&&u.default.createElement(c,{onClick:()=>t.hide()}),t.content)}},27654:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(70655),a=n(31665),o=n(82818),i=n(91338),l=r.__importDefault(n(4710)),s=r.__importDefault(n(51125)),u=r.__importDefault(n(86010)),c=r.__importStar(n(67294)),d=r.__importDefault(n(83244));function f(e,t){return e.some((e=>function(e,t){return!!(0,i.isSamePath)(e.to,t)||!!(0,o.isRegexpStringMatch)(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function p(e){let{items:t,position:n,className:r,onClick:o,...i}=e;const f=(0,c.useRef)(null),[p,h]=(0,c.useState)(!1);return(0,c.useEffect)((()=>{const e=e=>{f.current&&!f.current.contains(e.target)&&h(!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)}}),[f]),c.default.createElement("div",{ref:f,className:(0,u.default)("navbar__item",d.default.dropdownNavbarItem,"dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":p})},c.default.createElement(s.default,{"aria-haspopup":"true","aria-expanded":p,role:"button",href:i.to?void 0:"#",className:(0,u.default)("navbar__link",r),...i,onClick:i.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),h(!p))}},i.children??i.label),c.default.createElement(a.ChevronDownIcon,{className:(0,u.default)("margin-left-8","cursor-pointer")}),c.default.createElement("ul",{className:"dropdown__menu"},t.map(((e,t)=>c.default.createElement(l.default,{isDropdownItem:!0,activeClassName:"dropdown__link--active",...e,key:t})))))}function h(e){let{items:t,className:n,position:r,onClick:d,...p}=e;const h=(0,i.useLocalPathname)(),m=f(t,h),{collapsed:g,toggleCollapsed:v,setCollapsed:b}=(0,o.useCollapsible)({initialState:()=>!m});return(0,c.useEffect)((()=>{m&&b(!m)}),[h,m,b]),c.default.createElement("li",{className:(0,u.default)("menu__list-item",{"menu__list-item--collapsed":g})},c.default.createElement(s.default,{role:"button",className:(0,u.default)("menu__link menu__link--sublist menu__link--sublist-caret",n),...p,onClick:e=>{e.preventDefault(),v()}},c.default.createElement(a.Typography,{variant:"body1"},p.children??p.label)),c.default.createElement(o.Collapsible,{lazy:!0,as:"ul",className:"menu__list",collapsed:g},t.map(((e,t)=>c.default.createElement(l.default,{mobile:!0,isDropdownItem:!0,onClick:d,activeClassName:"menu__link--active",...e,key:t})))))}t.default=function(e){let{mobile:t=!1,...n}=e;const r=t?h:p;return c.default.createElement(r,{...n})}},12197:(e,t,n)=>{"use strict";const r=n(70655),a=r.__importDefault(n(67294)),o=r.__importDefault(n(52263)),i=n(91338),l=n(95999),s=n(28143),u=r.__importDefault(n(27654));t.Z=function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:r,...c}=e;const{i18n:{currentLocale:d,locales:f,localeConfigs:p}}=(0,o.default)(),h=(0,i.useAlternatePageUtils)(),{search:m,hash:g}=(0,s.useLocation)(),v=[...n,...f.map((e=>{const n=`${`pathname://${h.createUrl({locale:e,fullyQualified:!1})}`}${m}${g}`;return{label:p[e]?.label,lang:p[e]?.htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===d?t?"menu__link--active":"dropdown__link--active":""}})),...r],b=t?(0,l.translate)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):p[d]?.label.substring(0,2).toUpperCase();return a.default.createElement(u.default,{...c,mobile:t,label:a.default.createElement(a.default.Fragment,null,b),items:v})}},51125:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(70655),a=n(31665),o=r.__importDefault(n(13919)),i=r.__importDefault(n(39960)),l=n(82818),s=r.__importDefault(n(44996)),u=r.__importDefault(n(67294)),c=n(55061),d=r.__importDefault(n(88822));t.default=function(e){let{activeBasePath:t,activeBaseRegex:n,to:r,href:f,label:p,html:h,isDropdownLink:m,prependBaseUrlToHref:g,...v}=e;const b=(0,s.default)(r),y=(0,s.default)(t),w=(0,s.default)(f,{forcePrependBaseUrl:!0}),x=p&&f&&!(0,o.default)(f),k=h?{dangerouslySetInnerHTML:{__html:h}}:{children:u.default.createElement(a.Typography,{component:"div",variant:"body2",className:d.default.linkContent},p,x&&u.default.createElement(c.IconExternalLink,{className:d.default.externalLinkIcon}))};return f?u.default.createElement(i.default,{href:g?w:f,...v,...k}):u.default.createElement(i.default,{to:b,isNavLink:!0,...(t||n)&&{isActive:(e,t)=>n?(0,l.isRegexpStringMatch)(n,t.pathname):t.pathname.startsWith(y)},...v,...k})}},85140:(e,t,n)=>{"use strict";const r=n(70655),a=n(91338),o=r.__importDefault(n(67294)),i=n(19843),l=n(27967),s=n(54400),u=r.__importDefault(n(36459));t.Z=function(e){let{children:t}=e;const n=(0,s.useDocThemeOptions)(),r=n?.sidebar?.hide;return o.default.createElement(a.ColorModeProvider,null,o.default.createElement(l.ThemeProvider,null,o.default.createElement(i.LightBoxProvider,null,o.default.createElement("div",{className:u.default.root,"data-hidden-doc-sidebar":r},t))))}},7020:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SearchBar=void 0;const r=n(70655),a=n(31665),o=r.__importStar(n(67294)),i=n(40466),l=n(81803),s=n(521),u=n(71044),c=r.__importDefault(n(31259)),d=n(19323),f=n(72997),p=n(43110);t.SearchBar=e=>{let{}=e;const t=(0,l.usePersistedHistory)("search",{unique:!0,equals:(e,t)=>e.title===t.title&&e.href===t.href,maxItems:10}),n=(0,u.useSearch)(),r=(0,o.useRef)(null),[h,m]=(0,o.useState)(""),[g,v]=(0,o.useState)([]),[b,y]=(0,o.useState)(!1);(0,o.useEffect)((()=>{h.length>0?(async e=>{const{results:t}=await n.query(e);v(t)})(h):v([])}),[h]),(0,o.useEffect)((()=>{b?(()=>{const e=r.current;if(!e)return;const t=e.querySelector("input");t&&setTimeout((()=>{t.focus()}),50)})():m("")}),[b]);return(0,s.useWindowEventListener)("keydown",(e=>{(e.ctrlKey||e.metaKey)&&"KeyK"===e.code&&(e.preventDefault(),y(!0))}),{},[]),o.default.createElement(o.default.Fragment,null,o.default.createElement(a.IconButton,{onClick:()=>y(!0),size:"medium"},o.default.createElement(a.SearchIcon,null)),o.default.createElement(i.Modal,{keepMounted:!0,id:"search-modal",open:b,onClose:()=>y(!1),className:c.default.modal},o.default.createElement("div",{className:c.default.header},o.default.createElement(f.SearchInput,{containerRef:r,onClear:()=>{m("")},value:h,onChange:e=>{m(e.target.value)}}),o.default.createElement(a.IconButton,{className:c.default.closeButton,size:"medium",onClick:()=>y(!1)},o.default.createElement(a.CloseIcon,{color:"primary"}))),h.length>0&&o.default.createElement(p.SearchResults,{results:g,onNavigate:(e,n)=>{e.preventDefault(),y(!1),t.add(n),window.location.href=n.href}}),0===h.length&&o.default.createElement(d.SearchHistory,{history:t.list??[],onRemove:t.removeByIndex,onClose:()=>y(!1)})))}},19323:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SearchHistory=void 0;const r=n(70655),a=n(31665),o=r.__importDefault(n(86010)),i=r.__importDefault(n(67294)),l=n(55061),s=n(33493),u=r.__importDefault(n(61699));t.SearchHistory=e=>{let{history:t=[],onRemove:n,onClose:r,className:c,children:d,...f}=e;return i.default.createElement("div",{className:(0,o.default)(c,u.default.root,0===t.length&&u.default.empty),...f},0===t.length?i.default.createElement(s.SearchResultMessage,null,"No recent searches"):i.default.createElement(i.default.Fragment,null,i.default.createElement(a.Typography,{className:u.default.title,variant:"subtitle2",component:"div"},"Recent"),t.map(((e,t)=>i.default.createElement("div",{key:t,className:u.default.item},i.default.createElement(l.IconHistory,null),i.default.createElement(a.Typography,{variant:"subtitle2",component:"a",href:e.href,className:u.default.itemTitle,dangerouslySetInnerHTML:{__html:e.title},onClick:()=>r&&r()}),i.default.createElement("button",{className:"clean-btn",onClick:()=>n(t)},i.default.createElement(l.IconClose,null)))))))}},72997:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SearchInput=void 0;const r=n(70655),a=n(31665),o=r.__importDefault(n(86010)),i=r.__importDefault(n(67294)),l=n(89164),s=r.__importDefault(n(9592));t.SearchInput=e=>{let{value:t="",active:n,onChange:r,onClear:u,onFocus:c,onCancel:d,className:f,inputProps:{ref:p,...h}={placeholder:""},containerRef:m,...g}=e;const v=(0,l.useMedia)("(max-width: 996px)"),b=n||t?.length>0;return i.default.createElement("div",{ref:m,className:(0,o.default)(s.default.root,b&&s.default.expanded,f),onKeyDown:e=>{"Escape"===e.code&&t.length>0&&(e.stopPropagation(),u&&u())},...g},i.default.createElement(a.TextField,{className:s.default.textField,value:t,placeholder:b||v?h.placeholder:"",onChange:r,onFocus:e=>{c&&c()},clearButton:!0,icon:i.default.createElement(a.SearchIcon,{color:"primary"}),...h}))}},49067:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SearchResultGroup=void 0;const r=n(70655),a=n(31665),o=r.__importDefault(n(86010)),i=r.__importDefault(n(67294)),l=r.__importDefault(n(1443));t.SearchResultGroup=e=>{let{className:t,title:n="",children:r,...s}=e;return i.default.createElement("div",{className:(0,o.default)(l.default.root,t),...s},i.default.createElement("div",null,i.default.createElement(a.Typography,{variant:"subtitle2"},n)),i.default.createElement("ul",null,r))}},38594:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});n(70655).__exportStar(n(49067),t)},51105:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SearchResultItem=void 0;const r=n(70655),a=r.__importDefault(n(39960)),o=r.__importDefault(n(86010)),i=r.__importDefault(n(67294)),l=r.__importDefault(n(7744)),s=r.__importDefault(n(42924)),u=n(95571),c=n(36301),d=r.__importDefault(n(18589)),f={[c.SearchDocumentType.Title]:i.default.createElement(l.default,{className:(0,o.default)(d.default.icon,d.default.fill)}),[c.SearchDocumentType.Heading]:i.default.createElement(s.default,{className:(0,o.default)(d.default.icon,d.default.fill)}),[c.SearchDocumentType.Paragraph]:i.default.createElement(s.default,{className:(0,o.default)(d.default.icon,d.default.fill)})};t.SearchResultItem=e=>{let{type:t,level:n=0,href:r,title:l,content:s,className:c,linkProps:{className:p,...h}={},...m}=e;const g=f[t];return i.default.createElement(a.default,{href:r,className:(0,o.default)(d.default.root,d.default[`level${n}`],p),...h},i.default.createElement(u.SearchResultItemBase,{title:l,content:s,icon:g,...m}))}},13383:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});n(70655).__exportStar(n(51105),t)},86704:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SearchResultItemBase=void 0;const r=n(70655),a=n(31665),o=r.__importDefault(n(86010)),i=r.__importDefault(n(67294)),l=r.__importDefault(n(86620));t.SearchResultItemBase=e=>{let{icon:t,title:n,content:r,className:s,...u}=e;return i.default.createElement("li",{className:(0,o.default)(l.default.root,s),...u},i.default.createElement("span",null,t),i.default.createElement("div",null,n&&i.default.createElement(a.Typography,{variant:"subtitle2",component:"span",dangerouslySetInnerHTML:{__html:n}})))}},95571:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});n(70655).__exportStar(n(86704),t)},33493:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SearchResultMessage=void 0;const r=n(70655),a=n(31665),o=r.__importDefault(n(86010)),i=r.__importDefault(n(67294)),l=r.__importDefault(n(38076));t.SearchResultMessage=e=>{let{className:t,children:n,...r}=e;return i.default.createElement(a.Typography,{className:(0,o.default)(t,l.default.root),variant:"subtitle2",component:"div",...r},i.default.createElement("span",null,n))}},43110:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SearchResults=void 0;const r=n(70655),a=r.__importDefault(n(86010)),o=r.__importStar(n(67294)),i=n(38594),l=n(13383),s=n(33493),u=n(81104),c=r.__importDefault(n(20550));t.SearchResults=e=>{let{results:t,className:n,onNavigate:r,...d}=e;const f=t.length,p=(0,o.useMemo)((()=>(0,u.groupSearchResult)(t)),[t]);return o.default.createElement("div",{className:(0,a.default)(c.default.root,0===f&&c.default.noResults)},0===f&&o.default.createElement(s.SearchResultMessage,null,"No result."),o.default.createElement("div",{className:(0,a.default)(c.default.groups)},p.map(((e,t)=>{let[n,a]=e;return o.default.createElement(o.default.Fragment,{key:t},o.default.createElement(i.SearchResultGroup,{className:c.default.group,title:n},a.map(((e,t)=>o.default.createElement(l.SearchResultItem,{key:t,type:e.type,level:e.level,href:e.href,title:e.title,content:e.content,linkProps:r?{onClick:t=>r(t,e)}:{}})))))}))))}},71044:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useSearch=void 0;const r=n(67294),a=n(36043);t.useSearch=()=>{const{createSearchInstance:e}=window,t=(0,a.useSearchContextPath)(),[n,o]=(0,r.useState)(!1),i=(0,r.useRef)(null);return(0,r.useEffect)((()=>{o(!1),(async()=>{i.current=await e({resultsLimit:50,preferredVersionPath:t[0],searchContextByPaths:t[1]}),await i.current.init(),o(!0)})()}),[t[0],t[1]]),{loaded:n,query:async e=>await i.current.query(e)}}},36043:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useSearchContextPath=void 0;const r=n(80143),a=n(28097),o=()=>window.getProxiedGeneratedData().searchContextByPaths;t.useSearchContextPath=()=>{const e=o(),t=(0,r.useActivePluginAndVersion)();if(!t)return["/",""];const{activePlugin:{pluginData:{path:n}},activeVersion:i}=t;return i?[n!==i.path?(0,a.ensureTrailingSlash)(i.path):"/",e]:["/",""]}},33760:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(70655),a=r.__importDefault(n(44763)),o=r.__importDefault(n(67294)),i=n(7020);t.default=()=>"undefined"==typeof window?o.default.createElement(o.default.Fragment,null):o.default.createElement(a.default,{fallback:()=>o.default.createElement(o.default.Fragment,null)},o.default.createElement(i.SearchBar,null))},36301:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SearchDocumentType=void 0,function(e){e.Title="title",e.Heading="heading",e.Paragraph="paragraph"}(t.SearchDocumentType||(t.SearchDocumentType={}))},81104:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.groupSearchResult=void 0;const r=n(70655),a=r.__importDefault(n(7739)),o=r.__importDefault(n(57557)),i=n(36301);t.groupSearchResult=e=>Object.entries((0,a.default)(e.map((e=>(e=>{const{type:t,document:n,page:r,highlighted:a,score:o}=e,{url:l,hash:s=""}=n,u=l+s;switch(t){case i.SearchDocumentType.Title:return{type:t,level:0,url:l,hash:s,href:u,score:o,title:a,content:"",category:n.breadcrumb?.[1]??n.title};case i.SearchDocumentType.Heading:{const e=r;return{type:t,level:1,url:l,hash:s,href:u,score:o,title:a,content:"",category:e?.breadcrumb?.[1]??e?.title??""}}case i.SearchDocumentType.Paragraph:{const e=r;return{type:t,level:2,url:l,hash:s,href:u,score:o,title:n.sectionTitle||n.title||"",content:a,category:e?.breadcrumb?.[1]??e?.title??""}}}})(e))),"category")).map((e=>{let[t,n]=e;return[t,n.map((e=>(0,o.default)(e,"category"))).sort(((e,t)=>e.score>t.score?-1:1))]})).sort(((e,t)=>(e[1][0]?.score??0)>(t[1][0]?.score??0)?-1:1)).map((e=>{let[t,n]=e;return[t,Object.entries((0,a.default)(n,"url")).map((e=>{let[t,n]=e,r=[...n].sort(((e,t)=>e.type===i.SearchDocumentType.Title||e.score>t.score?-1:1));const a=r[0]?.type===i.SearchDocumentType.Title;return r=a?r.filter((e=>!(e.type===i.SearchDocumentType.Heading&&""===e.hash))):r,r=r.map(((e,t)=>({...e,level:a?0===t?0:1:0}))),[t,r]})).sort(((e,t)=>(e[1][0]?.score??0)>(t[1][0]?.score??0)?-1:1)).flatMap((e=>{let[t,n]=e;return n}))]}))},16019:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(70655),a=r.__importDefault(n(67294)),o=r.__importDefault(n(86010)),i=r.__importDefault(n(72389)),l=n(82818),s=r.__importDefault(n(65787));t.default=function(e){const t=(0,i.default)(),{colorMode:n}=(0,l.useColorMode)(),{sources:r,className:u,alt:c,...d}=e,f=t?"dark"===n?["dark"]:["light"]:["light","dark"];return a.default.createElement(a.default.Fragment,null,f.map((e=>a.default.createElement("img",{key:e,src:r[e],alt:c,className:(0,o.default)(s.default.themedImage,s.default[`themedImage--${e}`],u),...d}))))}},98934:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,t:()=>o});var r=n(67294);const a=r.createContext(!1);function o(e){let{children:t}=e;const[n,o]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{o(!0)}),[]),r.createElement(a.Provider,{value:n},t)}},91091:(e,t,n)=>{"use strict";var r=n(67294),a=n(73935),o=n(73727),i=n(70405),l=n(10412);const s=[n(85711),n(32497),n(3310),n(18320),n(11057),n(93878),n(26724)];var u=n(723),c=n(16550),d=n(18790),f=n(85140),p=n(87462),h=n(35742),m=n(52263),g=n(44996),v=n(86668),b=n(10833),y=n(94711),w=n(19727),x=n(43320),k=n(90197);function _(){const{i18n:{defaultLocale:e,localeConfigs:t}}=(0,m.default)(),n=(0,y.l)();return r.createElement(h.Z,null,Object.entries(t).map((e=>{let[t,{htmlLang:a}]=e;return r.createElement("link",{key:t,rel:"alternate",href:n.createUrl({locale:t,fullyQualified:!0}),hrefLang:a})})),r.createElement("link",{rel:"alternate",href:n.createUrl({locale:e,fullyQualified:!0}),hrefLang:"x-default"}))}function E(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,m.default)(),a=function(){const{siteConfig:{url:e}}=(0,m.default)(),{pathname:t}=(0,c.TH)();return e+(0,g.default)(t)}(),o=t?`${n}${t}`:a;return r.createElement(h.Z,null,r.createElement("meta",{property:"og:url",content:o}),r.createElement("link",{rel:"canonical",href:o}))}function S(){const{i18n:{currentLocale:e}}=(0,m.default)(),{metadata:t,image:n}=(0,v.L)();return r.createElement(r.Fragment,null,r.createElement(h.Z,null,r.createElement("meta",{name:"twitter:card",content:"summary_large_image"}),r.createElement("body",{className:w.h})),n&&r.createElement(b.d,{image:n}),r.createElement(E,null),r.createElement(_,null),r.createElement(k.Z,{tag:x.HX,locale:e}),r.createElement(h.Z,null,t.map(((e,t)=>r.createElement("meta",(0,p.Z)({key:t},e))))))}const C=new Map;function T(e){if(C.has(e.pathname))return{...e,pathname:C.get(e.pathname)};if((0,d.f)(u.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return C.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return C.set(e.pathname,t),{...e,pathname:t}}var O=n(98934),D=n(58940);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 N=function(e){let{children:t,location:n,previousLocation:a}=e;return(0,r.useLayoutEffect)((()=>{a!==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:a}),P("onRouteDidUpdate",{previousLocation:a,location:n}))}),[a,n]),t};function I(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.f)(u.Z,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class A extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=l.default.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}),I(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 r.createElement(N,{previousLocation:this.previousLocation,location:t},r.createElement(c.AW,{location:t,render:()=>e}))}}const L=A,R="__docusaurus-base-url-issue-banner-container",j="__docusaurus-base-url-issue-banner",M="__docusaurus-base-url-issue-banner-suggestion-container",F="__DOCUSAURUS_INSERT_BASEURL_BANNER";function B(e){return`\nwindow['${F}'] = true;\n\ndocument.addEventListener('DOMContentLoaded', maybeInsertBanner);\n\nfunction maybeInsertBanner() {\n var shouldInsert = window['${F}'];\n shouldInsert && insertBanner();\n}\n\nfunction insertBanner() {\n var bannerContainer = document.getElementById('${R}');\n if (!bannerContainer) {\n return;\n }\n var bannerHtml = ${JSON.stringify(function(e){return`\n